From 0badaa018c15c2df225a17714582e753409eac1d Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 13 Oct 2016 19:34:59 +0200 Subject: [PATCH] aggiunto di nuovo bower e node, speriamo stavolta vada... --- StockManMVC/.bin/bower.cmd | 3 + .../bower_components/StockManMVC/.bower.json | 23 + .../bower_components/StockManMVC/bower.json | 19 + .../bower_components/cldr-data/.bower.json | 30 + .../.bin/bower_components/cldr-data/DCO.md | 27 + .../bower_components/cldr-data/LICENSE-MIT | 22 + .../.bin/bower_components/cldr-data/README.md | 139 + .../bower_components/cldr-data/bower.json | 21 + .../bower_components/cldr-data/index.json | 42 + .../.bin/bower_components/cldrjs/.bower.json | 25 + .../.bin/bower_components/cldrjs/.bowerrc | 6 + .../.bin/bower_components/cldrjs/.gitignore | 3 + .../.bin/bower_components/cldrjs/.jshintrc | 16 + .../.bin/bower_components/cldrjs/CHANGELOG.md | 13 + .../.bin/bower_components/cldrjs/DCO.md | 27 + .../.bin/bower_components/cldrjs/Gruntfile.js | 293 + .../.bin/bower_components/cldrjs/LICENSE-MIT | 22 + .../.bin/bower_components/cldrjs/README.md | 552 + .../.bin/bower_components/cldrjs/bower.json | 14 + .../.bin/bower_components/cldrjs/dist/cldr.js | 676 ++ .../cldrjs/dist/cldr/event.js | 585 + .../cldrjs/dist/cldr/supplemental.js | 101 + .../cldrjs/dist/cldr/unresolved.js | 164 + .../bower_components/cldrjs/dist/node_main.js | 22 + .../cldrjs/doc/api/core/attributes.md | 15 + .../cldrjs/doc/api/core/constructor.md | 9 + .../cldrjs/doc/api/core/get.md | 18 + .../cldrjs/doc/api/core/load.md | 23 + .../cldrjs/doc/api/core/main.md | 12 + .../cldrjs/doc/api/event/event_get.md | 10 + .../cldrjs/doc/api/event/global_off.md | 10 + .../cldrjs/doc/api/event/global_on.md | 32 + .../cldrjs/doc/api/event/global_once.md | 28 + .../cldrjs/doc/api/event/off.md | 10 + .../cldrjs/doc/api/event/on.md | 26 + .../cldrjs/doc/api/event/once.md | 27 + .../cldrjs/doc/api/supplemental.md | 12 + .../doc/api/supplemental/time_data_allowed.md | 8 + .../api/supplemental/time_data_preferred.md | 8 + .../api/supplemental/week_data_first_day.md | 8 + .../api/supplemental/week_data_min_days.md | 8 + .../cldrjs/doc/api/unresolved/get.md | 12 + .../cldrjs/doc/asset/jquery.png | Bin 0 -> 7137 bytes .../cldrjs/doc/bundle_lookup_matcher.md | 134 + .../.bin/bower_components/cldrjs/package.json | 64 + .../cldrjs/src/.dist_jshintrc | 17 + .../bower_components/cldrjs/src/.jshintrc | 17 + .../cldrjs/src/build/intro.min.js | 4 + .../cldrjs/src/build/intro_core.js | 28 + .../cldrjs/src/build/intro_event.js | 34 + .../cldrjs/src/build/intro_supplemental.js | 32 + .../cldrjs/src/build/intro_unresolved.js | 37 + .../cldrjs/src/build/node_main.js | 22 + .../cldrjs/src/build/outro.js | 1 + .../cldrjs/src/bundle/lookup.js | 40 + .../cldrjs/src/bundle/parent_lookup.js | 29 + .../cldrjs/src/common/create_error.js | 21 + .../cldrjs/src/common/validate.js | 11 + .../cldrjs/src/common/validate/presence.js | 11 + .../cldrjs/src/common/validate/type.js | 13 + .../src/common/validate/type/function.js | 9 + .../cldrjs/src/common/validate/type/path.js | 10 + .../src/common/validate/type/plain_object.js | 10 + .../cldrjs/src/common/validate/type/string.js | 9 + .../.bin/bower_components/cldrjs/src/core.js | 151 + .../cldrjs/src/core/likely_subtags.js | 97 + .../bower_components/cldrjs/src/core/load.js | 38 + .../cldrjs/src/core/remove_likely_subtags.js | 49 + .../cldrjs/src/core/set_available_bundles.js | 28 + .../cldrjs/src/core/subtags.js | 52 + .../.bin/bower_components/cldrjs/src/event.js | 83 + .../cldrjs/src/item/get_resolved.js | 13 + .../cldrjs/src/item/lookup.js | 50 + .../cldrjs/src/path/normalize.js | 27 + .../cldrjs/src/resource/get.js | 18 + .../cldrjs/src/resource/set.js | 18 + .../cldrjs/src/supplemental.js | 20 + .../cldrjs/src/supplemental/main.js | 51 + .../bower_components/cldrjs/src/unresolved.js | 42 + .../cldrjs/src/util/always_array.js | 9 + .../cldrjs/src/util/array/for_each.js | 13 + .../cldrjs/src/util/array/is_array.js | 7 + .../cldrjs/src/util/array/some.js | 16 + .../cldrjs/src/util/is_plain_object.js | 10 + .../cldrjs/src/util/json/merge.js | 38 + .../cldrjs/src/util/object/keys.js | 18 + .../bower_components/cldrjs/test/.jshintrc | 17 + .../cldrjs/test/functional.html | 20 + .../cldrjs/test/functional.js | 17 + .../cldrjs/test/functional/core.js | 109 + .../cldrjs/test/functional/event.js | 219 + .../bower_components/cldrjs/test/unit.html | 20 + .../.bin/bower_components/cldrjs/test/unit.js | 34 + .../cldrjs/test/unit/bundle/lookup.js | 59 + .../cldrjs/test/unit/bundle/parent_lookup.js | 27 + .../bower_components/cldrjs/test/unit/core.js | 83 + .../cldrjs/test/unit/core/likely_subtags.js | 53 + .../cldrjs/test/unit/core/load.js | 31 + .../test/unit/core/remove_likely_subtags.js | 40 + .../test/unit/core/set_available_bundles.js | 24 + .../cldrjs/test/unit/core/subtags.js | 55 + .../cldrjs/test/unit/item/lookup.js | 50 + .../cldrjs/test/unit/path/normalize.js | 44 + .../cldrjs/test/unit/resource/get.js | 23 + .../cldrjs/test/unit/resource/set.js | 24 + .../cldrjs/test/unit/supplemental.js | 68 + .../cldrjs/test/unit/util/json/merge.js | 24 + .../cldrjs/test/unit_unresolved.html | 20 + .../cldrjs/test/unit_unresolved.js | 19 + .../.bin/bower_components/cldrjs/test/util.js | 67 + .../bower_components/globalize/.bower.json | 34 + .../bower_components/globalize/AUTHORS.txt | 53 + .../bower_components/globalize/Gruntfile.js | 663 ++ .../bower_components/globalize/LICENSE.txt | 43 + .../.bin/bower_components/globalize/README.md | 867 ++ .../bower_components/globalize/bower.json | 23 + .../globalize/browserstack.json | 17 + .../globalize/chore/release.sh | 106 + .../globalize/dist/globalize-runtime.js | 236 + .../dist/globalize-runtime/currency.js | 119 + .../globalize/dist/globalize-runtime/date.js | 1300 +++ .../dist/globalize-runtime/message.js | 116 + .../dist/globalize-runtime/number.js | 682 ++ .../dist/globalize-runtime/plural.js | 86 + .../dist/globalize-runtime/relative-time.js | 116 + .../globalize/dist/globalize-runtime/unit.js | 127 + .../globalize/dist/globalize.js | 421 + .../globalize/dist/globalize/currency.js | 439 + .../globalize/dist/globalize/date.js | 1923 ++++ .../globalize/dist/globalize/message.js | 2076 ++++ .../globalize/dist/globalize/number.js | 1311 +++ .../globalize/dist/globalize/plural.js | 373 + .../globalize/dist/globalize/relative-time.js | 201 + .../globalize/dist/globalize/unit.js | 300 + .../globalize/dist/node-main.js | 27 + .../globalize/doc/api/core/constructor.md | 30 + .../globalize/doc/api/core/load.md | 99 + .../globalize/doc/api/core/locale.md | 54 + .../doc/api/currency/currency-formatter.md | 164 + .../globalize/doc/api/date/date-formatter.md | 199 + .../globalize/doc/api/date/date-parser.md | 68 + .../doc/api/message/load-messages.md | 116 + .../doc/api/message/message-formatter.md | 219 + .../doc/api/number/number-formatter.md | 185 + .../globalize/doc/api/number/number-parser.md | 86 + .../doc/api/plural/plural-generator.md | 95 + .../relative-time/relative-time-formatter.md | 66 + .../globalize/doc/api/unit/unit-formatter.md | 77 + .../bower_components/globalize/doc/cldr.md | 120 + .../doc/error/e-default-locale-not-defined.md | 10 + .../globalize/doc/error/e-invalid-cldr.md | 16 + .../globalize/doc/error/e-invalid-par-type.md | 12 + .../doc/error/e-invalid-par-value.md | 15 + .../globalize/doc/error/e-missing-cldr.md | 11 + .../doc/error/e-missing-parameter.md | 10 + .../doc/error/e-missing-plural-module.md | 10 + .../globalize/doc/error/e-par-missing-key.md | 11 + .../globalize/doc/error/e-par-out-of-range.md | 13 + .../globalize/doc/error/e-unsupported.md | 10 + .../globalize/doc/migrating-from-0.x.md | 64 + .../globalize/examples/amd-bower/README.md | 65 + .../globalize/examples/amd-bower/index.html | 43 + .../globalize/examples/amd-bower/main.js | 108 + .../examples/amd-bower/messages/en.json | 12 + .../globalize/examples/amd-bower/package.json | 11 + .../examples/app-npm-webpack/README.md | 74 + .../examples/app-npm-webpack/app/index.js | 57 + .../app-npm-webpack/index-template.html | 86 + .../examples/app-npm-webpack/messages/ar.json | 22 + .../examples/app-npm-webpack/messages/de.json | 18 + .../examples/app-npm-webpack/messages/en.json | 18 + .../examples/app-npm-webpack/messages/es.json | 18 + .../examples/app-npm-webpack/messages/pt.json | 18 + .../examples/app-npm-webpack/messages/ru.json | 20 + .../examples/app-npm-webpack/messages/zh.json | 17 + .../examples/app-npm-webpack/package.json | 14 + .../app-npm-webpack/webpack-config.js | 55 + .../examples/globalize-compiler/README.md | 45 + .../examples/globalize-compiler/app.js | 38 + .../examples/globalize-compiler/cldr.json | 147 + .../globalize-compiler/development.html | 93 + .../examples/globalize-compiler/messages.json | 12 + .../examples/globalize-compiler/package.json | 13 + .../globalize-compiler/production.html | 69 + .../globalize/examples/node-npm/README.md | 57 + .../globalize/examples/node-npm/main.js | 45 + .../examples/node-npm/messages/en.json | 12 + .../globalize/examples/node-npm/package.json | 8 + .../examples/plain-javascript/README.md | 81 + .../examples/plain-javascript/index.html | 270 + .../bower_components/globalize/package.json | 98 + .../globalize/src/build/intro-core-runtime.js | 32 + .../globalize/src/build/intro-core.js | 35 + .../src/build/intro-currency-runtime.js | 43 + .../globalize/src/build/intro-currency.js | 47 + .../globalize/src/build/intro-date-runtime.js | 46 + .../globalize/src/build/intro-date.js | 52 + .../src/build/intro-message-runtime.js | 37 + .../globalize/src/build/intro-message.js | 46 + .../src/build/intro-number-runtime.js | 42 + .../globalize/src/build/intro-number.js | 49 + .../src/build/intro-plural-runtime.js | 38 + .../globalize/src/build/intro-plural.js | 44 + .../src/build/intro-relative-time-runtime.js | 45 + .../src/build/intro-relative-time.js | 47 + .../globalize/src/build/intro-unit-runtime.js | 45 + .../globalize/src/build/intro-unit.js | 44 + .../globalize/src/build/intro.min.js | 4 + .../globalize/src/build/node-main.js | 27 + .../globalize/src/build/outro.js | 1 + .../globalize/src/common/create-error.js | 18 + .../create-error/invalid-parameter-value.js | 12 + .../create-error/plural-module-presence.js | 9 + .../create-error/unsupported-feature.js | 11 + .../globalize/src/common/format-message.js | 34 + .../globalize/src/common/runtime-bind.js | 29 + .../globalize/src/common/runtime-key.js | 12 + .../globalize/src/common/validate.js | 11 + .../globalize/src/common/validate/cldr.js | 19 + .../src/common/validate/default-locale.js | 10 + .../src/common/validate/message-bundle.js | 16 + .../src/common/validate/message-presence.js | 11 + .../src/common/validate/message-type.js | 18 + .../src/common/validate/parameter-presence.js | 10 + .../src/common/validate/parameter-range.js | 30 + .../src/common/validate/parameter-type.js | 18 + .../common/validate/parameter-type/array.js | 9 + .../validate/parameter-type/currency.js | 14 + .../common/validate/parameter-type/date.js | 9 + .../common/validate/parameter-type/locale.js | 15 + .../parameter-type/message-variables.js | 15 + .../common/validate/parameter-type/number.js | 14 + .../validate/parameter-type/plain-object.js | 15 + .../validate/parameter-type/plural-type.js | 14 + .../common/validate/parameter-type/string.js | 14 + .../globalize/src/core-runtime.js | 44 + .../bower_components/globalize/src/core.js | 110 + .../globalize/src/currency-runtime.js | 32 + .../globalize/src/currency.js | 146 + .../globalize/src/currency/code-properties.js | 26 + .../globalize/src/currency/formatter-fn.js | 32 + .../globalize/src/currency/name-format.js | 25 + .../globalize/src/currency/name-properties.js | 22 + .../src/currency/supplemental-override.js | 25 + .../src/currency/symbol-properties.js | 74 + .../globalize/src/currency/unit-patterns.js | 13 + .../globalize/src/date-runtime.js | 55 + .../bower_components/globalize/src/date.js | 158 + .../globalize/src/date/day-of-week.js | 20 + .../globalize/src/date/day-of-year.js | 15 + .../globalize/src/date/distance-in-days.js | 13 + .../globalize/src/date/expand-pattern.js | 103 + .../globalize/src/date/first-day-of-week.js | 12 + .../globalize/src/date/format-properties.js | 242 + .../globalize/src/date/format.js | 270 + .../globalize/src/date/formatter-fn.js | 17 + .../globalize/src/date/is-leap-year.js | 14 + .../globalize/src/date/last-day-of-month.js | 14 + .../globalize/src/date/milliseconds-in-day.js | 14 + .../globalize/src/date/parse-properties.js | 16 + .../globalize/src/date/parse.js | 287 + .../globalize/src/date/parser-fn.js | 20 + .../globalize/src/date/pattern-re.js | 5 + .../globalize/src/date/start-of.js | 36 + .../src/date/timezone-hour-format.js | 47 + .../src/date/tokenizer-properties.js | 155 + .../globalize/src/date/tokenizer.js | 411 + .../globalize/src/date/week-days.js | 5 + .../globalize/src/message-runtime.js | 26 + .../bower_components/globalize/src/message.js | 116 + .../globalize/src/message/formatter-fn.js | 15 + .../src/message/formatter-runtime-bind.js | 46 + .../globalize/src/number-runtime.js | 57 + .../bower_components/globalize/src/number.js | 186 + .../globalize/src/number/format-properties.js | 104 + .../globalize/src/number/format.js | 127 + .../src/number/format/grouping-separator.js | 38 + .../number/format/integer-fraction-digits.js | 60 + .../src/number/format/significant-digits.js | 53 + .../globalize/src/number/formatter-fn.js | 16 + .../globalize/src/number/number-re.js | 40 + .../src/number/numbering-system-digits-map.js | 30 + .../globalize/src/number/numbering-system.js | 32 + .../globalize/src/number/parse-properties.js | 61 + .../globalize/src/number/parse.js | 121 + .../globalize/src/number/parser-fn.js | 17 + .../src/number/pattern-properties.js | 133 + .../globalize/src/number/pattern-re.js | 49 + .../globalize/src/number/pattern.js | 24 + .../globalize/src/number/symbol.js | 21 + .../src/number/symbol/inverted-map.js | 29 + .../globalize/src/number/symbol/map.js | 29 + .../globalize/src/number/symbol/name.js | 13 + .../globalize/src/plural-runtime.js | 28 + .../bower_components/globalize/src/plural.js | 88 + .../globalize/src/plural/generator-fn.js | 15 + .../globalize/src/relative-time-runtime.js | 31 + .../globalize/src/relative-time.js | 79 + .../globalize/src/relative-time/format.js | 36 + .../src/relative-time/formatter-fn.js | 17 + .../globalize/src/relative-time/properties.js | 41 + .../globalize/src/unit-runtime.js | 25 + .../bower_components/globalize/src/unit.js | 74 + .../globalize/src/unit/categories.js | 11 + .../globalize/src/unit/format.js | 50 + .../globalize/src/unit/formatter-fn.js | 17 + .../globalize/src/unit/get.js | 97 + .../globalize/src/unit/properties.js | 28 + .../globalize/src/util/always-array.js | 7 + .../globalize/src/util/always-cldr.js | 9 + .../globalize/src/util/date/set-date.js | 16 + .../globalize/src/util/date/set-month.js | 20 + .../globalize/src/util/function-name.js | 16 + .../globalize/src/util/is-plain-object.js | 10 + .../globalize/src/util/number/round.js | 88 + .../globalize/src/util/number/to-precision.js | 27 + .../globalize/src/util/number/truncate.js | 10 + .../globalize/src/util/object/extend.js | 17 + .../globalize/src/util/object/filter.js | 16 + .../globalize/src/util/object/omit.js | 25 + .../globalize/src/util/object/values.js | 14 + .../globalize/src/util/out-of-range.js | 7 + .../globalize/src/util/regexp/escape.js | 8 + .../globalize/src/util/regexp/n.js | 13 + .../globalize/src/util/regexp/not-s.js | 18 + .../globalize/src/util/string/hash.js | 12 + .../globalize/src/util/string/pad.js | 14 + .../globalize/src/util/to-string.js | 14 + StockManMVC/.bin/git.cmd | 3 + StockManMVC/.bin/node.cmd | 3 + StockManMVC/App_Start/BundleConfig.cs | 5 +- StockManMVC/StockManMVC.csproj | 112 + StockManMVC/Test.html | 74 + StockManMVC/Web.config | 14 +- StockManMVC/bin/StockManMVC.dll | Bin 131584 -> 131584 bytes StockManMVC/bin/StockManMVC.dll.config | 14 +- StockManMVC/bower.json | 2 +- .../bower_components/bower.json/.bower.json | 15 + .../cldr-data/segments/de/suppressions.json | 740 ++ .../cldr-data/segments/el/suppressions.json | 20 + .../cldr-data/segments/es/suppressions.json | 509 + .../cldr-data/segments/fi/suppressions.json | 30 + .../cldr-data/segments/fr/suppressions.json | 263 + .../cldr-data/segments/ja/suppressions.json | 43 + .../cldr-data/segments/pt/suppressions.json | 533 + .../cldr-data/segments/root/suppressions.json | 562 + .../cldr-data/segments/ru/suppressions.json | 71 + .../segments/zh-Hant/suppressions.json | 23 + .../cldr-data/segments/zh/suppressions.json | 23 + .../bower_components/cldrjs/dist/cldr.js | 676 ++ .../cldrjs/dist/cldr/event.js | 585 + .../cldrjs/dist/cldr/supplemental.js | 101 + .../cldrjs/dist/cldr/unresolved.js | 164 + .../bower_components/cldrjs/dist/node_main.js | 22 + .../cldrjs/doc/api/core/constructor.md | 2 +- .../cldrjs/doc/api/core/get.md | 2 +- .../cldrjs/doc/api/core/main.md | 2 +- .../cldrjs/doc/api/event/global_off.md | 2 +- .../cldrjs/doc/api/event/global_on.md | 2 +- .../cldrjs/doc/api/event/global_once.md | 2 +- .../cldrjs/doc/api/event/off.md | 2 +- .../cldrjs/doc/api/event/on.md | 2 +- .../cldrjs/doc/api/event/once.md | 2 +- .../cldrjs/doc/api/supplemental.md | 2 +- .../cldrjs/doc/api/unresolved/get.md | 2 +- .../bower_components/cldrjs/package.json | 2 +- .../bower_components/cldrjs/src/core.js | 16 +- .../cldrjs/src/core/likely_subtags.js | 8 +- .../bower_components/cldrjs/test/unit/core.js | 14 - .../bower_components/globalize/README.md | 4 +- .../globalize/dist/globalize-runtime.js | 236 + .../dist/globalize-runtime/currency.js | 119 + .../globalize/dist/globalize-runtime/date.js | 1300 +++ .../dist/globalize-runtime/message.js | 116 + .../dist/globalize-runtime/number.js | 682 ++ .../dist/globalize-runtime/plural.js | 86 + .../dist/globalize-runtime/relative-time.js | 116 + .../globalize/dist/globalize-runtime/unit.js | 127 + .../globalize/dist/globalize.js | 421 + .../globalize/dist/globalize/currency.js | 439 + .../globalize/dist/globalize/date.js | 1923 ++++ .../globalize/dist/globalize/message.js | 2076 ++++ .../globalize/dist/globalize/number.js | 1311 +++ .../globalize/dist/globalize/plural.js | 373 + .../globalize/dist/globalize/relative-time.js | 201 + .../globalize/dist/globalize/unit.js | 300 + .../globalize/dist/node-main.js | 27 + .../globalize/doc/api/date/date-formatter.md | 3 +- .../examples/app-npm-webpack/package.json | 1 - StockManMVC/node_modules/async/CHANGELOG.md | 8 + StockManMVC/node_modules/async/apply.js | 8 +- StockManMVC/node_modules/async/applyEach.js | 16 +- StockManMVC/node_modules/async/auto.js | 6 +- StockManMVC/node_modules/async/compose.js | 6 +- StockManMVC/node_modules/async/constant.js | 6 +- StockManMVC/node_modules/async/dist/async.js | 1427 +-- .../node_modules/async/dist/async.min.js | 2 +- StockManMVC/node_modules/async/doDuring.js | 6 +- StockManMVC/node_modules/async/doWhilst.js | 10 +- StockManMVC/node_modules/async/eachLimit.js | 2 +- StockManMVC/node_modules/async/eachOf.js | 2 +- .../node_modules/async/internal/applyEach.js | 6 +- .../async/internal/consoleFunc.js | 8 +- .../async/internal/initialParams.js | 6 +- .../node_modules/async/internal/parallel.js | 6 +- .../node_modules/async/internal/queue.js | 32 +- .../async/internal/setImmediate.js | 6 +- StockManMVC/node_modules/async/memoize.js | 6 +- StockManMVC/node_modules/async/package.json | 22 +- .../node_modules/async/priorityQueue.js | 10 +- StockManMVC/node_modules/async/race.js | 12 +- StockManMVC/node_modules/async/reflect.js | 6 +- StockManMVC/node_modules/async/retry.js | 20 +- StockManMVC/node_modules/async/seq.js | 10 +- StockManMVC/node_modules/async/timeout.js | 27 +- StockManMVC/node_modules/async/waterfall.js | 6 +- StockManMVC/node_modules/async/whilst.js | 14 +- StockManMVC/node_modules/aws4/README.md | 9 + StockManMVC/node_modules/aws4/aws4.js | 11 +- StockManMVC/node_modules/aws4/package.json | 22 +- .../node_modules/config-chain/package.json | 22 +- .../node_modules/config-chain/readme.markdown | 9 + StockManMVC/node_modules/lodash/README.md | 6 +- .../node_modules/lodash/_arrayLikeKeys.js | 30 +- .../node_modules/lodash/_arraySampleSize.js | 5 +- .../node_modules/lodash/_assignMergeValue.js | 2 +- .../node_modules/lodash/_baseAssignValue.js | 3 +- StockManMVC/node_modules/lodash/_baseClone.js | 4 +- .../node_modules/lodash/_baseCreate.js | 2 +- .../node_modules/lodash/_baseIsArguments.js | 27 + .../node_modules/lodash/_baseIsEqualDeep.js | 8 + StockManMVC/node_modules/lodash/_baseMerge.js | 17 +- .../node_modules/lodash/_baseMergeDeep.js | 29 +- .../node_modules/lodash/_baseSampleSize.js | 6 +- .../node_modules/lodash/_baseSetToString.js | 8 +- .../node_modules/lodash/_baseToString.js | 6 + .../node_modules/lodash/_defineProperty.js | 11 + .../lodash/_nativeDefineProperty.js | 6 - .../node_modules/lodash/_shuffleSelf.js | 5 +- StockManMVC/node_modules/lodash/core.js | 60 +- StockManMVC/node_modules/lodash/core.min.js | 48 +- .../node_modules/lodash/fp/_convertBrowser.js | 2 +- .../node_modules/lodash/isArguments.js | 22 +- StockManMVC/node_modules/lodash/isEmpty.js | 11 +- StockManMVC/node_modules/lodash/isFunction.js | 7 +- StockManMVC/node_modules/lodash/lodash.js | 163 +- StockManMVC/node_modules/lodash/lodash.min.js | 224 +- StockManMVC/node_modules/lodash/package.json | 28 +- StockManMVC/node_modules/lodash/toString.js | 4 +- StockManMVC/node_modules/lodash/transform.js | 24 +- StockManMVC/packages.config | 3 + VersGen/VersGen.cs | 4 +- VersGen/VersGen.tt | 4 +- VersGen/obj/Release/TempPE/VersGen.cs.dll | Bin 2048 -> 2048 bytes packages/Bower.1.3.11/Bower.1.3.11.nupkg | Bin 0 -> 3290639 bytes packages/Bower.1.3.11/content/.bin/bower.cmd | 3 + .../node_modules/bower/Gruntfile.js | 60 + .../Bower.1.3.11/node_modules/bower/bin/bower | 145 + .../bower/lib/commands/cache/clean.js | 205 + .../bower/lib/commands/cache/list.js | 44 + .../bower/lib/commands/completion.js | 21 + .../node_modules/bower/lib/commands/help.js | 42 + .../node_modules/bower/lib/commands/home.js | 62 + .../node_modules/bower/lib/commands/index.js | 71 + .../node_modules/bower/lib/commands/info.js | 72 + .../node_modules/bower/lib/commands/init.js | 332 + .../bower/lib/commands/install.js | 50 + .../node_modules/bower/lib/commands/link.js | 87 + .../node_modules/bower/lib/commands/list.js | 170 + .../node_modules/bower/lib/commands/lookup.js | 42 + .../node_modules/bower/lib/commands/prune.js | 59 + .../bower/lib/commands/register.js | 123 + .../node_modules/bower/lib/commands/search.js | 39 + .../bower/lib/commands/uninstall.js | 124 + .../node_modules/bower/lib/commands/update.js | 39 + .../bower/lib/commands/version.js | 131 + .../node_modules/bower/lib/config.js | 55 + .../node_modules/bower/lib/core/Manager.js | 1011 ++ .../bower/lib/core/PackageRepository.js | 219 + .../node_modules/bower/lib/core/Project.js | 829 ++ .../bower/lib/core/ResolveCache.js | 406 + .../bower/lib/core/resolverFactory.js | 174 + .../bower/lib/core/resolvers/FsResolver.js | 143 + .../bower/lib/core/resolvers/GitFsResolver.js | 77 + .../lib/core/resolvers/GitHubResolver.js | 150 + .../lib/core/resolvers/GitRemoteResolver.js | 201 + .../bower/lib/core/resolvers/GitResolver.js | 387 + .../bower/lib/core/resolvers/Resolver.js | 256 + .../bower/lib/core/resolvers/SvnResolver.js | 403 + .../bower/lib/core/resolvers/UrlResolver.js | 284 + .../bower/lib/core/resolvers/index.js | 8 + .../node_modules/bower/lib/core/scripts.js | 96 + .../node_modules/bower/lib/index.js | 43 + .../bower/lib/renderers/JsonRenderer.js | 135 + .../bower/lib/renderers/StandardRenderer.js | 495 + .../node_modules/bower/lib/renderers/index.js | 4 + .../node_modules/bower/lib/util/analytics.js | 88 + .../node_modules/bower/lib/util/cli.js | 49 + .../node_modules/bower/lib/util/cmd.js | 120 + .../node_modules/bower/lib/util/copy.js | 114 + .../bower/lib/util/createError.js | 14 + .../node_modules/bower/lib/util/createLink.js | 50 + .../node_modules/bower/lib/util/download.js | 109 + .../node_modules/bower/lib/util/extract.js | 228 + .../node_modules/bower/lib/util/md5.js | 7 + .../node_modules/bower/lib/util/readJson.js | 43 + .../bower/lib/util/removeIgnores.js | 66 + .../node_modules/bower/lib/util/rootCheck.js | 32 + .../node_modules/bower/lib/util/semver.js | 74 + .../node_modules/bower/lib/util/template.js | 44 + .../node_modules/bower/lib/util/validLink.js | 24 + .../bower/node_modules/abbrev/abbrev.js | 62 + .../bower/node_modules/abbrev/package.json | 46 + .../bower/node_modules/archy/index.js | 35 + .../bower/node_modules/archy/package.json | 69 + .../node_modules/bower/node_modules/bl/bl.js | 216 + .../bl/node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 982 ++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 386 + .../node_modules/readable-stream/package.json | 71 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 6 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../bower/node_modules/bl/package.json | 61 + .../bower/node_modules/boom/index.js | 1 + .../bower/node_modules/boom/lib/index.js | 207 + .../bower/node_modules/boom/package.json | 64 + .../node_modules/bower-config/lib/Config.js | 76 + .../bower-config/lib/util/defaults.js | 44 + .../bower-config/lib/util/expand.js | 55 + .../bower-config/lib/util/paths.js | 44 + .../node_modules/bower-config/lib/util/rc.js | 116 + .../node_modules/graceful-fs/graceful-fs.js | 160 + .../node_modules/graceful-fs/package.json | 65 + .../node_modules/graceful-fs/polyfills.js | 228 + .../bower-config/node_modules/mout/array.js | 50 + .../node_modules/mout/array/append.js | 21 + .../node_modules/mout/array/collect.js | 27 + .../node_modules/mout/array/combine.js | 22 + .../node_modules/mout/array/compact.js | 13 + .../node_modules/mout/array/contains.js | 10 + .../node_modules/mout/array/difference.js | 23 + .../node_modules/mout/array/every.js | 27 + .../node_modules/mout/array/filter.js | 26 + .../node_modules/mout/array/find.js | 13 + .../node_modules/mout/array/findIndex.js | 23 + .../node_modules/mout/array/findLast.js | 13 + .../node_modules/mout/array/findLastIndex.js | 24 + .../node_modules/mout/array/flatten.js | 43 + .../node_modules/mout/array/forEach.js | 23 + .../node_modules/mout/array/indexOf.js | 28 + .../node_modules/mout/array/insert.js | 15 + .../node_modules/mout/array/intersection.js | 24 + .../node_modules/mout/array/invoke.js | 23 + .../node_modules/mout/array/join.js | 17 + .../node_modules/mout/array/lastIndexOf.js | 28 + .../node_modules/mout/array/map.js | 22 + .../node_modules/mout/array/max.js | 34 + .../node_modules/mout/array/min.js | 34 + .../node_modules/mout/array/pick.js | 31 + .../node_modules/mout/array/pluck.js | 12 + .../node_modules/mout/array/range.js | 27 + .../node_modules/mout/array/reduce.js | 33 + .../node_modules/mout/array/reduceRight.js | 34 + .../node_modules/mout/array/reject.js | 25 + .../node_modules/mout/array/remove.js | 13 + .../node_modules/mout/array/removeAll.js | 15 + .../node_modules/mout/array/shuffle.js | 28 + .../node_modules/mout/array/slice.js | 35 + .../node_modules/mout/array/some.js | 27 + .../node_modules/mout/array/sort.js | 55 + .../node_modules/mout/array/sortBy.js | 19 + .../node_modules/mout/array/split.js | 35 + .../node_modules/mout/array/toLookup.js | 28 + .../node_modules/mout/array/union.js | 19 + .../node_modules/mout/array/unique.js | 25 + .../node_modules/mout/array/xor.js | 26 + .../node_modules/mout/array/zip.js | 28 + .../node_modules/mout/collection.js | 22 + .../node_modules/mout/collection/contains.js | 9 + .../node_modules/mout/collection/every.js | 9 + .../node_modules/mout/collection/filter.js | 23 + .../node_modules/mout/collection/find.js | 10 + .../node_modules/mout/collection/forEach.js | 9 + .../node_modules/mout/collection/make_.js | 19 + .../node_modules/mout/collection/map.js | 23 + .../node_modules/mout/collection/max.js | 10 + .../node_modules/mout/collection/min.js | 10 + .../node_modules/mout/collection/pluck.js | 14 + .../node_modules/mout/collection/reduce.js | 9 + .../node_modules/mout/collection/reject.js | 16 + .../node_modules/mout/collection/size.js | 19 + .../node_modules/mout/collection/some.js | 9 + .../bower-config/node_modules/mout/date.js | 22 + .../node_modules/mout/date/dayOfTheYear.js | 13 + .../node_modules/mout/date/diff.js | 130 + .../node_modules/mout/date/i18n/de-DE.js | 61 + .../node_modules/mout/date/i18n/en-US.js | 61 + .../node_modules/mout/date/i18n/pt-BR.js | 61 + .../node_modules/mout/date/i18n_.js | 14 + .../node_modules/mout/date/isLeapYear.js | 15 + .../node_modules/mout/date/isSame.js | 16 + .../node_modules/mout/date/parseIso.js | 146 + .../node_modules/mout/date/quarter.js | 16 + .../node_modules/mout/date/startOf.js | 54 + .../node_modules/mout/date/strftime.js | 121 + .../node_modules/mout/date/timezoneAbbr.js | 17 + .../node_modules/mout/date/timezoneOffset.js | 16 + .../mout/date/totalDaysInMonth.js | 25 + .../node_modules/mout/date/totalDaysInYear.js | 13 + .../node_modules/mout/date/weekOfTheYear.js | 16 + .../node_modules/mout/function.js | 22 + .../node_modules/mout/function/awaitDelay.js | 22 + .../node_modules/mout/function/bind.js | 19 + .../node_modules/mout/function/compose.js | 23 + .../node_modules/mout/function/constant.js | 14 + .../node_modules/mout/function/debounce.js | 32 + .../node_modules/mout/function/func.js | 14 + .../node_modules/mout/function/identity.js | 12 + .../mout/function/makeIterator_.js | 34 + .../node_modules/mout/function/partial.js | 15 + .../node_modules/mout/function/prop.js | 14 + .../node_modules/mout/function/series.js | 22 + .../node_modules/mout/function/throttle.js | 33 + .../node_modules/mout/function/timeout.js | 17 + .../node_modules/mout/function/times.js | 17 + .../bower-config/node_modules/mout/index.js | 25 + .../bower-config/node_modules/mout/lang.js | 37 + .../node_modules/mout/lang/clone.js | 49 + .../node_modules/mout/lang/createObject.js | 18 + .../node_modules/mout/lang/ctorApply.js | 17 + .../node_modules/mout/lang/deepClone.js | 48 + .../node_modules/mout/lang/defaults.js | 17 + .../mout/lang/inheritPrototype.js | 18 + .../bower-config/node_modules/mout/lang/is.js | 23 + .../node_modules/mout/lang/isArguments.js | 15 + .../node_modules/mout/lang/isArray.js | 8 + .../node_modules/mout/lang/isBoolean.js | 8 + .../node_modules/mout/lang/isDate.js | 8 + .../node_modules/mout/lang/isEmpty.js | 24 + .../node_modules/mout/lang/isFinite.js | 21 + .../node_modules/mout/lang/isFunction.js | 8 + .../node_modules/mout/lang/isInteger.js | 12 + .../node_modules/mout/lang/isKind.js | 9 + .../node_modules/mout/lang/isNaN.js | 16 + .../node_modules/mout/lang/isNull.js | 9 + .../node_modules/mout/lang/isNumber.js | 8 + .../node_modules/mout/lang/isObject.js | 8 + .../node_modules/mout/lang/isPlainObject.js | 13 + .../node_modules/mout/lang/isRegExp.js | 8 + .../node_modules/mout/lang/isString.js | 8 + .../node_modules/mout/lang/isUndefined.js | 10 + .../node_modules/mout/lang/isnt.js | 12 + .../node_modules/mout/lang/kindOf.js | 20 + .../node_modules/mout/lang/toArray.js | 31 + .../node_modules/mout/lang/toNumber.js | 20 + .../node_modules/mout/lang/toString.js | 13 + .../bower-config/node_modules/mout/math.js | 19 + .../node_modules/mout/math/ceil.js | 11 + .../node_modules/mout/math/clamp.js | 9 + .../node_modules/mout/math/countSteps.js | 16 + .../node_modules/mout/math/floor.js | 10 + .../node_modules/mout/math/inRange.js | 11 + .../node_modules/mout/math/isNear.js | 9 + .../node_modules/mout/math/lerp.js | 11 + .../node_modules/mout/math/loop.js | 10 + .../node_modules/mout/math/map.js | 11 + .../node_modules/mout/math/norm.js | 9 + .../node_modules/mout/math/round.js | 12 + .../bower-config/node_modules/mout/number.js | 24 + .../node_modules/mout/number/MAX_INT.js | 6 + .../node_modules/mout/number/MAX_UINT.js | 6 + .../node_modules/mout/number/MIN_INT.js | 6 + .../node_modules/mout/number/abbreviate.js | 35 + .../mout/number/currencyFormat.js | 27 + .../mout/number/enforcePrecision.js | 12 + .../node_modules/mout/number/isNaN.js | 14 + .../node_modules/mout/number/nth.js | 25 + .../node_modules/mout/number/ordinal.js | 14 + .../node_modules/mout/number/pad.js | 14 + .../node_modules/mout/number/rol.js | 10 + .../node_modules/mout/number/ror.js | 10 + .../node_modules/mout/number/sign.js | 15 + .../node_modules/mout/number/toInt.js | 17 + .../node_modules/mout/number/toUInt.js | 15 + .../node_modules/mout/number/toUInt31.js | 15 + .../bower-config/node_modules/mout/object.js | 42 + .../node_modules/mout/object/bindAll.js | 19 + .../node_modules/mout/object/contains.js | 13 + .../node_modules/mout/object/deepEquals.js | 27 + .../node_modules/mout/object/deepFillIn.js | 33 + .../node_modules/mout/object/deepMatches.js | 55 + .../node_modules/mout/object/deepMixIn.js | 34 + .../node_modules/mout/object/equals.js | 36 + .../node_modules/mout/object/every.js | 23 + .../node_modules/mout/object/fillIn.js | 21 + .../node_modules/mout/object/filter.js | 20 + .../node_modules/mout/object/find.js | 21 + .../node_modules/mout/object/forIn.js | 76 + .../node_modules/mout/object/forOwn.js | 19 + .../node_modules/mout/object/functions.js | 18 + .../node_modules/mout/object/get.js | 20 + .../node_modules/mout/object/has.js | 15 + .../node_modules/mout/object/hasOwn.js | 12 + .../node_modules/mout/object/keys.js | 16 + .../node_modules/mout/object/map.js | 18 + .../node_modules/mout/object/matches.js | 20 + .../node_modules/mout/object/max.js | 12 + .../node_modules/mout/object/merge.js | 40 + .../node_modules/mout/object/min.js | 12 + .../node_modules/mout/object/mixIn.js | 28 + .../node_modules/mout/object/namespace.js | 19 + .../node_modules/mout/object/pick.js | 18 + .../node_modules/mout/object/pluck.js | 13 + .../node_modules/mout/object/reduce.js | 29 + .../node_modules/mout/object/reject.js | 16 + .../node_modules/mout/object/set.js | 17 + .../node_modules/mout/object/size.js | 16 + .../node_modules/mout/object/some.js | 21 + .../node_modules/mout/object/unset.js | 23 + .../node_modules/mout/object/values.js | 16 + .../node_modules/mout/package.json | 157 + .../node_modules/mout/queryString.js | 15 + .../node_modules/mout/queryString/contains.js | 12 + .../node_modules/mout/queryString/decode.js | 38 + .../node_modules/mout/queryString/encode.js | 27 + .../node_modules/mout/queryString/getParam.js | 15 + .../node_modules/mout/queryString/getQuery.js | 13 + .../node_modules/mout/queryString/parse.js | 13 + .../node_modules/mout/queryString/setParam.js | 28 + .../bower-config/node_modules/mout/random.js | 17 + .../node_modules/mout/random/choice.js | 15 + .../node_modules/mout/random/guid.js | 24 + .../node_modules/mout/random/rand.js | 15 + .../node_modules/mout/random/randBit.js | 11 + .../node_modules/mout/random/randBool.js | 12 + .../node_modules/mout/random/randHex.js | 19 + .../node_modules/mout/random/randInt.js | 18 + .../node_modules/mout/random/randSign.js | 11 + .../node_modules/mout/random/random.js | 18 + .../bower-config/node_modules/mout/string.js | 46 + .../node_modules/mout/string/WHITE_SPACES.js | 12 + .../node_modules/mout/string/camelCase.js | 20 + .../node_modules/mout/string/contains.js | 14 + .../node_modules/mout/string/crop.js | 12 + .../node_modules/mout/string/endsWith.js | 13 + .../node_modules/mout/string/escapeHtml.js | 18 + .../node_modules/mout/string/escapeRegExp.js | 12 + .../node_modules/mout/string/escapeUnicode.js | 21 + .../node_modules/mout/string/hyphenate.js | 14 + .../node_modules/mout/string/insert.js | 21 + .../node_modules/mout/string/interpolate.js | 19 + .../node_modules/mout/string/lowerCase.js | 11 + .../node_modules/mout/string/lpad.js | 17 + .../node_modules/mout/string/ltrim.js | 34 + .../node_modules/mout/string/makePath.js | 15 + .../mout/string/normalizeLineBreaks.js | 18 + .../node_modules/mout/string/pascalCase.js | 13 + .../node_modules/mout/string/properCase.js | 13 + .../mout/string/removeNonASCII.js | 14 + .../node_modules/mout/string/removeNonWord.js | 14 + .../node_modules/mout/string/repeat.js | 26 + .../node_modules/mout/string/replace.js | 33 + .../mout/string/replaceAccents.js | 36 + .../node_modules/mout/string/rpad.js | 15 + .../node_modules/mout/string/rtrim.js | 33 + .../node_modules/mout/string/sentenceCase.js | 15 + .../node_modules/mout/string/slugify.js | 24 + .../node_modules/mout/string/startsWith.js | 13 + .../node_modules/mout/string/stripHtmlTags.js | 11 + .../node_modules/mout/string/trim.js | 15 + .../node_modules/mout/string/truncate.js | 21 + .../node_modules/mout/string/typecast.js | 29 + .../node_modules/mout/string/unCamelCase.js | 23 + .../node_modules/mout/string/underscore.js | 13 + .../node_modules/mout/string/unescapeHtml.js | 18 + .../mout/string/unescapeUnicode.js | 16 + .../node_modules/mout/string/unhyphenate.js | 10 + .../node_modules/mout/string/upperCase.js | 10 + .../bower-config/node_modules/mout/time.js | 12 + .../node_modules/mout/time/convert.js | 41 + .../node_modules/mout/time/now.js | 18 + .../node_modules/mout/time/parseMs.js | 17 + .../node_modules/mout/time/toTimeString.js | 24 + .../node_modules/optimist/index.js | 343 + .../optimist/node_modules/minimist/index.js | 187 + .../node_modules/minimist/package.json | 67 + .../node_modules/optimist/package.json | 64 + .../bower-config/node_modules/osenv/osenv.js | 80 + .../node_modules/osenv/package.json | 43 + .../node_modules/bower-config/package.json | 43 + .../bower-endpoint-parser/index.js | 128 + .../bower-endpoint-parser/package.json | 38 + .../node_modules/bower-json/Gruntfile.js | 53 + .../bower/node_modules/bower-json/lib/json.js | 147 + .../bower-json/lib/util/createError.js | 8 + .../bower-json/lib/util/isComponent.js | 41 + .../node_modules/deep-extend/index.js | 90 + .../node_modules/deep-extend/package.json | 43 + .../node_modules/graceful-fs/graceful-fs.js | 160 + .../node_modules/graceful-fs/package.json | 65 + .../node_modules/graceful-fs/polyfills.js | 228 + .../node_modules/intersect/component.json | 16 + .../node_modules/intersect/index.js | 16 + .../node_modules/intersect/package.json | 65 + .../node_modules/bower-json/package.json | 63 + .../node_modules/bower-logger/lib/Logger.js | 150 + .../node_modules/bower-logger/package.json | 62 + .../bower-registry-client/Client.js | 67 + .../bower-registry-client/Gruntfile.js | 53 + .../bower-registry-client/lib/index.js | 7 + .../bower-registry-client/lib/list.js | 185 + .../bower-registry-client/lib/lookup.js | 203 + .../bower-registry-client/lib/register.js | 59 + .../bower-registry-client/lib/search.js | 201 + .../bower-registry-client/lib/unregister.js | 48 + .../bower-registry-client/lib/util/Cache.js | 195 + .../lib/util/createError.js | 8 + .../bower-registry-client/lib/util/md5.js | 7 + .../node_modules/async/component.json | 11 + .../node_modules/async/lib/async.js | 958 ++ .../node_modules/async/package.json | 60 + .../node_modules/graceful-fs/graceful-fs.js | 160 + .../node_modules/graceful-fs/package.json | 65 + .../node_modules/graceful-fs/polyfills.js | 228 + .../node_modules/lru-cache/bench.js | 25 + .../node_modules/lru-cache/lib/lru-cache.js | 263 + .../node_modules/lru-cache/package.json | 80 + .../node_modules/mkdirp/index.js | 82 + .../node_modules/mkdirp/package.json | 51 + .../node_modules/request-replay/index.js | 95 + .../node_modules/request-replay/package.json | 60 + .../node_modules/request/index.js | 149 + .../node_modules/request/lib/copy.js | 8 + .../node_modules/request/lib/debug.js | 5 + .../node_modules/request/lib/getSafe.js | 34 + .../request/node_modules/aws-sign/index.js | 202 + .../node_modules/aws-sign/package.json | 47 + .../request/node_modules/cookie-jar/index.js | 67 + .../request/node_modules/cookie-jar/jar.js | 72 + .../node_modules/cookie-jar/package.json | 49 + .../request/node_modules/hawk/index.js | 1 + .../request/node_modules/hawk/lib/browser.js | 485 + .../request/node_modules/hawk/lib/client.js | 367 + .../request/node_modules/hawk/lib/crypto.js | 111 + .../request/node_modules/hawk/lib/index.js | 15 + .../request/node_modules/hawk/lib/server.js | 524 + .../request/node_modules/hawk/lib/utils.js | 183 + .../request/node_modules/hawk/package.json | 70 + .../request/node_modules/oauth-sign/index.js | 43 + .../node_modules/oauth-sign/package.json | 49 + .../request/node_modules/qs/index.js | 366 + .../request/node_modules/qs/package.json | 55 + .../node_modules/tunnel-agent/index.js | 227 + .../node_modules/tunnel-agent/package.json | 45 + .../node_modules/request/package.json | 65 + .../node_modules/request/request.js | 1235 +++ .../bower-registry-client/package.json | 81 + .../bower/node_modules/cardinal/bin/cdl.js | 74 + .../bower/node_modules/cardinal/cardinal.js | 5 + .../node_modules/cardinal/lib/highlight.js | 83 + .../cardinal/lib/highlightFile.js | 26 + .../cardinal/lib/highlightFileSync.js | 11 + .../node_modules/ansicolors/ansicolors.js | 55 + .../node_modules/ansicolors/package.json | 52 + .../cardinal/node_modules/redeyed/config.js | 137 + .../node_modules/redeyed/package.json | 62 + .../cardinal/node_modules/redeyed/redeyed.js | 291 + .../bower/node_modules/cardinal/package.json | 68 + .../bower/node_modules/cardinal/settings.js | 51 + .../node_modules/cardinal/themes/default.js | 147 + .../node_modules/cardinal/themes/empty.js | 140 + .../cardinal/themes/hide-semicolons.js | 149 + .../cardinal/themes/tomorrow-night.js | 161 + .../bower/node_modules/cardinal/utl.js | 11 + .../bower/node_modules/chalk/index.js | 95 + .../chalk/node_modules/ansi-styles/index.js | 40 + .../node_modules/ansi-styles/package.json | 57 + .../escape-string-regexp/index.js | 11 + .../escape-string-regexp/package.json | 69 + .../chalk/node_modules/has-ansi/cli.js | 53 + .../chalk/node_modules/has-ansi/index.js | 4 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 62 + .../chalk/node_modules/has-ansi/package.json | 68 + .../chalk/node_modules/strip-ansi/cli.js | 39 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 62 + .../node_modules/strip-ansi/package.json | 67 + .../chalk/node_modules/supports-color/cli.js | 28 + .../node_modules/supports-color/index.js | 32 + .../node_modules/supports-color/package.json | 61 + .../bower/node_modules/chalk/package.json | 71 + .../bower/node_modules/chmodr/chmodr.js | 54 + .../bower/node_modules/chmodr/package.json | 50 + .../bower/node_modules/cli-color/CHANGES | 75 + .../bower/node_modules/cli-color/LICENCE | 19 + .../cli-color/bin/generate-color-images | 18 + .../bower/node_modules/cli-color/index.js | 137 + .../cli-color/lib/xterm-colors.js | 53 + .../node_modules/cli-color/lib/xterm-match.js | 40 + .../cli-color/node_modules/d/CHANGES | 7 + .../cli-color/node_modules/d/LICENCE | 19 + .../cli-color/node_modules/d/auto-bind.js | 31 + .../cli-color/node_modules/d/index.js | 63 + .../cli-color/node_modules/d/lazy.js | 111 + .../cli-color/node_modules/d/package.json | 42 + .../cli-color/node_modules/es5-ext/CHANGES | 577 + .../cli-color/node_modules/es5-ext/LICENCE | 19 + .../es5-ext/array/#/@@iterator/implement.js | 6 + .../es5-ext/array/#/@@iterator/index.js | 4 + .../array/#/@@iterator/is-implemented.js | 16 + .../es5-ext/array/#/@@iterator/shim.js | 3 + .../es5-ext/array/#/_compare-by-length.js | 9 + .../es5-ext/array/#/binary-search.js | 28 + .../node_modules/es5-ext/array/#/clear.js | 12 + .../node_modules/es5-ext/array/#/compact.js | 9 + .../es5-ext/array/#/concat/implement.js | 6 + .../es5-ext/array/#/concat/index.js | 4 + .../es5-ext/array/#/concat/is-implemented.js | 7 + .../es5-ext/array/#/concat/shim.js | 39 + .../node_modules/es5-ext/array/#/contains.js | 7 + .../es5-ext/array/#/copy-within/implement.js | 7 + .../es5-ext/array/#/copy-within/index.js | 4 + .../array/#/copy-within/is-implemented.js | 7 + .../es5-ext/array/#/copy-within/shim.js | 39 + .../node_modules/es5-ext/array/#/diff.js | 13 + .../es5-ext/array/#/e-index-of.js | 29 + .../es5-ext/array/#/e-last-index-of.js | 29 + .../es5-ext/array/#/entries/implement.js | 6 + .../es5-ext/array/#/entries/index.js | 4 + .../es5-ext/array/#/entries/is-implemented.js | 15 + .../es5-ext/array/#/entries/shim.js | 4 + .../node_modules/es5-ext/array/#/exclusion.js | 27 + .../es5-ext/array/#/fill/implement.js | 6 + .../es5-ext/array/#/fill/index.js | 4 + .../es5-ext/array/#/fill/is-implemented.js | 7 + .../node_modules/es5-ext/array/#/fill/shim.js | 21 + .../es5-ext/array/#/filter/implement.js | 6 + .../es5-ext/array/#/filter/index.js | 4 + .../es5-ext/array/#/filter/is-implemented.js | 9 + .../es5-ext/array/#/filter/shim.js | 22 + .../es5-ext/array/#/find-index/implement.js | 7 + .../es5-ext/array/#/find-index/index.js | 4 + .../array/#/find-index/is-implemented.js | 9 + .../es5-ext/array/#/find-index/shim.js | 20 + .../es5-ext/array/#/find/implement.js | 6 + .../es5-ext/array/#/find/index.js | 4 + .../es5-ext/array/#/find/is-implemented.js | 9 + .../node_modules/es5-ext/array/#/find/shim.js | 8 + .../es5-ext/array/#/first-index.js | 16 + .../node_modules/es5-ext/array/#/first.js | 9 + .../node_modules/es5-ext/array/#/flatten.js | 12 + .../es5-ext/array/#/for-each-right.js | 20 + .../node_modules/es5-ext/array/#/group.js | 23 + .../node_modules/es5-ext/array/#/index.js | 40 + .../es5-ext/array/#/indexes-of.js | 12 + .../es5-ext/array/#/intersection.js | 19 + .../node_modules/es5-ext/array/#/is-copy.js | 21 + .../node_modules/es5-ext/array/#/is-uniq.js | 12 + .../es5-ext/array/#/keys/implement.js | 6 + .../es5-ext/array/#/keys/index.js | 4 + .../es5-ext/array/#/keys/is-implemented.js | 14 + .../node_modules/es5-ext/array/#/keys/shim.js | 4 + .../es5-ext/array/#/last-index.js | 16 + .../node_modules/es5-ext/array/#/last.js | 9 + .../es5-ext/array/#/map/implement.js | 6 + .../node_modules/es5-ext/array/#/map/index.js | 4 + .../es5-ext/array/#/map/is-implemented.js | 8 + .../node_modules/es5-ext/array/#/map/shim.js | 21 + .../node_modules/es5-ext/array/#/remove.js | 12 + .../node_modules/es5-ext/array/#/separate.js | 10 + .../es5-ext/array/#/slice/implement.js | 6 + .../es5-ext/array/#/slice/index.js | 4 + .../es5-ext/array/#/slice/is-implemented.js | 7 + .../es5-ext/array/#/slice/shim.js | 35 + .../es5-ext/array/#/some-right.js | 22 + .../es5-ext/array/#/splice/implement.js | 6 + .../es5-ext/array/#/splice/index.js | 4 + .../es5-ext/array/#/splice/is-implemented.js | 7 + .../es5-ext/array/#/splice/shim.js | 14 + .../node_modules/es5-ext/array/#/uniq.js | 13 + .../es5-ext/array/#/values/implement.js | 6 + .../es5-ext/array/#/values/index.js | 3 + .../es5-ext/array/#/values/is-implemented.js | 14 + .../es5-ext/array/#/values/shim.js | 4 + .../es5-ext/array/_is-extensible.js | 13 + .../es5-ext/array/_sub-array-dummy-safe.js | 23 + .../es5-ext/array/_sub-array-dummy.js | 16 + .../es5-ext/array/from/implement.js | 6 + .../node_modules/es5-ext/array/from/index.js | 5 + .../es5-ext/array/from/is-implemented.js | 9 + .../node_modules/es5-ext/array/from/shim.js | 106 + .../node_modules/es5-ext/array/generate.js | 20 + .../node_modules/es5-ext/array/index.js | 11 + .../es5-ext/array/is-plain-array.js | 11 + .../es5-ext/array/of/implement.js | 6 + .../node_modules/es5-ext/array/of/index.js | 5 + .../es5-ext/array/of/is-implemented.js | 8 + .../node_modules/es5-ext/array/of/shim.js | 19 + .../node_modules/es5-ext/array/to-array.js | 9 + .../node_modules/es5-ext/array/valid-array.js | 8 + .../node_modules/es5-ext/boolean/index.js | 5 + .../es5-ext/boolean/is-boolean.js | 10 + .../node_modules/es5-ext/date/#/copy.js | 5 + .../es5-ext/date/#/days-in-month.js | 17 + .../node_modules/es5-ext/date/#/floor-day.js | 8 + .../es5-ext/date/#/floor-month.js | 8 + .../node_modules/es5-ext/date/#/floor-year.js | 8 + .../node_modules/es5-ext/date/#/format.js | 21 + .../node_modules/es5-ext/date/#/index.js | 10 + .../node_modules/es5-ext/date/index.js | 7 + .../node_modules/es5-ext/date/is-date.js | 9 + .../node_modules/es5-ext/date/valid-date.js | 8 + .../node_modules/es5-ext/error/#/index.js | 5 + .../node_modules/es5-ext/error/#/throw.js | 5 + .../node_modules/es5-ext/error/custom.js | 20 + .../node_modules/es5-ext/error/index.js | 8 + .../node_modules/es5-ext/error/is-error.js | 9 + .../node_modules/es5-ext/error/valid-error.js | 8 + .../es5-ext/function/#/compose.js | 20 + .../node_modules/es5-ext/function/#/copy.js | 15 + .../node_modules/es5-ext/function/#/curry.js | 24 + .../node_modules/es5-ext/function/#/index.js | 11 + .../node_modules/es5-ext/function/#/lock.js | 12 + .../node_modules/es5-ext/function/#/not.js | 14 + .../es5-ext/function/#/partial.js | 16 + .../node_modules/es5-ext/function/#/spread.js | 10 + .../es5-ext/function/_define-length.js | 44 + .../node_modules/es5-ext/function/constant.js | 5 + .../node_modules/es5-ext/function/identity.js | 3 + .../node_modules/es5-ext/function/index.js | 15 + .../node_modules/es5-ext/function/invoke.js | 15 + .../es5-ext/function/is-arguments.js | 7 + .../es5-ext/function/is-function.js | 9 + .../node_modules/es5-ext/function/noop.js | 3 + .../node_modules/es5-ext/function/pluck.js | 7 + .../es5-ext/function/valid-function.js | 8 + .../cli-color/node_modules/es5-ext/global.js | 3 + .../cli-color/node_modules/es5-ext/index.js | 16 + .../es5-ext/math/_pack-ieee754.js | 82 + .../es5-ext/math/_unpack-ieee754.js | 33 + .../es5-ext/math/acosh/implement.js | 6 + .../node_modules/es5-ext/math/acosh/index.js | 5 + .../es5-ext/math/acosh/is-implemented.js | 7 + .../node_modules/es5-ext/math/acosh/shim.js | 12 + .../es5-ext/math/asinh/implement.js | 6 + .../node_modules/es5-ext/math/asinh/index.js | 5 + .../es5-ext/math/asinh/is-implemented.js | 7 + .../node_modules/es5-ext/math/asinh/shim.js | 15 + .../es5-ext/math/atanh/implement.js | 6 + .../node_modules/es5-ext/math/atanh/index.js | 5 + .../es5-ext/math/atanh/is-implemented.js | 7 + .../node_modules/es5-ext/math/atanh/shim.js | 14 + .../es5-ext/math/cbrt/implement.js | 6 + .../node_modules/es5-ext/math/cbrt/index.js | 5 + .../es5-ext/math/cbrt/is-implemented.js | 7 + .../node_modules/es5-ext/math/cbrt/shim.js | 12 + .../es5-ext/math/clz32/implement.js | 6 + .../node_modules/es5-ext/math/clz32/index.js | 5 + .../es5-ext/math/clz32/is-implemented.js | 7 + .../node_modules/es5-ext/math/clz32/shim.js | 6 + .../es5-ext/math/cosh/implement.js | 6 + .../node_modules/es5-ext/math/cosh/index.js | 5 + .../es5-ext/math/cosh/is-implemented.js | 7 + .../node_modules/es5-ext/math/cosh/shim.js | 11 + .../es5-ext/math/expm1/implement.js | 6 + .../node_modules/es5-ext/math/expm1/index.js | 5 + .../es5-ext/math/expm1/is-implemented.js | 7 + .../node_modules/es5-ext/math/expm1/shim.js | 16 + .../es5-ext/math/fround/implement.js | 6 + .../node_modules/es5-ext/math/fround/index.js | 5 + .../es5-ext/math/fround/is-implemented.js | 7 + .../node_modules/es5-ext/math/fround/shim.js | 33 + .../es5-ext/math/hypot/implement.js | 6 + .../node_modules/es5-ext/math/hypot/index.js | 5 + .../es5-ext/math/hypot/is-implemented.js | 7 + .../node_modules/es5-ext/math/hypot/shim.js | 34 + .../es5-ext/math/imul/implement.js | 6 + .../node_modules/es5-ext/math/imul/index.js | 5 + .../es5-ext/math/imul/is-implemented.js | 7 + .../node_modules/es5-ext/math/imul/shim.js | 13 + .../node_modules/es5-ext/math/index.js | 21 + .../es5-ext/math/log10/implement.js | 6 + .../node_modules/es5-ext/math/log10/index.js | 5 + .../es5-ext/math/log10/is-implemented.js | 7 + .../node_modules/es5-ext/math/log10/shim.js | 14 + .../es5-ext/math/log1p/implement.js | 6 + .../node_modules/es5-ext/math/log1p/index.js | 5 + .../es5-ext/math/log1p/is-implemented.js | 7 + .../node_modules/es5-ext/math/log1p/shim.js | 17 + .../es5-ext/math/log2/implement.js | 6 + .../node_modules/es5-ext/math/log2/index.js | 5 + .../es5-ext/math/log2/is-implemented.js | 7 + .../node_modules/es5-ext/math/log2/shim.js | 14 + .../es5-ext/math/sign/implement.js | 6 + .../node_modules/es5-ext/math/sign/index.js | 5 + .../es5-ext/math/sign/is-implemented.js | 7 + .../node_modules/es5-ext/math/sign/shim.js | 7 + .../es5-ext/math/sinh/implement.js | 6 + .../node_modules/es5-ext/math/sinh/index.js | 5 + .../es5-ext/math/sinh/is-implemented.js | 7 + .../node_modules/es5-ext/math/sinh/shim.js | 11 + .../es5-ext/math/tanh/implement.js | 6 + .../node_modules/es5-ext/math/tanh/index.js | 5 + .../es5-ext/math/tanh/is-implemented.js | 7 + .../node_modules/es5-ext/math/tanh/shim.js | 15 + .../es5-ext/math/trunc/implement.js | 6 + .../node_modules/es5-ext/math/trunc/index.js | 5 + .../es5-ext/math/trunc/is-implemented.js | 7 + .../node_modules/es5-ext/math/trunc/shim.js | 13 + .../node_modules/es6-iterator/#/chain.js | 40 + .../es5-ext/node_modules/es6-iterator/CHANGES | 18 + .../es5-ext/node_modules/es6-iterator/LICENCE | 19 + .../node_modules/es6-iterator/array.js | 30 + .../node_modules/es6-iterator/for-of.js | 44 + .../es5-ext/node_modules/es6-iterator/get.js | 13 + .../node_modules/es6-iterator/index.js | 92 + .../node_modules/es6-iterator/is-iterable.js | 13 + .../node_modules/es6-iterator/package.json | 43 + .../node_modules/es6-iterator/string.js | 37 + .../es6-iterator/valid-iterable.js | 8 + .../es5-ext/node_modules/es6-symbol/CHANGES | 8 + .../es5-ext/node_modules/es6-symbol/LICENCE | 19 + .../node_modules/es6-symbol/implement.js | 7 + .../es5-ext/node_modules/es6-symbol/index.js | 3 + .../node_modules/es6-symbol/is-implemented.js | 21 + .../es6-symbol/is-native-implemented.js | 8 + .../node_modules/es6-symbol/is-symbol.js | 12 + .../node_modules/es6-symbol/package.json | 41 + .../node_modules/es6-symbol/polyfill.js | 53 + .../node_modules/es6-symbol/valid-symbol.js | 8 + .../node_modules/es5-ext/number/#/index.js | 5 + .../node_modules/es5-ext/number/#/pad.js | 15 + .../es5-ext/number/epsilon/implement.js | 6 + .../es5-ext/number/epsilon/index.js | 3 + .../es5-ext/number/epsilon/is-implemented.js | 5 + .../node_modules/es5-ext/number/index.js | 16 + .../es5-ext/number/is-finite/implement.js | 6 + .../es5-ext/number/is-finite/index.js | 5 + .../number/is-finite/is-implemented.js | 7 + .../es5-ext/number/is-finite/shim.js | 5 + .../es5-ext/number/is-integer/implement.js | 6 + .../es5-ext/number/is-integer/index.js | 5 + .../number/is-integer/is-implemented.js | 7 + .../es5-ext/number/is-integer/shim.js | 9 + .../es5-ext/number/is-nan/implement.js | 6 + .../es5-ext/number/is-nan/index.js | 5 + .../es5-ext/number/is-nan/is-implemented.js | 7 + .../es5-ext/number/is-nan/shim.js | 3 + .../node_modules/es5-ext/number/is-number.js | 11 + .../number/is-safe-integer/implement.js | 6 + .../es5-ext/number/is-safe-integer/index.js | 5 + .../number/is-safe-integer/is-implemented.js | 8 + .../es5-ext/number/is-safe-integer/shim.js | 11 + .../number/max-safe-integer/implement.js | 6 + .../es5-ext/number/max-safe-integer/index.js | 3 + .../number/max-safe-integer/is-implemented.js | 5 + .../number/min-safe-integer/implement.js | 6 + .../es5-ext/number/min-safe-integer/index.js | 3 + .../number/min-safe-integer/is-implemented.js | 5 + .../node_modules/es5-ext/number/to-integer.js | 12 + .../es5-ext/number/to-pos-integer.js | 7 + .../node_modules/es5-ext/number/to-uint32.js | 3 + .../node_modules/es5-ext/object/_iterate.js | 29 + .../es5-ext/object/assign/implement.js | 6 + .../es5-ext/object/assign/index.js | 5 + .../es5-ext/object/assign/is-implemented.js | 9 + .../es5-ext/object/assign/shim.js | 22 + .../node_modules/es5-ext/object/clear.js | 16 + .../node_modules/es5-ext/object/compact.js | 7 + .../node_modules/es5-ext/object/compare.js | 42 + .../node_modules/es5-ext/object/copy-deep.js | 30 + .../node_modules/es5-ext/object/copy.js | 10 + .../node_modules/es5-ext/object/count.js | 5 + .../node_modules/es5-ext/object/create.js | 36 + .../node_modules/es5-ext/object/eq.js | 5 + .../node_modules/es5-ext/object/every.js | 3 + .../node_modules/es5-ext/object/filter.js | 15 + .../node_modules/es5-ext/object/first-key.js | 14 + .../node_modules/es5-ext/object/flatten.js | 17 + .../node_modules/es5-ext/object/for-each.js | 3 + .../es5-ext/object/get-property-names.js | 18 + .../node_modules/es5-ext/object/index.js | 42 + .../es5-ext/object/is-array-like.js | 14 + .../es5-ext/object/is-callable.js | 5 + .../es5-ext/object/is-copy-deep.js | 58 + .../node_modules/es5-ext/object/is-copy.js | 24 + .../node_modules/es5-ext/object/is-empty.js | 14 + .../node_modules/es5-ext/object/is-object.js | 7 + .../es5-ext/object/is-plain-object.js | 20 + .../node_modules/es5-ext/object/is.js | 10 + .../node_modules/es5-ext/object/key-of.js | 15 + .../es5-ext/object/keys/implement.js | 6 + .../node_modules/es5-ext/object/keys/index.js | 5 + .../es5-ext/object/keys/is-implemented.js | 8 + .../node_modules/es5-ext/object/keys/shim.js | 7 + .../node_modules/es5-ext/object/map-keys.js | 15 + .../node_modules/es5-ext/object/map.js | 15 + .../es5-ext/object/mixin-prototypes.js | 34 + .../node_modules/es5-ext/object/mixin.js | 19 + .../es5-ext/object/normalize-options.js | 22 + .../es5-ext/object/primitive-set.js | 9 + .../es5-ext/object/safe-traverse.js | 15 + .../object/set-prototype-of/implement.js | 8 + .../es5-ext/object/set-prototype-of/index.js | 5 + .../object/set-prototype-of/is-implemented.js | 11 + .../es5-ext/object/set-prototype-of/shim.js | 73 + .../node_modules/es5-ext/object/some.js | 3 + .../node_modules/es5-ext/object/to-array.js | 18 + .../es5-ext/object/valid-callable.js | 6 + .../es5-ext/object/valid-object.js | 8 + .../es5-ext/object/valid-value.js | 6 + .../node_modules/es5-ext/package.json | 51 + .../node_modules/es5-ext/reg-exp/#/index.js | 10 + .../es5-ext/reg-exp/#/is-sticky.js | 9 + .../es5-ext/reg-exp/#/is-unicode.js | 9 + .../es5-ext/reg-exp/#/match/implement.js | 6 + .../es5-ext/reg-exp/#/match/index.js | 5 + .../es5-ext/reg-exp/#/match/is-implemented.js | 8 + .../es5-ext/reg-exp/#/match/shim.js | 8 + .../es5-ext/reg-exp/#/replace/implement.js | 6 + .../es5-ext/reg-exp/#/replace/index.js | 5 + .../reg-exp/#/replace/is-implemented.js | 8 + .../es5-ext/reg-exp/#/replace/shim.js | 8 + .../es5-ext/reg-exp/#/search/implement.js | 6 + .../es5-ext/reg-exp/#/search/index.js | 5 + .../reg-exp/#/search/is-implemented.js | 8 + .../es5-ext/reg-exp/#/search/shim.js | 8 + .../es5-ext/reg-exp/#/split/implement.js | 6 + .../es5-ext/reg-exp/#/split/index.js | 5 + .../es5-ext/reg-exp/#/split/is-implemented.js | 8 + .../es5-ext/reg-exp/#/split/shim.js | 8 + .../es5-ext/reg-exp/#/sticky/implement.js | 8 + .../reg-exp/#/sticky/is-implemented.js | 5 + .../es5-ext/reg-exp/#/unicode/implement.js | 8 + .../reg-exp/#/unicode/is-implemented.js | 5 + .../node_modules/es5-ext/reg-exp/escape.js | 9 + .../node_modules/es5-ext/reg-exp/index.js | 8 + .../es5-ext/reg-exp/is-reg-exp.js | 9 + .../es5-ext/reg-exp/valid-reg-exp.js | 8 + .../es5-ext/string/#/@@iterator/implement.js | 6 + .../es5-ext/string/#/@@iterator/index.js | 4 + .../string/#/@@iterator/is-implemented.js | 16 + .../es5-ext/string/#/@@iterator/shim.js | 6 + .../node_modules/es5-ext/string/#/at.js | 33 + .../es5-ext/string/#/camel-to-hyphen.js | 8 + .../es5-ext/string/#/capitalize.js | 8 + .../string/#/case-insensitive-compare.js | 7 + .../string/#/code-point-at/implement.js | 7 + .../es5-ext/string/#/code-point-at/index.js | 5 + .../string/#/code-point-at/is-implemented.js | 8 + .../es5-ext/string/#/code-point-at/shim.js | 26 + .../es5-ext/string/#/contains/implement.js | 7 + .../es5-ext/string/#/contains/index.js | 5 + .../string/#/contains/is-implemented.js | 8 + .../es5-ext/string/#/contains/shim.js | 7 + .../es5-ext/string/#/ends-with/implement.js | 7 + .../es5-ext/string/#/ends-with/index.js | 5 + .../string/#/ends-with/is-implemented.js | 8 + .../es5-ext/string/#/ends-with/shim.js | 16 + .../es5-ext/string/#/hyphen-to-camel.js | 8 + .../node_modules/es5-ext/string/#/indent.js | 12 + .../node_modules/es5-ext/string/#/index.js | 21 + .../node_modules/es5-ext/string/#/last.js | 8 + .../es5-ext/string/#/normalize/_data.js | 69 + .../es5-ext/string/#/normalize/implement.js | 7 + .../es5-ext/string/#/normalize/index.js | 5 + .../string/#/normalize/is-implemented.js | 8 + .../es5-ext/string/#/normalize/shim.js | 289 + .../node_modules/es5-ext/string/#/pad.js | 18 + .../es5-ext/string/#/plain-replace-all.js | 16 + .../es5-ext/string/#/plain-replace.js | 10 + .../es5-ext/string/#/repeat/implement.js | 7 + .../es5-ext/string/#/repeat/index.js | 5 + .../es5-ext/string/#/repeat/is-implemented.js | 8 + .../es5-ext/string/#/repeat/shim.js | 22 + .../es5-ext/string/#/starts-with/implement.js | 7 + .../es5-ext/string/#/starts-with/index.js | 5 + .../string/#/starts-with/is-implemented.js | 9 + .../es5-ext/string/#/starts-with/shim.js | 12 + .../es5-ext/string/format-method.js | 24 + .../string/from-code-point/implement.js | 6 + .../es5-ext/string/from-code-point/index.js | 5 + .../string/from-code-point/is-implemented.js | 7 + .../es5-ext/string/from-code-point/shim.js | 30 + .../node_modules/es5-ext/string/index.js | 9 + .../node_modules/es5-ext/string/is-string.js | 10 + .../es5-ext/string/raw/implement.js | 6 + .../node_modules/es5-ext/string/raw/index.js | 5 + .../es5-ext/string/raw/is-implemented.js | 9 + .../node_modules/es5-ext/string/raw/shim.js | 15 + .../cli-color/node_modules/memoizee/CHANGES | 86 + .../cli-color/node_modules/memoizee/LICENCE | 19 + .../node_modules/memoizee/ext/async.js | 146 + .../node_modules/memoizee/ext/dispose.js | 27 + .../node_modules/memoizee/ext/max-age.js | 70 + .../node_modules/memoizee/ext/max.js | 26 + .../node_modules/memoizee/ext/ref-counter.js | 39 + .../cli-color/node_modules/memoizee/index.js | 35 + .../memoizee/lib/configure-map.js | 165 + .../node_modules/memoizee/lib/methods.js | 28 + .../memoizee/lib/registered-extensions.js | 1 + .../memoizee/lib/resolve-length.js | 15 + .../node_modules/memoizee/methods-plain.js | 3 + .../node_modules/memoizee/methods.js | 3 + .../node_modules/event-emitter/CHANGES | 58 + .../node_modules/event-emitter/LICENCE | 19 + .../node_modules/event-emitter/all-off.js | 19 + .../event-emitter/has-listeners.js | 16 + .../node_modules/event-emitter/index.js | 132 + .../node_modules/event-emitter/package.json | 42 + .../node_modules/event-emitter/pipe.js | 42 + .../node_modules/event-emitter/unify.js | 50 + .../memoizee/node_modules/lru-queue/CHANGES | 3 + .../memoizee/node_modules/lru-queue/LICENCE | 19 + .../memoizee/node_modules/lru-queue/index.js | 48 + .../node_modules/lru-queue/package.json | 37 + .../memoizee/normalizers/get-1.js | 29 + .../memoizee/normalizers/get-fixed.js | 71 + .../normalizers/get-primitive-fixed.js | 12 + .../node_modules/memoizee/normalizers/get.js | 88 + .../memoizee/normalizers/primitive.js | 9 + .../node_modules/memoizee/package.json | 58 + .../cli-color/node_modules/memoizee/plain.js | 35 + .../node_modules/memoizee/profile.js | 78 + .../cli-color/node_modules/next-tick/CHANGES | 17 + .../cli-color/node_modules/next-tick/LICENCE | 19 + .../cli-color/node_modules/next-tick/index.js | 64 + .../node_modules/next-tick/package.json | 36 + .../cli-color/node_modules/timers-ext/CHANGES | 10 + .../cli-color/node_modules/timers-ext/LICENCE | 19 + .../node_modules/timers-ext/delay.js | 19 + .../node_modules/timers-ext/max-timeout.js | 3 + .../cli-color/node_modules/timers-ext/once.js | 33 + .../node_modules/timers-ext/package.json | 41 + .../node_modules/timers-ext/valid-timeout.js | 10 + .../bower/node_modules/cli-color/package.json | 46 + .../bower/node_modules/cli-color/throbber.js | 50 + .../bower/node_modules/cli-color/trim.js | 8 + .../node_modules/configstore/configstore.js | 100 + .../object-assign/object-assign.js | 52 + .../node_modules/object-assign/package.json | 67 + .../node_modules/uuid/misc/compare.js | 62 + .../node_modules/uuid/misc/perf.js | 102 + .../node_modules/uuid/package.json | 77 + .../node_modules/uuid/rng-browser.js | 31 + .../configstore/node_modules/uuid/rng.js | 4 + .../configstore/node_modules/uuid/uuid.js | 187 + .../node_modules/configstore/package.json | 91 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 54 + .../bower/node_modules/core-util-is/util.js | 106 + .../bower/node_modules/cryptiles/index.js | 1 + .../bower/node_modules/cryptiles/lib/index.js | 68 + .../bower/node_modules/cryptiles/package.json | 65 + .../node_modules/decompress-zip/Gruntfile.js | 47 + .../decompress-zip/bin/decompress-zip | 82 + .../decompress-zip/download-test-assets.js | 38 + .../decompress-zip/lib/decompress-zip.js | 315 + .../decompress-zip/lib/extractors.js | 181 + .../decompress-zip/lib/file-details.js | 37 + .../decompress-zip/lib/signatures.js | 10 + .../decompress-zip/lib/structures.js | 230 + .../node_modules/binary/index.js | 397 + .../node_modules/binary/lib/vars.js | 28 + .../binary/node_modules/buffers/index.js | 269 + .../binary/node_modules/buffers/package.json | 53 + .../binary/node_modules/chainsaw/index.js | 145 + .../chainsaw/node_modules/traverse/index.js | 322 + .../node_modules/traverse/package.json | 42 + .../binary/node_modules/chainsaw/package.json | 52 + .../node_modules/binary/package.json | 70 + .../node_modules/binary/perf/loop.js | 92 + .../node_modules/binary/perf/small.js | 80 + .../node_modules/mkpath/mkpath.js | 59 + .../node_modules/mkpath/package.json | 54 + .../node_modules/nopt/bin/nopt.js | 51 + .../node_modules/nopt/lib/nopt.js | 412 + .../node_modules/nopt/package.json | 56 + .../node_modules/readable-stream/duplex.js | 1 + .../node_modules/readable-stream/float.patch | 923 ++ .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 951 ++ .../readable-stream/lib/_stream_transform.js | 209 + .../readable-stream/lib/_stream_writable.js | 477 + .../node_modules/readable-stream/package.json | 44 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 7 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../node_modules/touch/bin/touch.js | 31 + .../touch/node_modules/nopt/bin/nopt.js | 44 + .../touch/node_modules/nopt/lib/nopt.js | 552 + .../touch/node_modules/nopt/package.json | 60 + .../node_modules/touch/package.json | 42 + .../node_modules/touch/touch.js | 154 + .../node_modules/decompress-zip/package.json | 86 + .../bower/node_modules/esprima/bin/esparse.js | 117 + .../node_modules/esprima/bin/esvalidate.js | 177 + .../bower/node_modules/esprima/esprima.js | 3908 +++++++ .../bower/node_modules/esprima/package.json | 69 + .../bower/node_modules/forever-agent/index.js | 119 + .../node_modules/forever-agent/package.json | 46 + .../node_modules/form-data/lib/form_data.js | 351 + .../node_modules/async/component.json | 11 + .../form-data/node_modules/async/lib/async.js | 1123 ++ .../form-data/node_modules/async/package.json | 60 + .../combined-stream/lib/combined_stream.js | 186 + .../delayed-stream/lib/delayed_stream.js | 99 + .../node_modules/delayed-stream/package.json | 43 + .../node_modules/combined-stream/package.json | 35 + .../bower/node_modules/form-data/package.json | 46 + .../node_modules/fstream-ignore/ignore.js | 275 + .../node_modules/fstream-ignore/package.json | 55 + .../bower/node_modules/fstream/fstream.js | 31 + .../node_modules/fstream/lib/abstract.js | 85 + .../bower/node_modules/fstream/lib/collect.js | 67 + .../node_modules/fstream/lib/dir-reader.js | 251 + .../node_modules/fstream/lib/dir-writer.js | 171 + .../node_modules/fstream/lib/file-reader.js | 147 + .../node_modules/fstream/lib/file-writer.js | 104 + .../node_modules/fstream/lib/get-type.js | 32 + .../node_modules/fstream/lib/link-reader.js | 54 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 93 + .../node_modules/fstream/lib/proxy-writer.js | 109 + .../bower/node_modules/fstream/lib/reader.js | 262 + .../node_modules/fstream/lib/socket-reader.js | 38 + .../bower/node_modules/fstream/lib/writer.js | 392 + .../bower/node_modules/fstream/package.json | 57 + .../bower/node_modules/glob/glob.js | 746 ++ .../glob/node_modules/once/once.js | 21 + .../glob/node_modules/once/package.json | 60 + .../bower/node_modules/glob/oh-my-glob.gif | Bin 0 -> 510360 bytes .../bower/node_modules/glob/package.json | 61 + .../bower/node_modules/graceful-fs/fs.js | 11 + .../node_modules/graceful-fs/graceful-fs.js | 158 + .../node_modules/graceful-fs/package.json | 66 + .../node_modules/graceful-fs/polyfills.js | 255 + .../node_modules/handlebars/bin/handlebars | 95 + .../handlebars/dist/amd/handlebars.js | 43 + .../handlebars/dist/amd/handlebars.runtime.js | 39 + .../handlebars/dist/amd/handlebars/base.js | 235 + .../dist/amd/handlebars/compiler/ast.js | 218 + .../dist/amd/handlebars/compiler/base.js | 25 + .../dist/amd/handlebars/compiler/compiler.js | 456 + .../dist/amd/handlebars/compiler/helpers.js | 191 + .../compiler/javascript-compiler.js | 968 ++ .../dist/amd/handlebars/compiler/parser.js | 504 + .../dist/amd/handlebars/compiler/printer.js | 145 + .../dist/amd/handlebars/compiler/visitor.js | 16 + .../dist/amd/handlebars/exception.js | 32 + .../handlebars/dist/amd/handlebars/runtime.js | 197 + .../dist/amd/handlebars/safe-string.js | 15 + .../handlebars/dist/amd/handlebars/utils.js | 92 + .../handlebars/dist/amd/precompiler.js | 149 + .../handlebars/dist/cjs/handlebars.js | 39 + .../handlebars/dist/cjs/handlebars.runtime.js | 35 + .../handlebars/dist/cjs/handlebars/base.js | 231 + .../dist/cjs/handlebars/compiler/ast.js | 214 + .../dist/cjs/handlebars/compiler/base.js | 21 + .../dist/cjs/handlebars/compiler/compiler.js | 452 + .../dist/cjs/handlebars/compiler/helpers.js | 187 + .../compiler/javascript-compiler.js | 964 ++ .../dist/cjs/handlebars/compiler/parser.js | 500 + .../dist/cjs/handlebars/compiler/printer.js | 141 + .../dist/cjs/handlebars/compiler/visitor.js | 12 + .../dist/cjs/handlebars/exception.js | 28 + .../handlebars/dist/cjs/handlebars/runtime.js | 193 + .../dist/cjs/handlebars/safe-string.js | 11 + .../handlebars/dist/cjs/handlebars/utils.js | 88 + .../handlebars/dist/cjs/precompiler.js | 145 + .../handlebars/dist/handlebars.amd.js | 3042 ++++++ .../handlebars/dist/handlebars.amd.min.js | 28 + .../handlebars/dist/handlebars.js | 3079 ++++++ .../handlebars/dist/handlebars.min.js | 28 + .../handlebars/dist/handlebars.runtime.amd.js | 637 ++ .../dist/handlebars.runtime.amd.min.js | 27 + .../handlebars/dist/handlebars.runtime.js | 660 ++ .../handlebars/dist/handlebars.runtime.min.js | 27 + .../node_modules/handlebars/lib/handlebars.js | 35 + .../handlebars/lib/handlebars.runtime.js | 34 + .../handlebars/lib/handlebars/base.js | 229 + .../handlebars/lib/handlebars/compiler/ast.js | 213 + .../lib/handlebars/compiler/base.js | 18 + .../lib/handlebars/compiler/compiler.js | 451 + .../lib/handlebars/compiler/helpers.js | 186 + .../compiler/javascript-compiler.js | 962 ++ .../lib/handlebars/compiler/parser.js | 499 + .../lib/handlebars/compiler/printer.js | 141 + .../lib/handlebars/compiler/visitor.js | 11 + .../handlebars/lib/handlebars/exception.js | 27 + .../handlebars/lib/handlebars/runtime.js | 190 + .../handlebars/lib/handlebars/safe-string.js | 10 + .../handlebars/lib/handlebars/utils.js | 85 + .../node_modules/handlebars/lib/index.js | 26 + .../handlebars/lib/precompiler.js | 144 + .../handlebars/node_modules/optimist/index.js | 478 + .../node_modules/optimist/package.json | 63 + .../node_modules/uglify-js/bin/uglifyjs | 402 + .../node_modules/uglify-js/lib/ast.js | 985 ++ .../node_modules/uglify-js/lib/compress.js | 2028 ++++ .../node_modules/uglify-js/lib/mozilla-ast.js | 267 + .../node_modules/uglify-js/lib/output.js | 1229 +++ .../node_modules/uglify-js/lib/parse.js | 1410 +++ .../node_modules/uglify-js/lib/scope.js | 581 + .../node_modules/uglify-js/lib/sourcemap.js | 81 + .../node_modules/uglify-js/lib/transform.js | 217 + .../node_modules/uglify-js/lib/utils.js | 295 + .../node_modules/async/component.json | 11 + .../uglify-js/node_modules/async/lib/async.js | 958 ++ .../uglify-js/node_modules/async/package.json | 60 + .../source-map/Makefile.dryice.js | 166 + .../source-map/build/assert-shim.js | 56 + .../source-map/build/mini-require.js | 152 + .../source-map/build/prefix-source-map.jsm | 20 + .../source-map/build/prefix-utils.jsm | 18 + .../source-map/build/suffix-browser.js | 8 + .../source-map/build/suffix-source-map.jsm | 6 + .../source-map/build/suffix-utils.jsm | 21 + .../source-map/build/test-prefix.js | 8 + .../source-map/build/test-suffix.js | 3 + .../node_modules/source-map/lib/source-map.js | 8 + .../source-map/lib/source-map/array-set.js | 97 + .../source-map/lib/source-map/base64-vlq.js | 144 + .../source-map/lib/source-map/base64.js | 42 + .../lib/source-map/binary-search.js | 81 + .../lib/source-map/source-map-consumer.js | 478 + .../lib/source-map/source-map-generator.js | 403 + .../source-map/lib/source-map/source-node.js | 408 + .../source-map/lib/source-map/util.js | 319 + .../node_modules/amdefine/amdefine.js | 299 + .../node_modules/amdefine/intercept.js | 36 + .../node_modules/amdefine/package.json | 55 + .../node_modules/source-map/package.json | 170 + .../node_modules/uglify-js/package.json | 57 + .../node_modules/uglify-js/tools/node.js | 165 + .../node_modules/handlebars/package.json | 89 + .../node_modules/handlebars/print-script | 3 + .../bower/node_modules/handlebars/runtime.js | 3 + .../bower/node_modules/hoek/index.js | 1 + .../bower/node_modules/hoek/lib/escape.js | 132 + .../bower/node_modules/hoek/lib/index.js | 585 + .../bower/node_modules/hoek/package.json | 70 + .../node_modules/http-signature/lib/index.js | 25 + .../node_modules/http-signature/lib/parser.js | 304 + .../node_modules/http-signature/lib/signer.js | 179 + .../node_modules/http-signature/lib/util.js | 249 + .../node_modules/http-signature/lib/verify.js | 42 + .../node_modules/asn1/lib/ber/errors.js | 13 + .../node_modules/asn1/lib/ber/index.js | 27 + .../node_modules/asn1/lib/ber/reader.js | 267 + .../node_modules/asn1/lib/ber/types.js | 36 + .../node_modules/asn1/lib/ber/writer.js | 317 + .../node_modules/asn1/lib/index.js | 20 + .../node_modules/asn1/package.json | 64 + .../node_modules/assert-plus/assert.js | 196 + .../node_modules/assert-plus/package.json | 38 + .../node_modules/ctype/README.old | 298 + .../http-signature/node_modules/ctype/ctf.js | 245 + .../http-signature/node_modules/ctype/ctio.js | 1485 +++ .../node_modules/ctype/ctype.js | 944 ++ .../ctype/man/man3ctype/ctio.3ctype | 241 + .../node_modules/ctype/package.json | 37 + .../node_modules/ctype/tools/jsl.conf | 129 + .../node_modules/ctype/tools/jsstyle | 839 ++ .../node_modules/http-signature/package.json | 54 + .../bower/node_modules/inherits/inherits.js | 1 + .../node_modules/inherits/inherits_browser.js | 23 + .../bower/node_modules/inherits/package.json | 51 + .../node_modules/inquirer/lib/inquirer.js | 62 + .../inquirer/lib/objects/choice.js | 44 + .../inquirer/lib/objects/choices.js | 177 + .../inquirer/lib/objects/separator.js | 47 + .../node_modules/inquirer/lib/prompts/base.js | 231 + .../inquirer/lib/prompts/checkbox.js | 261 + .../inquirer/lib/prompts/confirm.js | 98 + .../inquirer/lib/prompts/expand.js | 261 + .../inquirer/lib/prompts/input.js | 97 + .../node_modules/inquirer/lib/prompts/list.js | 199 + .../inquirer/lib/prompts/password.js | 158 + .../inquirer/lib/prompts/rawlist.js | 196 + .../node_modules/inquirer/lib/ui/baseUI.js | 83 + .../inquirer/lib/ui/bottom-bar.js | 79 + .../node_modules/inquirer/lib/ui/prompt.js | 125 + .../node_modules/inquirer/lib/utils/events.js | 32 + .../node_modules/inquirer/lib/utils/tty.js | 118 + .../node_modules/inquirer/lib/utils/utils.js | 103 + .../inquirer/node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 84 + .../inquirer/node_modules/figures/index.js | 87 + .../node_modules/figures/package.json | 66 + .../bower/node_modules/inquirer/package.json | 72 + .../bower/node_modules/insight/lib/index.js | 109 + .../node_modules/insight/lib/providers.js | 72 + .../bower/node_modules/insight/lib/push.js | 40 + .../insight/node_modules/async/component.json | 11 + .../insight/node_modules/async/lib/async.js | 1123 ++ .../insight/node_modules/async/package.json | 60 + .../node_modules/inquirer/lib/inquirer.js | 42 + .../inquirer/lib/objects/choice.js | 44 + .../inquirer/lib/objects/choices.js | 176 + .../inquirer/lib/objects/separator.js | 44 + .../node_modules/inquirer/lib/prompts/base.js | 222 + .../inquirer/lib/prompts/checkbox.js | 257 + .../inquirer/lib/prompts/confirm.js | 98 + .../inquirer/lib/prompts/expand.js | 261 + .../inquirer/lib/prompts/input.js | 97 + .../node_modules/inquirer/lib/prompts/list.js | 199 + .../inquirer/lib/prompts/password.js | 158 + .../inquirer/lib/prompts/rawlist.js | 196 + .../node_modules/inquirer/lib/ui/baseUI.js | 83 + .../inquirer/lib/ui/bottom-bar.js | 79 + .../node_modules/inquirer/lib/ui/prompt.js | 124 + .../node_modules/inquirer/lib/utils/events.js | 32 + .../node_modules/inquirer/lib/utils/tty.js | 118 + .../node_modules/inquirer/lib/utils/utils.js | 111 + .../node_modules/inquirer/package.json | 53 + .../node_modules/lodash._isnative/index.js | 34 + .../lodash._isnative/package.json | 63 + .../node_modules/lodash._objecttypes/index.js | 20 + .../lodash._objecttypes/package.json | 75 + .../node_modules/lodash.debounce/index.js | 156 + .../node_modules/lodash.debounce/package.json | 87 + .../node_modules/lodash.isfunction/index.js | 27 + .../lodash.isfunction/package.json | 82 + .../node_modules/lodash.isobject/index.js | 39 + .../node_modules/lodash.isobject/package.json | 85 + .../insight/node_modules/lodash.now/index.js | 28 + .../node_modules/lodash.now/package.json | 85 + .../node_modules/object-assign/index.js | 37 + .../node_modules/object-assign/package.json | 49 + .../insight/node_modules/os-name/cli.js | 28 + .../insight/node_modules/os-name/index.js | 42 + .../os-name/node_modules/minimist/index.js | 219 + .../node_modules/minimist/package.json | 71 + .../os-name/node_modules/osx-release/cli.js | 41 + .../os-name/node_modules/osx-release/index.js | 23 + .../node_modules/osx-release/package.json | 56 + .../insight/node_modules/os-name/package.json | 58 + .../bower/node_modules/insight/package.json | 58 + .../bower/node_modules/is-root/index.js | 4 + .../bower/node_modules/is-root/package.json | 62 + .../bower/node_modules/isarray/build/build.js | 209 + .../bower/node_modules/isarray/component.json | 19 + .../bower/node_modules/isarray/index.js | 3 + .../bower/node_modules/isarray/package.json | 54 + .../bower/node_modules/js-yaml/bin/js-yaml.js | 122 + .../bower/node_modules/js-yaml/bower.json | 23 + .../bower/node_modules/js-yaml/index.js | 15 + .../node_modules/js-yaml/index_browser.js | 7 + .../bower/node_modules/js-yaml/lib/js-yaml.js | 39 + .../js-yaml/lib/js-yaml/common.js | 56 + .../js-yaml/lib/js-yaml/dumper.js | 477 + .../js-yaml/lib/js-yaml/exception.js | 25 + .../js-yaml/lib/js-yaml/loader.js | 1593 +++ .../node_modules/js-yaml/lib/js-yaml/mark.js | 78 + .../js-yaml/lib/js-yaml/schema.js | 103 + .../js-yaml/lib/js-yaml/schema/core.js | 18 + .../lib/js-yaml/schema/default_full.js | 25 + .../lib/js-yaml/schema/default_safe.js | 28 + .../js-yaml/lib/js-yaml/schema/failsafe.js | 17 + .../js-yaml/lib/js-yaml/schema/json.js | 25 + .../node_modules/js-yaml/lib/js-yaml/type.js | 65 + .../js-yaml/lib/js-yaml/type/binary.js | 125 + .../js-yaml/lib/js-yaml/type/bool.js | 67 + .../js-yaml/lib/js-yaml/type/float.js | 108 + .../js-yaml/lib/js-yaml/type/int.js | 93 + .../js-yaml/lib/js-yaml/type/js/function.js | 71 + .../js-yaml/lib/js-yaml/type/js/regexp.js | 56 + .../js-yaml/lib/js-yaml/type/js/undefined.js | 28 + .../js-yaml/lib/js-yaml/type/map.js | 9 + .../js-yaml/lib/js-yaml/type/merge.js | 15 + .../js-yaml/lib/js-yaml/type/null.js | 40 + .../js-yaml/lib/js-yaml/type/omap.js | 51 + .../js-yaml/lib/js-yaml/type/pairs.js | 40 + .../js-yaml/lib/js-yaml/type/seq.js | 9 + .../js-yaml/lib/js-yaml/type/set.js | 28 + .../js-yaml/lib/js-yaml/type/str.js | 9 + .../js-yaml/lib/js-yaml/type/timestamp.js | 87 + .../js-yaml/node_modules/argparse/index.js | 1 + .../node_modules/argparse/lib/action.js | 146 + .../argparse/lib/action/append.js | 55 + .../argparse/lib/action/append/constant.js | 47 + .../node_modules/argparse/lib/action/count.js | 40 + .../node_modules/argparse/lib/action/help.js | 48 + .../node_modules/argparse/lib/action/store.js | 50 + .../argparse/lib/action/store/constant.js | 43 + .../argparse/lib/action/store/false.js | 27 + .../argparse/lib/action/store/true.js | 26 + .../argparse/lib/action/subparsers.js | 148 + .../argparse/lib/action/version.js | 50 + .../argparse/lib/action_container.js | 481 + .../node_modules/argparse/lib/argparse.js | 14 + .../argparse/lib/argument/error.js | 50 + .../argparse/lib/argument/exclusive.js | 54 + .../argparse/lib/argument/group.js | 75 + .../argparse/lib/argument_parser.js | 1165 ++ .../node_modules/argparse/lib/const.js | 18 + .../argparse/lib/help/added_formatters.js | 88 + .../argparse/lib/help/formatter.js | 803 ++ .../node_modules/argparse/lib/namespace.js | 77 + .../node_modules/argparse/package.json | 68 + .../underscore.string/component.json | 11 + .../dist/underscore.string.min.js | 1 + .../lib/underscore.string.js | 673 ++ .../underscore.string/libpeerconnection.log | 0 .../underscore.string/package.json | 98 + .../js-yaml/node_modules/underscore/CNAME | 1 + .../node_modules/underscore/favicon.ico | Bin 0 -> 1406 bytes .../js-yaml/node_modules/underscore/index.js | 1 + .../node_modules/underscore/package.json | 52 + .../node_modules/underscore/underscore-min.js | 1 + .../node_modules/underscore/underscore.js | 1226 +++ .../bower/node_modules/js-yaml/package.json | 81 + .../json-stringify-safe/package.json | 51 + .../json-stringify-safe/stringify.js | 39 + .../bower/node_modules/junk/index.js | 30 + .../bower/node_modules/junk/package.json | 65 + .../bower/node_modules/lockfile/lockfile.js | 311 + .../bower/node_modules/lockfile/package.json | 63 + .../node_modules/lodash/dist/lodash.compat.js | 7157 +++++++++++++ .../lodash/dist/lodash.compat.min.js | 61 + .../bower/node_modules/lodash/dist/lodash.js | 6785 ++++++++++++ .../node_modules/lodash/dist/lodash.min.js | 56 + .../lodash/dist/lodash.underscore.js | 4979 +++++++++ .../lodash/dist/lodash.underscore.min.js | 39 + .../bower/node_modules/lodash/lodash.js | 7179 +++++++++++++ .../bower/node_modules/lodash/package.json | 132 + .../node_modules/lru-cache/lib/lru-cache.js | 252 + .../bower/node_modules/lru-cache/package.json | 50 + .../bower/node_modules/mime/mime.js | 114 + .../bower/node_modules/mime/package.json | 59 + .../bower/node_modules/mime/types/mime.types | 1588 +++ .../bower/node_modules/mime/types/node.types | 77 + .../bower/node_modules/minimatch/minimatch.js | 1073 ++ .../minimatch/node_modules/sigmund/bench.js | 283 + .../node_modules/sigmund/package.json | 58 + .../minimatch/node_modules/sigmund/sigmund.js | 39 + .../bower/node_modules/minimatch/package.json | 40 + .../bower/node_modules/mkdirp/bin/cmd.js | 33 + .../bower/node_modules/mkdirp/index.js | 97 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 68 + .../bower/node_modules/mkdirp/package.json | 58 + .../bower/node_modules/mout/array.js | 53 + .../bower/node_modules/mout/array/append.js | 21 + .../bower/node_modules/mout/array/collect.js | 27 + .../bower/node_modules/mout/array/combine.js | 22 + .../bower/node_modules/mout/array/compact.js | 13 + .../bower/node_modules/mout/array/contains.js | 10 + .../node_modules/mout/array/difference.js | 23 + .../bower/node_modules/mout/array/equals.js | 30 + .../bower/node_modules/mout/array/every.js | 27 + .../bower/node_modules/mout/array/filter.js | 26 + .../bower/node_modules/mout/array/find.js | 13 + .../node_modules/mout/array/findIndex.js | 23 + .../bower/node_modules/mout/array/findLast.js | 13 + .../node_modules/mout/array/findLastIndex.js | 24 + .../bower/node_modules/mout/array/flatten.js | 43 + .../bower/node_modules/mout/array/forEach.js | 23 + .../bower/node_modules/mout/array/groupBy.js | 30 + .../bower/node_modules/mout/array/indexOf.js | 28 + .../bower/node_modules/mout/array/insert.js | 15 + .../node_modules/mout/array/intersection.js | 24 + .../bower/node_modules/mout/array/invoke.js | 23 + .../bower/node_modules/mout/array/join.js | 17 + .../bower/node_modules/mout/array/last.js | 16 + .../node_modules/mout/array/lastIndexOf.js | 28 + .../bower/node_modules/mout/array/map.js | 22 + .../bower/node_modules/mout/array/max.js | 34 + .../bower/node_modules/mout/array/min.js | 34 + .../bower/node_modules/mout/array/pick.js | 31 + .../bower/node_modules/mout/array/pluck.js | 12 + .../bower/node_modules/mout/array/range.js | 27 + .../bower/node_modules/mout/array/reduce.js | 33 + .../node_modules/mout/array/reduceRight.js | 34 + .../bower/node_modules/mout/array/reject.js | 25 + .../bower/node_modules/mout/array/remove.js | 13 + .../node_modules/mout/array/removeAll.js | 15 + .../bower/node_modules/mout/array/shuffle.js | 28 + .../bower/node_modules/mout/array/slice.js | 35 + .../bower/node_modules/mout/array/some.js | 27 + .../bower/node_modules/mout/array/sort.js | 55 + .../bower/node_modules/mout/array/sortBy.js | 19 + .../bower/node_modules/mout/array/split.js | 35 + .../bower/node_modules/mout/array/toLookup.js | 28 + .../bower/node_modules/mout/array/union.js | 19 + .../bower/node_modules/mout/array/unique.js | 25 + .../bower/node_modules/mout/array/xor.js | 26 + .../bower/node_modules/mout/array/zip.js | 28 + .../bower/node_modules/mout/collection.js | 22 + .../node_modules/mout/collection/contains.js | 9 + .../node_modules/mout/collection/every.js | 9 + .../node_modules/mout/collection/filter.js | 23 + .../node_modules/mout/collection/find.js | 10 + .../node_modules/mout/collection/forEach.js | 9 + .../node_modules/mout/collection/make_.js | 19 + .../bower/node_modules/mout/collection/map.js | 23 + .../bower/node_modules/mout/collection/max.js | 10 + .../bower/node_modules/mout/collection/min.js | 10 + .../node_modules/mout/collection/pluck.js | 14 + .../node_modules/mout/collection/reduce.js | 9 + .../node_modules/mout/collection/reject.js | 16 + .../node_modules/mout/collection/size.js | 19 + .../node_modules/mout/collection/some.js | 9 + .../bower/node_modules/mout/date.js | 22 + .../node_modules/mout/date/dayOfTheYear.js | 13 + .../bower/node_modules/mout/date/diff.js | 130 + .../node_modules/mout/date/i18n/de-DE.js | 61 + .../node_modules/mout/date/i18n/en-US.js | 61 + .../node_modules/mout/date/i18n/pt-BR.js | 61 + .../bower/node_modules/mout/date/i18n_.js | 14 + .../node_modules/mout/date/isLeapYear.js | 15 + .../bower/node_modules/mout/date/isSame.js | 16 + .../bower/node_modules/mout/date/parseIso.js | 146 + .../bower/node_modules/mout/date/quarter.js | 16 + .../bower/node_modules/mout/date/startOf.js | 54 + .../bower/node_modules/mout/date/strftime.js | 121 + .../node_modules/mout/date/timezoneAbbr.js | 17 + .../node_modules/mout/date/timezoneOffset.js | 16 + .../mout/date/totalDaysInMonth.js | 25 + .../node_modules/mout/date/totalDaysInYear.js | 13 + .../node_modules/mout/date/weekOfTheYear.js | 16 + .../bower/node_modules/mout/function.js | 23 + .../node_modules/mout/function/awaitDelay.js | 22 + .../bower/node_modules/mout/function/bind.js | 19 + .../node_modules/mout/function/compose.js | 23 + .../node_modules/mout/function/constant.js | 14 + .../node_modules/mout/function/debounce.js | 32 + .../bower/node_modules/mout/function/func.js | 14 + .../node_modules/mout/function/identity.js | 12 + .../mout/function/makeIterator_.js | 34 + .../node_modules/mout/function/partial.js | 23 + .../bower/node_modules/mout/function/prop.js | 14 + .../node_modules/mout/function/series.js | 22 + .../node_modules/mout/function/throttle.js | 33 + .../node_modules/mout/function/timeout.js | 17 + .../bower/node_modules/mout/function/times.js | 17 + .../bower/node_modules/mout/function/wrap.js | 14 + .../bower/node_modules/mout/index.js | 25 + .../bower/node_modules/mout/lang.js | 40 + .../bower/node_modules/mout/lang/GLOBAL.js | 7 + .../bower/node_modules/mout/lang/clone.js | 49 + .../node_modules/mout/lang/createObject.js | 18 + .../bower/node_modules/mout/lang/ctorApply.js | 17 + .../bower/node_modules/mout/lang/deepClone.js | 48 + .../node_modules/mout/lang/deepEquals.js | 30 + .../bower/node_modules/mout/lang/defaults.js | 17 + .../mout/lang/inheritPrototype.js | 18 + .../bower/node_modules/mout/lang/is.js | 23 + .../node_modules/mout/lang/isArguments.js | 15 + .../bower/node_modules/mout/lang/isArray.js | 8 + .../bower/node_modules/mout/lang/isBoolean.js | 8 + .../bower/node_modules/mout/lang/isDate.js | 8 + .../bower/node_modules/mout/lang/isEmpty.js | 24 + .../bower/node_modules/mout/lang/isFinite.js | 20 + .../node_modules/mout/lang/isFunction.js | 8 + .../bower/node_modules/mout/lang/isInteger.js | 12 + .../bower/node_modules/mout/lang/isKind.js | 9 + .../bower/node_modules/mout/lang/isNaN.js | 16 + .../bower/node_modules/mout/lang/isNull.js | 9 + .../bower/node_modules/mout/lang/isNumber.js | 8 + .../bower/node_modules/mout/lang/isObject.js | 8 + .../node_modules/mout/lang/isPlainObject.js | 13 + .../node_modules/mout/lang/isPrimitive.js | 21 + .../bower/node_modules/mout/lang/isRegExp.js | 8 + .../bower/node_modules/mout/lang/isString.js | 8 + .../node_modules/mout/lang/isUndefined.js | 10 + .../bower/node_modules/mout/lang/isnt.js | 12 + .../bower/node_modules/mout/lang/kindOf.js | 20 + .../bower/node_modules/mout/lang/toArray.js | 30 + .../bower/node_modules/mout/lang/toNumber.js | 20 + .../bower/node_modules/mout/lang/toString.js | 13 + .../bower/node_modules/mout/math.js | 19 + .../bower/node_modules/mout/math/ceil.js | 11 + .../bower/node_modules/mout/math/clamp.js | 9 + .../node_modules/mout/math/countSteps.js | 16 + .../bower/node_modules/mout/math/floor.js | 10 + .../bower/node_modules/mout/math/inRange.js | 11 + .../bower/node_modules/mout/math/isNear.js | 9 + .../bower/node_modules/mout/math/lerp.js | 11 + .../bower/node_modules/mout/math/loop.js | 10 + .../bower/node_modules/mout/math/map.js | 11 + .../bower/node_modules/mout/math/norm.js | 13 + .../bower/node_modules/mout/math/round.js | 12 + .../bower/node_modules/mout/number.js | 25 + .../bower/node_modules/mout/number/MAX_INT.js | 6 + .../mout/number/MAX_SAFE_INTEGER.js | 7 + .../node_modules/mout/number/MAX_UINT.js | 6 + .../bower/node_modules/mout/number/MIN_INT.js | 6 + .../node_modules/mout/number/abbreviate.js | 35 + .../mout/number/currencyFormat.js | 27 + .../mout/number/enforcePrecision.js | 12 + .../bower/node_modules/mout/number/isNaN.js | 14 + .../bower/node_modules/mout/number/nth.js | 25 + .../bower/node_modules/mout/number/ordinal.js | 14 + .../bower/node_modules/mout/number/pad.js | 14 + .../bower/node_modules/mout/number/rol.js | 10 + .../bower/node_modules/mout/number/ror.js | 10 + .../bower/node_modules/mout/number/sign.js | 15 + .../bower/node_modules/mout/number/toInt.js | 17 + .../bower/node_modules/mout/number/toUInt.js | 15 + .../node_modules/mout/number/toUInt31.js | 15 + .../bower/node_modules/mout/object.js | 43 + .../bower/node_modules/mout/object/bindAll.js | 19 + .../node_modules/mout/object/contains.js | 13 + .../node_modules/mout/object/deepFillIn.js | 33 + .../node_modules/mout/object/deepMatches.js | 55 + .../node_modules/mout/object/deepMixIn.js | 34 + .../bower/node_modules/mout/object/equals.js | 33 + .../bower/node_modules/mout/object/every.js | 23 + .../bower/node_modules/mout/object/fillIn.js | 21 + .../bower/node_modules/mout/object/filter.js | 20 + .../bower/node_modules/mout/object/find.js | 21 + .../bower/node_modules/mout/object/forIn.js | 76 + .../bower/node_modules/mout/object/forOwn.js | 19 + .../node_modules/mout/object/functions.js | 18 + .../bower/node_modules/mout/object/get.js | 20 + .../bower/node_modules/mout/object/has.js | 15 + .../bower/node_modules/mout/object/hasOwn.js | 12 + .../bower/node_modules/mout/object/keys.js | 16 + .../bower/node_modules/mout/object/map.js | 18 + .../bower/node_modules/mout/object/matches.js | 20 + .../bower/node_modules/mout/object/max.js | 12 + .../bower/node_modules/mout/object/merge.js | 40 + .../bower/node_modules/mout/object/min.js | 12 + .../bower/node_modules/mout/object/mixIn.js | 28 + .../node_modules/mout/object/namespace.js | 19 + .../bower/node_modules/mout/object/omit.js | 21 + .../bower/node_modules/mout/object/pick.js | 18 + .../bower/node_modules/mout/object/pluck.js | 13 + .../bower/node_modules/mout/object/reduce.js | 29 + .../bower/node_modules/mout/object/reject.js | 16 + .../bower/node_modules/mout/object/result.js | 14 + .../bower/node_modules/mout/object/set.js | 17 + .../bower/node_modules/mout/object/size.js | 16 + .../bower/node_modules/mout/object/some.js | 21 + .../bower/node_modules/mout/object/unset.js | 23 + .../bower/node_modules/mout/object/values.js | 16 + .../bower/node_modules/mout/package.json | 158 + .../bower/node_modules/mout/queryString.js | 15 + .../node_modules/mout/queryString/contains.js | 12 + .../node_modules/mout/queryString/decode.js | 38 + .../node_modules/mout/queryString/encode.js | 27 + .../node_modules/mout/queryString/getParam.js | 15 + .../node_modules/mout/queryString/getQuery.js | 13 + .../node_modules/mout/queryString/parse.js | 13 + .../node_modules/mout/queryString/setParam.js | 28 + .../bower/node_modules/mout/random.js | 18 + .../bower/node_modules/mout/random/choice.js | 15 + .../bower/node_modules/mout/random/guid.js | 24 + .../bower/node_modules/mout/random/rand.js | 15 + .../bower/node_modules/mout/random/randBit.js | 11 + .../node_modules/mout/random/randBool.js | 12 + .../bower/node_modules/mout/random/randHex.js | 19 + .../bower/node_modules/mout/random/randInt.js | 18 + .../node_modules/mout/random/randSign.js | 11 + .../node_modules/mout/random/randString.js | 27 + .../bower/node_modules/mout/random/random.js | 18 + .../bower/node_modules/mout/string.js | 46 + .../node_modules/mout/string/WHITE_SPACES.js | 12 + .../node_modules/mout/string/camelCase.js | 20 + .../node_modules/mout/string/contains.js | 14 + .../bower/node_modules/mout/string/crop.js | 12 + .../node_modules/mout/string/endsWith.js | 13 + .../node_modules/mout/string/escapeHtml.js | 18 + .../node_modules/mout/string/escapeRegExp.js | 12 + .../node_modules/mout/string/escapeUnicode.js | 21 + .../node_modules/mout/string/hyphenate.js | 14 + .../bower/node_modules/mout/string/insert.js | 21 + .../node_modules/mout/string/interpolate.js | 19 + .../node_modules/mout/string/lowerCase.js | 11 + .../bower/node_modules/mout/string/lpad.js | 17 + .../bower/node_modules/mout/string/ltrim.js | 34 + .../node_modules/mout/string/makePath.js | 15 + .../mout/string/normalizeLineBreaks.js | 18 + .../node_modules/mout/string/pascalCase.js | 13 + .../node_modules/mout/string/properCase.js | 13 + .../mout/string/removeNonASCII.js | 14 + .../node_modules/mout/string/removeNonWord.js | 14 + .../bower/node_modules/mout/string/repeat.js | 26 + .../bower/node_modules/mout/string/replace.js | 33 + .../mout/string/replaceAccents.js | 36 + .../bower/node_modules/mout/string/rpad.js | 15 + .../bower/node_modules/mout/string/rtrim.js | 33 + .../node_modules/mout/string/sentenceCase.js | 15 + .../bower/node_modules/mout/string/slugify.js | 24 + .../node_modules/mout/string/startsWith.js | 13 + .../node_modules/mout/string/stripHtmlTags.js | 11 + .../bower/node_modules/mout/string/trim.js | 15 + .../node_modules/mout/string/truncate.js | 21 + .../node_modules/mout/string/typecast.js | 29 + .../node_modules/mout/string/unCamelCase.js | 23 + .../node_modules/mout/string/underscore.js | 13 + .../node_modules/mout/string/unescapeHtml.js | 18 + .../mout/string/unescapeUnicode.js | 16 + .../node_modules/mout/string/unhyphenate.js | 10 + .../node_modules/mout/string/upperCase.js | 10 + .../bower/node_modules/mout/time.js | 12 + .../bower/node_modules/mout/time/convert.js | 41 + .../bower/node_modules/mout/time/now.js | 18 + .../bower/node_modules/mout/time/parseMs.js | 17 + .../node_modules/mout/time/toTimeString.js | 24 + .../bower/node_modules/mute-stream/mute.js | 140 + .../node_modules/mute-stream/package.json | 55 + .../node_modules/node-uuid/component.json | 18 + .../bower/node_modules/node-uuid/package.json | 54 + .../bower/node_modules/node-uuid/uuid.js | 245 + .../bower/node_modules/nopt/bin/nopt.js | 54 + .../bower/node_modules/nopt/lib/nopt.js | 414 + .../bower/node_modules/nopt/package.json | 39 + .../bower/node_modules/opn/cli.js | 30 + .../bower/node_modules/opn/index.js | 53 + .../bower/node_modules/opn/package.json | 73 + .../bower/node_modules/opn/xdg-open | 557 + .../bower/node_modules/osenv/osenv.js | 73 + .../bower/node_modules/osenv/package.json | 63 + .../bower/node_modules/p-throttler/index.js | 155 + .../p-throttler/lib/arrayRemove.js | 13 + .../p-throttler/node_modules/q/package.json | 113 + .../p-throttler/node_modules/q/q.js | 1937 ++++ .../p-throttler/node_modules/q/queue.js | 35 + .../node_modules/p-throttler/package.json | 60 + .../bower/node_modules/package-json/index.js | 31 + .../node_modules/config-chain/LICENCE | 22 + .../node_modules/config-chain/index.js | 282 + .../node_modules/config-chain/package.json | 32 + .../package-json/node_modules/got/index.js | 105 + .../node_modules/got/package.json | 68 + .../package-json/node_modules/ini/ini.js | 190 + .../node_modules/ini/package.json | 51 + .../node_modules/npmconf/config-defs.js | 381 + .../node_modules/npmconf/lib/find-prefix.js | 56 + .../npmconf/lib/get-credentials-by-uri.js | 73 + .../node_modules/npmconf/lib/load-cafile.js | 31 + .../node_modules/npmconf/lib/load-prefix.js | 49 + .../node_modules/npmconf/lib/load-uid.js | 15 + .../node_modules/npmconf/lib/nerf-dart.js | 21 + .../npmconf/lib/set-credentials-by-uri.js | 42 + .../node_modules/npmconf/lib/set-user.js | 30 + .../node_modules/npmconf/npmconf.js | 414 + .../node_modules/npmconf/package.json | 73 + .../object-assign/object-assign.js | 52 + .../node_modules/object-assign/package.json | 67 + .../package-json/node_modules/once/once.js | 21 + .../node_modules/once/package.json | 60 + .../node_modules/proto-list/package.json | 33 + .../node_modules/proto-list/proto-list.js | 88 + .../node_modules/registry-url/index.js | 13 + .../node_modules/registry-url/package.json | 64 + .../node_modules/uid-number/get-uid-gid.js | 24 + .../node_modules/uid-number/package.json | 48 + .../node_modules/uid-number/uid-number.js | 54 + .../node_modules/package-json/package.json | 66 + .../bower/node_modules/promptly/index.js | 180 + .../promptly/node_modules/read/LICENCE | 25 + .../promptly/node_modules/read/lib/read.js | 113 + .../promptly/node_modules/read/package.json | 54 + .../promptly/node_modules/read/rs.js | 4 + .../bower/node_modules/promptly/package.json | 65 + .../bower/node_modules/q/package.json | 113 + .../node_modules/bower/node_modules/q/q.js | 1904 ++++ .../bower/node_modules/q/queue.js | 35 + .../bower/node_modules/readline2/index.js | 170 + .../readline2/node_modules/chalk/index.js | 63 + .../node_modules/ansi-styles/ansi-styles.js | 38 + .../node_modules/ansi-styles/package.json | 75 + .../chalk/node_modules/has-color/index.js | 32 + .../chalk/node_modules/has-color/package.json | 71 + .../chalk/node_modules/strip-ansi/cli.js | 27 + .../chalk/node_modules/strip-ansi/index.js | 4 + .../node_modules/strip-ansi/package.json | 81 + .../readline2/node_modules/chalk/package.json | 78 + .../bower/node_modules/readline2/package.json | 57 + .../node_modules/request-progress/index.js | 80 + .../node_modules/throttleit/component.json | 13 + .../node_modules/throttleit/example.js | 14 + .../node_modules/throttleit/index.js | 30 + .../node_modules/throttleit/package.json | 47 + .../request-progress/package.json | 61 + .../request/disabled.appveyor.yml | 36 + .../bower/node_modules/request/index.js | 166 + .../bower/node_modules/request/lib/cookies.js | 40 + .../bower/node_modules/request/lib/copy.js | 8 + .../bower/node_modules/request/lib/debug.js | 9 + .../bower/node_modules/request/lib/helpers.js | 46 + .../node_modules/request/lib/optional.js | 13 + .../request/node_modules/aws-sign2/index.js | 202 + .../node_modules/aws-sign2/package.json | 47 + .../request/node_modules/caseless/index.js | 65 + .../node_modules/caseless/package.json | 52 + .../request/node_modules/hawk/index.js | 1 + .../request/node_modules/hawk/lib/browser.js | 507 + .../request/node_modules/hawk/lib/client.js | 371 + .../request/node_modules/hawk/lib/crypto.js | 118 + .../request/node_modules/hawk/lib/index.js | 15 + .../request/node_modules/hawk/lib/server.js | 523 + .../request/node_modules/hawk/lib/utils.js | 183 + .../request/node_modules/hawk/package.json | 71 + .../node_modules/mime-types/component.json | 16 + .../node_modules/mime-types/lib/custom.json | 27 + .../node_modules/mime-types/lib/index.js | 75 + .../node_modules/mime-types/lib/mime.json | 3317 ++++++ .../node_modules/mime-types/lib/node.json | 55 + .../node_modules/mime-types/package.json | 43 + .../request/node_modules/oauth-sign/index.js | 81 + .../node_modules/oauth-sign/package.json | 49 + .../request/node_modules/qs/index.js | 1 + .../request/node_modules/qs/lib/index.js | 15 + .../request/node_modules/qs/lib/parse.js | 155 + .../request/node_modules/qs/lib/stringify.js | 55 + .../request/node_modules/qs/lib/utils.js | 133 + .../request/node_modules/qs/package.json | 61 + .../node_modules/stringstream/example.js | 27 + .../node_modules/stringstream/package.json | 31 + .../node_modules/stringstream/stringstream.js | 102 + .../node_modules/tunnel-agent/index.js | 236 + .../node_modules/tunnel-agent/package.json | 45 + .../bower/node_modules/request/package.json | 81 + .../bower/node_modules/request/request.js | 1493 +++ .../bower/node_modules/retry/equation.gif | Bin 0 -> 1209 bytes .../bower/node_modules/retry/index.js | 1 + .../bower/node_modules/retry/lib/retry.js | 50 + .../node_modules/retry/lib/retry_operation.js | 109 + .../bower/node_modules/retry/package.json | 34 + .../bower/node_modules/rimraf/bin.js | 33 + .../bower/node_modules/rimraf/package.json | 73 + .../bower/node_modules/rimraf/rimraf.js | 248 + .../bower/node_modules/rx/Gruntfile.js | 1767 +++ .../bower/node_modules/rx/bower.json | 53 + .../bower/node_modules/rx/component.json | 43 + .../node_modules/rx/dist/rx.aggregates.js | 790 ++ .../node_modules/rx/dist/rx.aggregates.min.js | 1 + .../node_modules/rx/dist/rx.all.compat.js | 9443 +++++++++++++++++ .../node_modules/rx/dist/rx.all.compat.min.js | 3 + .../bower/node_modules/rx/dist/rx.all.js | 9224 ++++++++++++++++ .../bower/node_modules/rx/dist/rx.all.min.js | 3 + .../node_modules/rx/dist/rx.async.compat.js | 413 + .../rx/dist/rx.async.compat.min.js | 1 + .../bower/node_modules/rx/dist/rx.async.js | 345 + .../node_modules/rx/dist/rx.async.min.js | 1 + .../node_modules/rx/dist/rx.backpressure.js | 406 + .../rx/dist/rx.backpressure.min.js | 1 + .../bower/node_modules/rx/dist/rx.binding.js | 531 + .../node_modules/rx/dist/rx.binding.min.js | 1 + .../node_modules/rx/dist/rx.coincidence.js | 814 ++ .../rx/dist/rx.coincidence.min.js | 1 + .../bower/node_modules/rx/dist/rx.compat.js | 4676 ++++++++ .../node_modules/rx/dist/rx.compat.min.js | 2 + .../node_modules/rx/dist/rx.core.compat.js | 2548 +++++ .../rx/dist/rx.core.compat.min.js | 1 + .../bower/node_modules/rx/dist/rx.core.js | 2430 +++++ .../bower/node_modules/rx/dist/rx.core.min.js | 1 + .../node_modules/rx/dist/rx.experimental.js | 464 + .../rx/dist/rx.experimental.min.js | 1 + .../node_modules/rx/dist/rx.joinpatterns.js | 415 + .../rx/dist/rx.joinpatterns.min.js | 1 + .../bower/node_modules/rx/dist/rx.js | 4525 ++++++++ .../node_modules/rx/dist/rx.lite.compat.js | 5727 ++++++++++ .../rx/dist/rx.lite.compat.min.js | 2 + .../node_modules/rx/dist/rx.lite.extras.js | 592 ++ .../rx/dist/rx.lite.extras.min.js | 1 + .../bower/node_modules/rx/dist/rx.lite.js | 5508 ++++++++++ .../bower/node_modules/rx/dist/rx.lite.min.js | 2 + .../bower/node_modules/rx/dist/rx.min.js | 2 + .../bower/node_modules/rx/dist/rx.testing.js | 480 + .../node_modules/rx/dist/rx.testing.min.js | 1 + .../bower/node_modules/rx/dist/rx.time.js | 1149 ++ .../bower/node_modules/rx/dist/rx.time.min.js | 1 + .../node_modules/rx/dist/rx.virtualtime.js | 320 + .../rx/dist/rx.virtualtime.min.js | 1 + .../bower/node_modules/rx/index.js | 173 + .../bower/node_modules/rx/package.json | 78 + .../bower/node_modules/rx/travis.sh | 59 + .../bower/node_modules/rx/ts/rx-lite.d.ts | 611 ++ .../node_modules/rx/ts/rx.aggregates.d.ts | 61 + .../bower/node_modules/rx/ts/rx.all.ts | 20 + .../node_modules/rx/ts/rx.async-lite.d.ts | 65 + .../node_modules/rx/ts/rx.async-tests.ts | 84 + .../bower/node_modules/rx/ts/rx.async.d.ts | 43 + .../rx/ts/rx.backpressure-lite.d.ts | 49 + .../rx/ts/rx.backpressure-tests.ts | 22 + .../node_modules/rx/ts/rx.backpressure.d.ts | 11 + .../node_modules/rx/ts/rx.binding-lite.d.ts | 72 + .../bower/node_modules/rx/ts/rx.binding.d.ts | 11 + .../rx/ts/rx.coincidence-lite.d.ts | 34 + .../node_modules/rx/ts/rx.coincidence.d.ts | 36 + .../bower/node_modules/rx/ts/rx.d.ts | 102 + .../node_modules/rx/ts/rx.experimental.d.ts | 321 + .../node_modules/rx/ts/rx.joinpatterns.d.ts | 60 + .../bower/node_modules/rx/ts/rx.lite.d.ts | 50 + .../bower/node_modules/rx/ts/rx.testing.d.ts | 62 + .../node_modules/rx/ts/rx.time-lite.d.ts | 62 + .../bower/node_modules/rx/ts/rx.time.d.ts | 35 + .../node_modules/rx/ts/rx.virtualtime.d.ts | 39 + .../bower/node_modules/semver/bin/semver | 125 + .../bower/node_modules/semver/foot.js | 6 + .../bower/node_modules/semver/head.js | 2 + .../bower/node_modules/semver/package.json | 32 + .../node_modules/semver/semver.browser.js | 1046 ++ .../node_modules/semver/semver.browser.js.gz | Bin 0 -> 7253 bytes .../bower/node_modules/semver/semver.js | 1050 ++ .../bower/node_modules/semver/semver.min.js | 1 + .../node_modules/semver/semver.min.js.gz | Bin 0 -> 3311 bytes .../bower/node_modules/shell-quote/index.js | 181 + .../node_modules/array-filter/index.js | 19 + .../node_modules/array-filter/package.json | 72 + .../node_modules/array-map/index.js | 11 + .../node_modules/array-map/package.json | 74 + .../node_modules/array-reduce/index.js | 18 + .../node_modules/array-reduce/package.json | 73 + .../shell-quote/node_modules/jsonify/index.js | 2 + .../node_modules/jsonify/lib/parse.js | 273 + .../node_modules/jsonify/lib/stringify.js | 154 + .../node_modules/jsonify/package.json | 57 + .../node_modules/shell-quote/package.json | 59 + .../bower/node_modules/sntp/index.js | 1 + .../bower/node_modules/sntp/lib/index.js | 409 + .../bower/node_modules/sntp/package.json | 65 + .../bower/node_modules/string-length/index.js | 7 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/package.json | 84 + .../node_modules/strip-ansi/cli.js | 47 + .../node_modules/strip-ansi/index.js | 6 + .../node_modules/strip-ansi/package.json | 89 + .../node_modules/string-length/package.json | 69 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 32 + .../node_modules/stringify-object/index.js | 85 + .../stringify-object/package.json | 81 + .../bower/node_modules/tar-fs/index.js | 237 + .../node_modules/end-of-stream/index.js | 72 + .../end-of-stream/node_modules/once/once.js | 21 + .../node_modules/once/package.json | 60 + .../node_modules/end-of-stream/package.json | 55 + .../tar-fs/node_modules/mkdirp/index.js | 82 + .../tar-fs/node_modules/mkdirp/package.json | 51 + .../tar-fs/node_modules/pump/index.js | 79 + .../pump/node_modules/once/once.js | 20 + .../pump/node_modules/once/package.json | 56 + .../tar-fs/node_modules/pump/package.json | 52 + .../tar-fs/node_modules/tar-stream/extract.js | 194 + .../tar-fs/node_modules/tar-stream/headers.js | 218 + .../tar-fs/node_modules/tar-stream/index.js | 2 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 982 ++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 386 + .../node_modules/readable-stream/package.json | 70 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 6 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../tar-stream/node_modules/xtend/LICENCE | 19 + .../node_modules/xtend/immutable.js | 17 + .../tar-stream/node_modules/xtend/mutable.js | 15 + .../node_modules/xtend/package.json | 88 + .../tar-fs/node_modules/tar-stream/pack.js | 194 + .../node_modules/tar-stream/package.json | 75 + .../bower/node_modules/tar-fs/package.json | 55 + .../node_modules/through/LICENSE.APACHE2 | 15 + .../bower/node_modules/through/LICENSE.MIT | 24 + .../bower/node_modules/through/index.js | 108 + .../bower/node_modules/through/package.json | 65 + .../bower/node_modules/tmp/domain-test.js | 13 + .../bower/node_modules/tmp/lib/tmp.js | 280 + .../bower/node_modules/tmp/package.json | 66 + .../bower/node_modules/tmp/test-all.sh | 9 + .../tough-cookie/generate-pubsuffix.js | 239 + .../node_modules/tough-cookie/lib/cookie.js | 1107 ++ .../node_modules/tough-cookie/lib/memstore.js | 123 + .../tough-cookie/lib/pubsuffix.js | 69 + .../node_modules/tough-cookie/lib/store.js | 37 + .../node_modules/punycode/package.json | 67 + .../node_modules/punycode/punycode.js | 528 + .../node_modules/tough-cookie/package.json | 67 + .../node_modules/update-notifier/check.js | 21 + .../node_modules/update-notifier/index.js | 122 + .../node_modules/latest-version/cli.js | 40 + .../node_modules/latest-version/index.js | 13 + .../node_modules/latest-version/package.json | 69 + .../node_modules/semver-diff/index.js | 27 + .../node_modules/semver/bin/semver | 125 + .../semver-diff/node_modules/semver/foot.js | 6 + .../semver-diff/node_modules/semver/head.js | 2 + .../node_modules/semver/package.json | 50 + .../node_modules/semver/semver.browser.js | 1035 ++ .../node_modules/semver/semver.browser.js.gz | Bin 0 -> 7247 bytes .../semver-diff/node_modules/semver/semver.js | 1039 ++ .../node_modules/semver/semver.min.js | 1 + .../node_modules/semver/semver.min.js.gz | Bin 0 -> 3318 bytes .../node_modules/semver-diff/package.json | 63 + .../node_modules/update-notifier/package.json | 93 + .../bower/node_modules/which/bin/which | 14 + .../bower/node_modules/which/package.json | 53 + .../bower/node_modules/which/which.js | 104 + .../bower/node_modules/wordwrap/index.js | 76 + .../bower/node_modules/wordwrap/package.json | 61 + .../bower/node_modules/wrappy/package.json | 52 + .../bower/node_modules/wrappy/wrappy.js | 33 + .../node_modules/bower/package.json | 134 + .../bower/templates/helpers/colors.js | 20 + .../bower/templates/helpers/condense.js | 22 + .../bower/templates/helpers/indent.js | 12 + .../bower/templates/helpers/index.js | 7 + .../bower/templates/helpers/rpad.js | 13 + .../bower/templates/helpers/sum.js | 7 + .../bower/templates/json/help-cache.json | 11 + .../templates/json/help-cache/clean.json | 16 + .../bower/templates/json/help-cache/list.json | 15 + .../bower/templates/json/help-home.json | 16 + .../bower/templates/json/help-info.json | 16 + .../bower/templates/json/help-init.json | 14 + .../bower/templates/json/help-install.json | 35 + .../bower/templates/json/help-link.json | 15 + .../bower/templates/json/help-list.json | 24 + .../bower/templates/json/help-lookup.json | 14 + .../bower/templates/json/help-prune.json | 14 + .../bower/templates/json/help-register.json | 14 + .../bower/templates/json/help-search.json | 15 + .../bower/templates/json/help-uninstall.json | 24 + .../bower/templates/json/help-update.json | 24 + .../bower/templates/json/help-version.json | 14 + .../bower/templates/json/help.json | 67 + .../bower/templates/std/conflict-resolved.std | 9 + .../bower/templates/std/conflict.std | 9 + .../bower/templates/std/help-cache.std | 16 + .../bower/templates/std/help-generic.std | 22 + .../node_modules/bower/templates/std/help.std | 26 + .../node_modules/bower/templates/std/info.std | 10 + .../bower/templates/std/lookup.std | 7 + .../bower/templates/std/register.std | 5 + .../bower/templates/std/search-results.std | 9 + packages/Bower.1.3.11/readme.txt | 64 + packages/Bower.1.3.11/tools/bin_tools.ps1 | 64 + packages/Bower.1.3.11/tools/install.ps1 | 8 + packages/Bower.1.3.11/tools/uninstall.ps1 | 6 + packages/NoGit.0.0.8/NoGit.0.0.8.nupkg | Bin 0 -> 662724 bytes packages/NoGit.0.0.8/content/.bin/git.cmd | 3 + .../NoGit.0.0.8/node_modules/nogit/bin/git.js | 147 + .../node_modules/nogit/commands/archive.js | 50 + .../node_modules/nogit/commands/clone.js | 98 + .../node_modules/nogit/commands/export.js | 50 + .../node_modules/nogit/commands/fetch.js | 51 + .../node_modules/nogit/commands/log.js | 66 + .../node_modules/nogit/commands/ls-remote.js | 18 + .../node_modules/nogit/lib/config.js | 39 + .../node_modules/nogit/lib/utils.js | 23 + .../nogit/node_modules/.bin/mkdirp | 15 + .../nogit/node_modules/.bin/mkdirp.cmd | 5 + .../node_modules/archiver/lib/archiver.js | 42 + .../archiver/lib/modules/core/index.js | 263 + .../archiver/lib/modules/core/queue.js | 58 + .../archiver/lib/modules/json/index.js | 71 + .../archiver/lib/modules/tar/index.js | 76 + .../archiver/lib/modules/zip/index.js | 39 + .../node_modules/archiver/lib/util/index.js | 193 + .../node_modules/buffer-crc32/index.js | 91 + .../node_modules/buffer-crc32/package.json | 56 + .../node_modules/file-utils/Gruntfile.js | 56 + .../archiver/node_modules/file-utils/index.js | 11 + .../node_modules/file-utils/lib/env.js | 163 + .../node_modules/file-utils/lib/file.js | 367 + .../node_modules/file-utils/lib/logger.js | 8 + .../node_modules/file-utils/lib/query.js | 82 + .../file-utils/node_modules/.bin/rimraf | 15 + .../file-utils/node_modules/.bin/rimraf.cmd | 5 + .../node_modules/findup-sync/Gruntfile.js | 25 + .../findup-sync/lib/findup-sync.js | 46 + .../node_modules/findup-sync/package.json | 64 + .../file-utils/node_modules/glob/glob.js | 728 ++ .../glob/node_modules/minimatch/minimatch.js | 1061 ++ .../node_modules/minimatch/node_modules/_._ | 0 .../glob/node_modules/minimatch/package.json | 56 + .../file-utils/node_modules/glob/package.json | 57 + .../node_modules/iconv-lite/README.md~ | 54 + .../node_modules/iconv-lite/encodings/big5.js | 9 + .../node_modules/iconv-lite/encodings/gbk.js | 9 + .../iconv-lite/encodings/singlebyte.js | 340 + .../iconv-lite/encodings/table/big5.js | 1 + .../iconv-lite/encodings/table/gbk.js | 1 + .../generation/generate-big5-table.js | 25 + .../generation/generate-singlebyte.js | 142 + .../node_modules/iconv-lite/index.js | 231 + .../node_modules/iconv-lite/package.json | 96 + .../node_modules/isbinaryfile/index.js | 87 + .../node_modules/isbinaryfile/package.json | 39 + .../node_modules/lru-cache/lib/lru-cache.js | 252 + .../node_modules/lru-cache/package.json | 50 + .../node_modules/minimatch/minimatch.js | 1055 ++ .../node_modules/minimatch/node_modules/_._ | 0 .../node_modules/minimatch/package.json | 56 + .../file-utils/node_modules/rimraf/bin.js | 33 + .../node_modules/rimraf/package.json | 72 + .../file-utils/node_modules/rimraf/rimraf.js | 248 + .../file-utils/node_modules/sigmund/bench.js | 283 + .../node_modules/sigmund/package.json | 58 + .../node_modules/sigmund/sigmund.js | 39 + .../node_modules/file-utils/package.json | 68 + .../node_modules/inherits/inherits.js | 1 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 51 + .../node_modules/lazystream/lib/lazystream.js | 52 + .../node_modules/lazystream/package.json | 61 + .../node_modules/lodash/dist/lodash.js | 6785 ++++++++++++ .../archiver/node_modules/lodash/package.json | 131 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 959 ++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 387 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 53 + .../node_modules/core-util-is/util.js | 106 + .../node_modules/isarray/build/build.js | 209 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 3 + .../node_modules/isarray/package.json | 51 + .../node_modules/string_decoder/index.js | 200 + .../node_modules/string_decoder/package.json | 52 + .../node_modules/readable-stream/package.json | 68 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 6 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../node_modules/tar-stream/extract.js | 194 + .../node_modules/tar-stream/headers.js | 218 + .../archiver/node_modules/tar-stream/index.js | 2 + .../tar-stream/node_modules/bl/bl.js | 205 + .../tar-stream/node_modules/bl/package.json | 55 + .../node_modules/end-of-stream/index.js | 61 + .../end-of-stream/node_modules/once/once.js | 20 + .../node_modules/once/package.json | 56 + .../node_modules/end-of-stream/package.json | 48 + .../tar-stream/node_modules/xtend/LICENCE | 19 + .../tar-stream/node_modules/xtend/index.js | 17 + .../tar-stream/node_modules/xtend/mutable.js | 15 + .../node_modules/xtend/package.json | 86 + .../archiver/node_modules/tar-stream/pack.js | 194 + .../node_modules/tar-stream/package.json | 69 + .../node_modules/zip-stream/lib/headers.js | 279 + .../node_modules/zip-stream/lib/util/index.js | 105 + .../node_modules/zip-stream/lib/zip-stream.js | 307 + .../crc32-stream/lib/crc32-stream.js | 44 + .../node_modules/crc32-stream/package.json | 64 + .../zip-stream/node_modules/debug/debug.js | 137 + .../node_modules/debug/lib/debug.js | 158 + .../node_modules/debug/package.json | 60 + .../lib/deflate-crc32-stream.js | 69 + .../deflate-crc32-stream/package.json | 69 + .../node_modules/lodash.defaults/index.js | 54 + .../node_modules/lodash._objecttypes/index.js | 20 + .../lodash._objecttypes/package.json | 75 + .../node_modules/lodash.keys/index.js | 36 + .../node_modules/lodash._isnative/index.js | 34 + .../lodash._isnative/package.json | 63 + .../node_modules/lodash._shimkeys/index.js | 38 + .../lodash._shimkeys/package.json | 78 + .../node_modules/lodash.isobject/index.js | 39 + .../node_modules/lodash.isobject/package.json | 85 + .../node_modules/lodash.keys/package.json | 87 + .../node_modules/lodash.defaults/package.json | 86 + .../node_modules/zip-stream/package.json | 74 + .../nogit/node_modules/archiver/package.json | 78 + .../nogit/node_modules/commander/.gitignore | 3 + .../nogit/node_modules/commander/index.js | 872 ++ .../nogit/node_modules/commander/package.json | 43 + .../nogit/node_modules/git-node/git.js | 17 + .../git-node/node_modules/git-fs-db/.zedstate | 1 + .../git-node/node_modules/git-fs-db/fs-db.js | 129 + .../node_modules/git-fs-db/package.json | 46 + .../git-node/node_modules/git-fs-db/tags | 16 + .../git-node/node_modules/git-net/.zedstate | 1 + .../git-node/node_modules/git-net/deline.js | 16 + .../git-node/node_modules/git-net/discover.js | 34 + .../git-node/node_modules/git-net/fetch.js | 97 + .../node_modules/git-net/node_modules/_._ | 0 .../node_modules/git-net/package.json | 50 + .../git-node/node_modules/git-net/pkt-line.js | 127 + .../git-node/node_modules/git-net/remote.js | 29 + .../node_modules/git-net/smart-http.js | 247 + .../git-node/node_modules/git-net/ssh.js | 86 + .../git-node/node_modules/git-net/tags | 15 + .../git-node/node_modules/git-net/tcp.js | 75 + .../node_modules/git-net/url-parse.js | 63 + .../git-node/node_modules/git-net/writable.js | 38 + .../git-node/node_modules/git-net/ws.js | 0 .../node_modules/git-node-platform/.zedstate | 1 + .../node_modules/git-node-platform/bops.js | 19 + .../node_modules/git-node-platform/deflate.js | 7 + .../node_modules/git-node-platform/fs.js | 122 + .../node_modules/git-node-platform/http.js | 43 + .../node_modules/git-node-platform/index.js | 11 + .../node_modules/git-node-platform/inflate.js | 7 + .../git-node-platform/node_modules/ssh2/TODO | 6 + .../node_modules/ssh2/lib/Channel.js | 834 ++ .../node_modules/ssh2/lib/Connection.js | 2526 +++++ .../node_modules/ssh2/lib/Parser.constants.js | 317 + .../node_modules/ssh2/lib/Parser.js | 793 ++ .../node_modules/ssh2/lib/SFTP/SFTPv3.js | 1853 ++++ .../node_modules/ssh2/lib/SFTP/Stats.js | 45 + .../node_modules/ssh2/lib/agent.js | 368 + .../node_modules/ssh2/lib/keyParser.js | 136 + .../node_modules/ssh2/lib/utils.js | 24 + .../ssh2/node_modules/asn1/lib/ber/errors.js | 13 + .../ssh2/node_modules/asn1/lib/ber/index.js | 27 + .../ssh2/node_modules/asn1/lib/ber/reader.js | 267 + .../ssh2/node_modules/asn1/lib/ber/types.js | 36 + .../ssh2/node_modules/asn1/lib/ber/writer.js | 317 + .../ssh2/node_modules/asn1/lib/index.js | 20 + .../ssh2/node_modules/asn1/package.json | 63 + .../node_modules/streamsearch/lib/sbmh.js | 213 + .../node_modules/streamsearch/package.json | 53 + .../node_modules/ssh2/package.json | 62 + .../node_modules/ssh2/util/build_pagent.bat | 2 + .../node_modules/ssh2/util/pagent.c | 88 + .../node_modules/ssh2/util/pagent.exe | Bin 0 -> 50688 bytes .../git-node-platform/package.json | 48 + .../node_modules/git-node-platform/sha1.js | 22 + .../git-node-platform/ssh-stream.js | 101 + .../node_modules/git-node-platform/ssh.js | 59 + .../node_modules/git-node-platform/stream.js | 107 + .../node_modules/git-node-platform/tags | 55 + .../node_modules/git-node-platform/tcp.js | 58 + .../node_modules/git-node-platform/trace.js | 37 + .../node_modules/js-git/art/architecture.svg | 389 + .../js-git/art/jsgit-sticker-sheet.svg | 790 ++ .../git-node/node_modules/js-git/js-git.js | 977 ++ .../git-pack-codec/apply-delta.js | 94 + .../node_modules/git-pack-codec/decode.js | 190 + .../node_modules/git-pack-codec/inflate.js | 56 + .../js-git/node_modules/git-pack-codec/min.js | 808 ++ .../node_modules/varint/decode.js | 33 + .../node_modules/varint/encode.js | 17 + .../node_modules/varint/index.js | 22 + .../node_modules/varint/package.json | 47 + .../node_modules/git-pack-codec/package.json | 47 + .../git-node/node_modules/js-git/package.json | 54 + .../node_modules/js-git/specs/high/_._ | 0 .../node_modules/js-git/specs/low/_._ | 0 .../node_modules/push-to-pull/.zedstate | 1 + .../node_modules/push-to-pull/package.json | 50 + .../git-node/node_modules/push-to-pull/tags | 11 + .../node_modules/push-to-pull/transform.js | 39 + .../nogit/node_modules/git-node/package.json | 50 + .../node_modules/global-tunnel/.gitignore | 5 + .../nogit/node_modules/global-tunnel/index.js | 221 + .../node_modules/global-tunnel/lib/agents.js | 57 + .../node_modules/global-tunnel/package.json | 46 + .../nogit/node_modules/ini/ini.js | 174 + .../nogit/node_modules/ini/package.json | 50 + .../nogit/node_modules/mkdirp/bin/cmd.js | 33 + .../nogit/node_modules/mkdirp/index.js | 97 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 66 + .../nogit/node_modules/mkdirp/package.json | 57 + .../node_modules/nogit/package.json | 42 + packages/NoGit.0.0.8/readme.txt | 56 + packages/NoGit.0.0.8/tools/bin_tools.ps1 | 64 + packages/NoGit.0.0.8/tools/install.ps1 | 8 + packages/NoGit.0.0.8/tools/uninstall.ps1 | 6 + .../Node.js.0.10.28/Node.js.0.10.28.nupkg | Bin 0 -> 2809962 bytes .../Node.js.0.10.28/content/.bin/node.cmd | 3 + packages/Node.js.0.10.28/node.exe | Bin 0 -> 6956256 bytes packages/Node.js.0.10.28/readme.txt | 50 + packages/Node.js.0.10.28/tools/bin_tools.ps1 | 64 + packages/Node.js.0.10.28/tools/install.ps1 | 8 + packages/Node.js.0.10.28/tools/uninstall.ps1 | 6 + 2581 files changed, 315857 insertions(+), 1171 deletions(-) create mode 100644 StockManMVC/.bin/bower.cmd create mode 100644 StockManMVC/.bin/bower_components/StockManMVC/.bower.json create mode 100644 StockManMVC/.bin/bower_components/StockManMVC/bower.json create mode 100644 StockManMVC/.bin/bower_components/cldr-data/.bower.json create mode 100644 StockManMVC/.bin/bower_components/cldr-data/DCO.md create mode 100644 StockManMVC/.bin/bower_components/cldr-data/LICENSE-MIT create mode 100644 StockManMVC/.bin/bower_components/cldr-data/README.md create mode 100644 StockManMVC/.bin/bower_components/cldr-data/bower.json create mode 100644 StockManMVC/.bin/bower_components/cldr-data/index.json create mode 100644 StockManMVC/.bin/bower_components/cldrjs/.bower.json create mode 100644 StockManMVC/.bin/bower_components/cldrjs/.bowerrc create mode 100644 StockManMVC/.bin/bower_components/cldrjs/.gitignore create mode 100644 StockManMVC/.bin/bower_components/cldrjs/.jshintrc create mode 100644 StockManMVC/.bin/bower_components/cldrjs/CHANGELOG.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/DCO.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/Gruntfile.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/LICENSE-MIT create mode 100644 StockManMVC/.bin/bower_components/cldrjs/README.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/bower.json create mode 100644 StockManMVC/.bin/bower_components/cldrjs/dist/cldr.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/dist/cldr/event.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/dist/cldr/supplemental.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/dist/cldr/unresolved.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/dist/node_main.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/core/attributes.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/core/constructor.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/core/get.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/core/load.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/core/main.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/event_get.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_off.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_on.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_once.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/off.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/on.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/event/once.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_allowed.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_preferred.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_first_day.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_min_days.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/api/unresolved/get.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/asset/jquery.png create mode 100644 StockManMVC/.bin/bower_components/cldrjs/doc/bundle_lookup_matcher.md create mode 100644 StockManMVC/.bin/bower_components/cldrjs/package.json create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/.dist_jshintrc create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/.jshintrc create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/intro.min.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/intro_core.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/intro_event.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/intro_supplemental.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/intro_unresolved.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/node_main.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/build/outro.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/bundle/lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/bundle/parent_lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/create_error.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/presence.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/function.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/path.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/plain_object.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/string.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core/likely_subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core/load.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core/remove_likely_subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core/set_available_bundles.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/core/subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/event.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/item/get_resolved.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/item/lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/path/normalize.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/resource/get.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/resource/set.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/supplemental.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/supplemental/main.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/unresolved.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/always_array.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/array/for_each.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/array/is_array.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/array/some.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/is_plain_object.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/json/merge.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/src/util/object/keys.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/.jshintrc create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/functional.html create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/functional.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/functional/core.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/functional/event.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit.html create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/parent_lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core/likely_subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core/load.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core/remove_likely_subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core/set_available_bundles.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/core/subtags.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/item/lookup.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/path/normalize.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/get.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/set.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/supplemental.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit/util/json/merge.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.html create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.js create mode 100644 StockManMVC/.bin/bower_components/cldrjs/test/util.js create mode 100644 StockManMVC/.bin/bower_components/globalize/.bower.json create mode 100644 StockManMVC/.bin/bower_components/globalize/AUTHORS.txt create mode 100644 StockManMVC/.bin/bower_components/globalize/Gruntfile.js create mode 100644 StockManMVC/.bin/bower_components/globalize/LICENSE.txt create mode 100644 StockManMVC/.bin/bower_components/globalize/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/bower.json create mode 100644 StockManMVC/.bin/bower_components/globalize/browserstack.json create mode 100644 StockManMVC/.bin/bower_components/globalize/chore/release.sh create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/currency.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/message.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/number.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/plural.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/relative-time.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/unit.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/currency.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/message.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/number.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/plural.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/relative-time.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/globalize/unit.js create mode 100644 StockManMVC/.bin/bower_components/globalize/dist/node-main.js create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/core/constructor.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/core/load.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/core/locale.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/currency/currency-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/date/date-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/date/date-parser.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/message/load-messages.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/message/message-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/number/number-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/number/number-parser.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/plural/plural-generator.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/relative-time/relative-time-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/api/unit/unit-formatter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/cldr.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-default-locale-not-defined.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-cldr.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-type.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-value.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-cldr.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-parameter.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-plural-module.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-par-missing-key.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-par-out-of-range.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/error/e-unsupported.md create mode 100644 StockManMVC/.bin/bower_components/globalize/doc/migrating-from-0.x.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/amd-bower/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/amd-bower/index.html create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/amd-bower/main.js create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/amd-bower/messages/en.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/amd-bower/package.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/app/index.js create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/index-template.html create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ar.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/de.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/en.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/es.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/pt.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ru.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/zh.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/package.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/webpack-config.js create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/app.js create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/cldr.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/development.html create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/messages.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/package.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/production.html create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/node-npm/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/node-npm/main.js create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/node-npm/messages/en.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/node-npm/package.json create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/README.md create mode 100644 StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/index.html create mode 100644 StockManMVC/.bin/bower_components/globalize/package.json create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-core-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-core.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-currency-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-currency.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-date-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-message-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-message.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-number-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-number.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-plural-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-plural.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-unit-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro-unit.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/intro.min.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/node-main.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/build/outro.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/create-error.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/create-error/invalid-parameter-value.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/create-error/plural-module-presence.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/create-error/unsupported-feature.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/format-message.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/runtime-bind.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/runtime-key.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/cldr.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/default-locale.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/message-bundle.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/message-presence.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/message-type.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-presence.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-range.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/array.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/currency.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/locale.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/message-variables.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/number.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plain-object.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plural-type.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/string.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/core-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/core.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/code-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/name-format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/name-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/supplemental-override.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/symbol-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/currency/unit-patterns.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/day-of-week.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/day-of-year.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/distance-in-days.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/expand-pattern.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/first-day-of-week.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/format-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/is-leap-year.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/last-day-of-month.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/milliseconds-in-day.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/parse-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/parse.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/parser-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/pattern-re.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/start-of.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/timezone-hour-format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/tokenizer-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/tokenizer.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/date/week-days.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/message-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/message.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/message/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/message/formatter-runtime-bind.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/format-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/format/grouping-separator.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/format/integer-fraction-digits.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/format/significant-digits.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/number-re.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/numbering-system-digits-map.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/numbering-system.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/parse-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/parse.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/parser-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/pattern-properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/pattern-re.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/pattern.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/symbol.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/symbol/inverted-map.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/symbol/map.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/number/symbol/name.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/plural-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/plural.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/plural/generator-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/relative-time-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/relative-time.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/relative-time/format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/relative-time/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/relative-time/properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit-runtime.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit/categories.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit/format.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit/formatter-fn.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit/get.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/unit/properties.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/always-array.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/always-cldr.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/date/set-date.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/date/set-month.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/function-name.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/is-plain-object.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/number/round.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/number/to-precision.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/number/truncate.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/object/extend.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/object/filter.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/object/omit.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/object/values.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/out-of-range.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/regexp/escape.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/regexp/n.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/regexp/not-s.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/string/hash.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/string/pad.js create mode 100644 StockManMVC/.bin/bower_components/globalize/src/util/to-string.js create mode 100644 StockManMVC/.bin/git.cmd create mode 100644 StockManMVC/.bin/node.cmd create mode 100644 StockManMVC/Test.html create mode 100644 StockManMVC/bower_components/bower.json/.bower.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/de/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/el/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/es/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/fi/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/fr/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/ja/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/pt/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/root/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/ru/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/zh-Hant/suppressions.json create mode 100644 StockManMVC/bower_components/cldr-data/segments/zh/suppressions.json create mode 100644 StockManMVC/bower_components/cldrjs/dist/cldr.js create mode 100644 StockManMVC/bower_components/cldrjs/dist/cldr/event.js create mode 100644 StockManMVC/bower_components/cldrjs/dist/cldr/supplemental.js create mode 100644 StockManMVC/bower_components/cldrjs/dist/cldr/unresolved.js create mode 100644 StockManMVC/bower_components/cldrjs/dist/node_main.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/currency.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/date.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/message.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/number.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/plural.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/relative-time.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize-runtime/unit.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/currency.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/date.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/message.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/number.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/plural.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/relative-time.js create mode 100644 StockManMVC/bower_components/globalize/dist/globalize/unit.js create mode 100644 StockManMVC/bower_components/globalize/dist/node-main.js create mode 100644 StockManMVC/node_modules/lodash/_baseIsArguments.js create mode 100644 StockManMVC/node_modules/lodash/_defineProperty.js delete mode 100644 StockManMVC/node_modules/lodash/_nativeDefineProperty.js create mode 100644 packages/Bower.1.3.11/Bower.1.3.11.nupkg create mode 100644 packages/Bower.1.3.11/content/.bin/bower.cmd create mode 100644 packages/Bower.1.3.11/node_modules/bower/Gruntfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/bin/bower create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/cache/clean.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/cache/list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/completion.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/help.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/home.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/info.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/init.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/install.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/link.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/lookup.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/prune.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/register.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/search.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/uninstall.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/update.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/commands/version.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/config.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/Manager.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/PackageRepository.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/Project.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/ResolveCache.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolverFactory.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/FsResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/GitFsResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/GitHubResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/GitRemoteResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/GitResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/Resolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/SvnResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/UrlResolver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/resolvers/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/core/scripts.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/renderers/JsonRenderer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/renderers/StandardRenderer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/renderers/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/analytics.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/cmd.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/createError.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/createLink.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/download.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/extract.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/md5.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/readJson.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/removeIgnores.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/rootCheck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/semver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/template.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/lib/util/validLink.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/abbrev/abbrev.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/abbrev/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/archy/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/archy/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/bl.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/node_modules/readable-stream/writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bl/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/boom/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/boom/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/boom/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/lib/Config.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/lib/util/defaults.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/lib/util/expand.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/lib/util/paths.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/lib/util/rc.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/graceful-fs/graceful-fs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/graceful-fs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/graceful-fs/polyfills.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/append.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/collect.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/combine.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/compact.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/difference.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/findIndex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/findLast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/findLastIndex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/flatten.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/forEach.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/indexOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/insert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/intersection.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/invoke.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/join.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/lastIndexOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/pick.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/range.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/reduceRight.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/remove.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/removeAll.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/shuffle.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/slice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/sort.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/sortBy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/split.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/toLookup.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/union.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/unique.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/xor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/array/zip.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/forEach.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/make_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/size.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/collection/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/dayOfTheYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/diff.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/i18n/de-DE.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/i18n/en-US.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/i18n/pt-BR.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/i18n_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/isLeapYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/isSame.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/parseIso.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/quarter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/startOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/strftime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/timezoneAbbr.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/timezoneOffset.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/totalDaysInMonth.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/totalDaysInYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/date/weekOfTheYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/awaitDelay.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/bind.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/compose.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/constant.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/debounce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/func.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/identity.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/makeIterator_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/partial.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/prop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/series.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/throttle.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/timeout.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/function/times.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/clone.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/createObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/ctorApply.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/deepClone.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/defaults.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/inheritPrototype.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/is.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isArguments.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isArray.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isBoolean.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isDate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isEmpty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isFinite.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isFunction.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isInteger.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isKind.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isNaN.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isNull.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isNumber.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isPlainObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isRegExp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isUndefined.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/isnt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/kindOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/toArray.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/toNumber.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/lang/toString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/ceil.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/clamp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/countSteps.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/floor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/inRange.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/isNear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/lerp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/loop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/norm.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/math/round.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/MAX_INT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/MAX_UINT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/MIN_INT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/abbreviate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/currencyFormat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/enforcePrecision.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/isNaN.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/nth.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/ordinal.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/pad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/rol.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/ror.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/sign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/toInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/toUInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/number/toUInt31.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/bindAll.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/deepEquals.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/deepFillIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/deepMatches.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/deepMixIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/equals.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/fillIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/forIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/forOwn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/functions.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/get.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/has.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/hasOwn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/keys.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/matches.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/merge.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/mixIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/namespace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/pick.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/set.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/size.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/unset.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/object/values.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/decode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/encode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/getParam.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/getQuery.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/parse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/queryString/setParam.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/choice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/guid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/rand.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/randBit.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/randBool.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/randHex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/randInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/randSign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/random/random.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/WHITE_SPACES.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/camelCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/crop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/endsWith.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/escapeHtml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/escapeRegExp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/escapeUnicode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/hyphenate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/insert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/interpolate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/lowerCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/lpad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/ltrim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/makePath.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/normalizeLineBreaks.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/pascalCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/properCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/removeNonASCII.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/removeNonWord.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/repeat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/replace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/replaceAccents.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/rpad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/rtrim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/sentenceCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/slugify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/startsWith.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/stripHtmlTags.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/trim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/truncate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/typecast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/unCamelCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/underscore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/unescapeHtml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/unescapeUnicode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/unhyphenate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/string/upperCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/time.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/time/convert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/time/now.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/time/parseMs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/mout/time/toTimeString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/optimist/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/optimist/node_modules/minimist/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/optimist/node_modules/minimist/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/optimist/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/osenv/osenv.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/node_modules/osenv/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-config/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-endpoint-parser/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-endpoint-parser/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/Gruntfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/lib/json.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/lib/util/createError.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/lib/util/isComponent.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/deep-extend/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/deep-extend/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/graceful-fs/graceful-fs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/graceful-fs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/graceful-fs/polyfills.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/intersect/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/intersect/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/node_modules/intersect/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-json/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-logger/lib/Logger.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-logger/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/Client.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/Gruntfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/lookup.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/register.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/search.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/unregister.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/util/Cache.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/util/createError.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/lib/util/md5.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/async/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/async/lib/async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/async/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/graceful-fs/graceful-fs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/graceful-fs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/graceful-fs/polyfills.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/lru-cache/bench.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/lru-cache/lib/lru-cache.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/lru-cache/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/mkdirp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/mkdirp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request-replay/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request-replay/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/lib/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/lib/debug.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/lib/getSafe.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/aws-sign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/aws-sign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/cookie-jar/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/cookie-jar/jar.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/cookie-jar/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/client.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/crypto.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/server.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/lib/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/hawk/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/oauth-sign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/oauth-sign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/qs/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/qs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/tunnel-agent/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/node_modules/tunnel-agent/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/node_modules/request/request.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/bower-registry-client/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/bin/cdl.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/cardinal.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/lib/highlight.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/lib/highlightFile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/lib/highlightFileSync.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/node_modules/ansicolors/ansicolors.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/node_modules/ansicolors/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/node_modules/redeyed/config.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/node_modules/redeyed/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/node_modules/redeyed/redeyed.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/settings.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/themes/default.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/themes/empty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/themes/hide-semicolons.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/themes/tomorrow-night.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cardinal/utl.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/has-ansi/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/strip-ansi/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/supports-color/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chalk/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chmodr/chmodr.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/chmodr/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/bin/generate-color-images create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/lib/xterm-colors.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/lib/xterm-match.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/auto-bind.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/lazy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/d/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/@@iterator/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/@@iterator/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/@@iterator/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/@@iterator/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/_compare-by-length.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/binary-search.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/clear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/compact.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/concat/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/concat/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/concat/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/concat/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/copy-within/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/copy-within/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/copy-within/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/copy-within/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/diff.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/e-index-of.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/e-last-index-of.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/entries/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/entries/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/entries/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/entries/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/exclusion.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/fill/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/fill/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/fill/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/fill/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/filter/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/filter/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/filter/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/filter/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find-index/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find-index/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find-index/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find-index/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/find/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/first-index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/first.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/flatten.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/for-each-right.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/group.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/indexes-of.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/intersection.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/is-copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/is-uniq.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/keys/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/keys/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/keys/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/keys/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/last-index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/last.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/map/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/map/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/map/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/map/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/remove.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/separate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/slice/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/slice/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/slice/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/slice/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/some-right.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/splice/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/splice/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/splice/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/splice/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/uniq.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/values/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/values/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/values/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/#/values/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/_is-extensible.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/_sub-array-dummy-safe.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/_sub-array-dummy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/from/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/from/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/from/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/from/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/generate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/is-plain-array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/of/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/of/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/of/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/of/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/to-array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/array/valid-array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/boolean/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/boolean/is-boolean.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/days-in-month.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/floor-day.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/floor-month.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/floor-year.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/format.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/is-date.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/date/valid-date.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/#/throw.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/custom.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/is-error.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/error/valid-error.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/compose.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/curry.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/lock.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/not.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/partial.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/#/spread.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/_define-length.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/constant.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/identity.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/invoke.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/is-arguments.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/is-function.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/noop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/function/valid-function.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/global.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/_pack-ieee754.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/_unpack-ieee754.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/acosh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/acosh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/acosh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/acosh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/asinh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/asinh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/asinh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/asinh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/atanh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/atanh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/atanh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/atanh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cbrt/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cbrt/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cbrt/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cbrt/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/clz32/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/clz32/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/clz32/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/clz32/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cosh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cosh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cosh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/cosh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/expm1/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/expm1/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/expm1/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/expm1/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/fround/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/fround/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/fround/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/fround/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/hypot/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/hypot/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/hypot/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/hypot/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/imul/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/imul/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/imul/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/imul/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log10/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log10/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log10/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log10/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log1p/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log1p/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log1p/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log1p/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log2/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log2/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log2/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/log2/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sign/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sign/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sign/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sinh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sinh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sinh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/sinh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/tanh/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/tanh/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/tanh/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/tanh/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/trunc/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/trunc/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/trunc/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/math/trunc/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/#/chain.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/for-of.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/get.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/is-iterable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-iterator/valid-iterable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/is-native-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/is-symbol.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/polyfill.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/node_modules/es6-symbol/valid-symbol.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/#/pad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/epsilon/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/epsilon/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/epsilon/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-finite/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-finite/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-finite/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-finite/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-integer/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-integer/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-integer/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-integer/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-nan/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-nan/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-nan/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-nan/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-number.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-safe-integer/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-safe-integer/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-safe-integer/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/is-safe-integer/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/max-safe-integer/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/max-safe-integer/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/max-safe-integer/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/min-safe-integer/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/min-safe-integer/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/min-safe-integer/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/to-integer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/to-pos-integer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/number/to-uint32.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/_iterate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/assign/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/assign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/assign/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/assign/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/clear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/compact.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/compare.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/copy-deep.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/count.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/create.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/eq.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/first-key.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/flatten.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/for-each.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/get-property-names.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-array-like.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-callable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-copy-deep.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-empty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-object.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is-plain-object.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/is.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/key-of.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/keys/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/keys/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/keys/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/keys/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/map-keys.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/mixin-prototypes.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/mixin.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/normalize-options.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/primitive-set.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/safe-traverse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/set-prototype-of/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/set-prototype-of/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/set-prototype-of/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/set-prototype-of/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/to-array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/valid-callable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/valid-object.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/object/valid-value.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/is-sticky.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/is-unicode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/match/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/match/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/match/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/match/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/replace/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/replace/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/replace/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/search/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/search/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/search/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/search/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/split/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/split/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/split/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/split/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/sticky/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/unicode/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/escape.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/is-reg-exp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/reg-exp/valid-reg-exp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/@@iterator/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/@@iterator/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/@@iterator/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/@@iterator/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/at.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/camel-to-hyphen.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/capitalize.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/case-insensitive-compare.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/code-point-at/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/code-point-at/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/code-point-at/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/code-point-at/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/contains/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/contains/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/contains/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/contains/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/ends-with/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/ends-with/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/ends-with/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/ends-with/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/hyphen-to-camel.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/indent.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/last.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/normalize/_data.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/normalize/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/normalize/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/normalize/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/normalize/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/pad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/plain-replace-all.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/plain-replace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/repeat/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/repeat/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/repeat/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/repeat/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/starts-with/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/starts-with/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/starts-with/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/#/starts-with/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/format-method.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/from-code-point/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/from-code-point/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/from-code-point/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/from-code-point/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/is-string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/raw/implement.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/raw/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/raw/is-implemented.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/es5-ext/string/raw/shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/ext/async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/ext/dispose.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/ext/max-age.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/ext/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/ext/ref-counter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/lib/configure-map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/lib/methods.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/lib/registered-extensions.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/lib/resolve-length.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/methods-plain.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/methods.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/all-off.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/has-listeners.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/pipe.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/unify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/lru-queue/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/lru-queue/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/lru-queue/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/node_modules/lru-queue/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/normalizers/get-1.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/normalizers/get-fixed.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/normalizers/get-primitive-fixed.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/normalizers/get.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/normalizers/primitive.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/plain.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/memoizee/profile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/next-tick/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/next-tick/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/next-tick/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/next-tick/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/CHANGES create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/delay.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/max-timeout.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/once.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/node_modules/timers-ext/valid-timeout.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/throbber.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cli-color/trim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/configstore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/object-assign/object-assign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/object-assign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/misc/compare.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/misc/perf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/rng-browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/rng.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/node_modules/uuid/uuid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/configstore/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/core-util-is/float.patch create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/core-util-is/lib/util.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/core-util-is/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/core-util-is/util.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cryptiles/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cryptiles/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/cryptiles/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/Gruntfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/bin/decompress-zip create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/download-test-assets.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/lib/decompress-zip.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/lib/extractors.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/lib/file-details.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/lib/signatures.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/lib/structures.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/lib/vars.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/buffers/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/buffers/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/chainsaw/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/node_modules/chainsaw/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/perf/loop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/binary/perf/small.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/nopt/bin/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/nopt/lib/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/nopt/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/float.patch create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/readable-stream/writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/bin/touch.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/node_modules/nopt/bin/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/node_modules/nopt/lib/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/node_modules/nopt/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/node_modules/touch/touch.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/decompress-zip/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/esprima/bin/esparse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/esprima/bin/esvalidate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/esprima/esprima.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/esprima/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/forever-agent/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/forever-agent/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/lib/form_data.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/async/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/async/lib/async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/async/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/node_modules/combined-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/form-data/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream-ignore/ignore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream-ignore/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/fstream.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/abstract.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/collect.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/dir-reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/dir-writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/file-reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/file-writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/get-type.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/link-reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/link-writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/proxy-reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/proxy-writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/socket-reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/lib/writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/fstream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/glob/glob.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/glob/node_modules/once/once.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/glob/node_modules/once/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/glob/oh-my-glob.gif create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/glob/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/graceful-fs/fs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/graceful-fs/graceful-fs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/graceful-fs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/graceful-fs/polyfills.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/bin/handlebars create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars.runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/ast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/helpers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/parser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/printer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/exception.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/safe-string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/handlebars/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/amd/precompiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars.runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/exception.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/safe-string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/handlebars/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/cjs/precompiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.amd.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.amd.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.runtime.amd.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.runtime.amd.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/dist/handlebars.runtime.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars.runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/ast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/helpers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/parser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/printer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/compiler/visitor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/exception.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/safe-string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/handlebars/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/lib/precompiler.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/optimist/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/optimist/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/bin/uglifyjs create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/ast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/compress.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/mozilla-ast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/output.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/parse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/scope.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/sourcemap.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/lib/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/async/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/async/lib/async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/async/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/mini-require.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/intercept.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/node_modules/uglify-js/tools/node.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/print-script create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/handlebars/runtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/hoek/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/hoek/lib/escape.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/hoek/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/hoek/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/lib/parser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/lib/signer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/lib/util.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/lib/verify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/ber/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/ber/types.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/asn1/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/assert-plus/assert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/assert-plus/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/README.old create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/ctf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/ctio.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/ctype.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/tools/jsl.conf create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/node_modules/ctype/tools/jsstyle create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/http-signature/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inherits/inherits.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inherits/inherits_browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inherits/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/inquirer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/objects/choice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/objects/choices.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/objects/separator.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/checkbox.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/confirm.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/expand.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/input.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/password.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/prompts/rawlist.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/ui/baseUI.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/ui/bottom-bar.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/ui/prompt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/utils/events.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/utils/tty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/lib/utils/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/node_modules/ansi-regex/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/node_modules/ansi-regex/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/node_modules/figures/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/node_modules/figures/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/inquirer/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/lib/providers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/lib/push.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/async/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/async/lib/async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/async/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/inquirer.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/objects/choice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/objects/choices.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/objects/separator.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/base.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/checkbox.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/confirm.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/expand.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/input.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/password.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/prompts/rawlist.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/ui/baseUI.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/ui/bottom-bar.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/ui/prompt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/utils/events.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/utils/tty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/lib/utils/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/inquirer/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash._isnative/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash._isnative/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash._objecttypes/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash._objecttypes/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.debounce/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.debounce/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.isfunction/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.isfunction/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.isobject/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.isobject/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.now/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/lodash.now/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/object-assign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/object-assign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/node_modules/minimist/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/node_modules/minimist/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/node_modules/osx-release/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/node_modules/osx-release/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/node_modules/osx-release/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/node_modules/os-name/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/insight/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/is-root/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/is-root/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/isarray/build/build.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/isarray/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/isarray/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/isarray/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/bin/js-yaml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/bower.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/index_browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/common.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/dumper.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/exception.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/loader.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/mark.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema/core.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema/default_full.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/schema/json.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/binary.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/bool.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/float.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/int.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/js/function.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/merge.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/null.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/omap.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/pairs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/seq.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/set.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/str.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/lib/js-yaml/type/timestamp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/append.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/count.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/help.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/store.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action/version.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/action_container.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/argparse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/const.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/lib/namespace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/argparse/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore.string/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore.string/dist/underscore.string.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore.string/lib/underscore.string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore.string/libpeerconnection.log create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore.string/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/CNAME create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/favicon.ico create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/underscore-min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/node_modules/underscore/underscore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/js-yaml/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/json-stringify-safe/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/json-stringify-safe/stringify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/junk/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/junk/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lockfile/lockfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lockfile/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.underscore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/dist/lodash.underscore.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/lodash.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lodash/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lru-cache/lib/lru-cache.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/lru-cache/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mime/mime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mime/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mime/types/mime.types create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mime/types/node.types create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/minimatch/minimatch.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/minimatch/node_modules/sigmund/bench.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/minimatch/node_modules/sigmund/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/minimatch/node_modules/sigmund/sigmund.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/minimatch/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mkdirp/bin/cmd.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mkdirp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mkdirp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/append.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/collect.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/combine.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/compact.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/difference.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/equals.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/findIndex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/findLast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/findLastIndex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/flatten.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/forEach.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/groupBy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/indexOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/insert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/intersection.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/invoke.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/join.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/last.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/lastIndexOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/pick.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/range.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/reduceRight.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/remove.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/removeAll.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/shuffle.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/slice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/sort.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/sortBy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/split.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/toLookup.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/union.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/unique.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/xor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/array/zip.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/forEach.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/make_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/size.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/collection/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/dayOfTheYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/diff.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/i18n/de-DE.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/i18n/en-US.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/i18n/pt-BR.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/i18n_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/isLeapYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/isSame.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/parseIso.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/quarter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/startOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/strftime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/timezoneAbbr.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/timezoneOffset.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/totalDaysInMonth.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/totalDaysInYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/date/weekOfTheYear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/awaitDelay.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/bind.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/compose.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/constant.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/debounce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/func.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/identity.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/makeIterator_.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/partial.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/prop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/series.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/throttle.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/timeout.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/times.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/function/wrap.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/GLOBAL.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/clone.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/createObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/ctorApply.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/deepClone.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/deepEquals.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/defaults.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/inheritPrototype.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/is.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isArguments.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isArray.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isBoolean.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isDate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isEmpty.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isFinite.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isFunction.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isInteger.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isKind.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isNaN.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isNull.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isNumber.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isPlainObject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isPrimitive.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isRegExp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isUndefined.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/isnt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/kindOf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/toArray.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/toNumber.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/lang/toString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/ceil.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/clamp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/countSteps.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/floor.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/inRange.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/isNear.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/lerp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/loop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/norm.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/math/round.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/MAX_INT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/MAX_SAFE_INTEGER.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/MAX_UINT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/MIN_INT.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/abbreviate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/currencyFormat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/enforcePrecision.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/isNaN.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/nth.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/ordinal.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/pad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/rol.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/ror.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/sign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/toInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/toUInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/number/toUInt31.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/bindAll.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/deepFillIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/deepMatches.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/deepMixIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/equals.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/every.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/fillIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/filter.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/find.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/forIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/forOwn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/functions.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/get.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/has.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/hasOwn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/keys.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/map.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/matches.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/max.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/merge.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/mixIn.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/namespace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/omit.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/pick.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/pluck.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/reduce.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/reject.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/result.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/set.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/size.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/some.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/unset.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/object/values.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/decode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/encode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/getParam.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/getQuery.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/parse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/queryString/setParam.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/choice.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/guid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/rand.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randBit.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randBool.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randHex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randInt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randSign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/randString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/random/random.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/WHITE_SPACES.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/camelCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/contains.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/crop.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/endsWith.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/escapeHtml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/escapeRegExp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/escapeUnicode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/hyphenate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/insert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/interpolate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/lowerCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/lpad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/ltrim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/makePath.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/normalizeLineBreaks.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/pascalCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/properCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/removeNonASCII.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/removeNonWord.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/repeat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/replace.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/replaceAccents.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/rpad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/rtrim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/sentenceCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/slugify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/startsWith.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/stripHtmlTags.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/trim.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/truncate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/typecast.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/unCamelCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/underscore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/unescapeHtml.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/unescapeUnicode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/unhyphenate.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/string/upperCase.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/time.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/time/convert.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/time/now.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/time/parseMs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mout/time/toTimeString.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mute-stream/mute.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/mute-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/node-uuid/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/node-uuid/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/node-uuid/uuid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/nopt/bin/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/nopt/lib/nopt.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/nopt/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/opn/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/opn/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/opn/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/opn/xdg-open create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/osenv/osenv.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/osenv/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/lib/arrayRemove.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/node_modules/q/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/node_modules/q/q.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/node_modules/q/queue.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/p-throttler/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/config-chain/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/config-chain/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/config-chain/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/got/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/got/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/ini/ini.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/ini/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/config-defs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/find-prefix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/get-credentials-by-uri.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/load-cafile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/load-prefix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/load-uid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/nerf-dart.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/set-credentials-by-uri.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/lib/set-user.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/npmconf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/npmconf/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/object-assign/object-assign.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/object-assign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/once/once.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/once/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/proto-list/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/proto-list/proto-list.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/registry-url/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/registry-url/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/uid-number/get-uid-gid.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/uid-number/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/node_modules/uid-number/uid-number.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/package-json/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/node_modules/read/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/node_modules/read/lib/read.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/node_modules/read/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/node_modules/read/rs.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/promptly/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/q/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/q/q.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/q/queue.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/has-color/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/has-color/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/strip-ansi/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/node_modules/chalk/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/readline2/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/node_modules/throttleit/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/node_modules/throttleit/example.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/node_modules/throttleit/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/node_modules/throttleit/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request-progress/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/disabled.appveyor.yml create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/lib/cookies.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/lib/copy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/lib/debug.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/lib/helpers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/lib/optional.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/aws-sign2/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/aws-sign2/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/caseless/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/caseless/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/client.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/crypto.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/server.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/lib/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/hawk/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/lib/custom.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/lib/mime.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/lib/node.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/mime-types/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/oauth-sign/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/oauth-sign/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/lib/parse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/lib/stringify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/lib/utils.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/qs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/stringstream/example.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/stringstream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/stringstream/stringstream.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/tunnel-agent/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/node_modules/tunnel-agent/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/request/request.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/retry/equation.gif create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/retry/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/retry/lib/retry.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/retry/lib/retry_operation.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/retry/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rimraf/bin.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rimraf/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rimraf/rimraf.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/Gruntfile.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/bower.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/component.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.aggregates.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.aggregates.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.all.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.all.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.all.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.all.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.async.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.async.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.async.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.async.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.backpressure.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.backpressure.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.binding.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.binding.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.coincidence.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.coincidence.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.core.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.core.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.core.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.core.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.experimental.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.experimental.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.joinpatterns.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.joinpatterns.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.compat.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.compat.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.extras.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.extras.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.lite.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.testing.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.testing.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.time.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.time.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.virtualtime.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/dist/rx.virtualtime.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/travis.sh create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.aggregates.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.all.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.async-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.async-tests.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.async.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.backpressure-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.backpressure-tests.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.backpressure.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.binding-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.binding.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.coincidence-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.coincidence.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.experimental.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.joinpatterns.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.testing.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.time-lite.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.time.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/rx/ts/rx.virtualtime.d.ts create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/bin/semver create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/foot.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/head.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/semver.browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/semver.browser.js.gz create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/semver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/semver.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/semver/semver.min.js.gz create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-filter/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-filter/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-map/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-map/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-reduce/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/array-reduce/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/jsonify/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/jsonify/lib/parse.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/jsonify/lib/stringify.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/node_modules/jsonify/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/shell-quote/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/sntp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/sntp/lib/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/sntp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/node_modules/ansi-regex/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/node_modules/ansi-regex/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/node_modules/strip-ansi/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/node_modules/strip-ansi/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/node_modules/strip-ansi/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string-length/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string_decoder/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/string_decoder/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/stringify-object/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/stringify-object/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/end-of-stream/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/end-of-stream/node_modules/once/once.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/end-of-stream/node_modules/once/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/end-of-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/mkdirp/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/mkdirp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/pump/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/pump/node_modules/once/once.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/pump/node_modules/once/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/pump/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/extract.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/headers.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/passthrough.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/readable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/transform.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/writable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/xtend/LICENCE create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/xtend/immutable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/xtend/mutable.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/node_modules/xtend/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/pack.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/node_modules/tar-stream/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tar-fs/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/through/LICENSE.APACHE2 create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/through/LICENSE.MIT create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/through/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/through/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tmp/domain-test.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tmp/lib/tmp.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tmp/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tmp/test-all.sh create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/generate-pubsuffix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/lib/cookie.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/lib/memstore.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/lib/pubsuffix.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/lib/store.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/node_modules/punycode/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/node_modules/punycode/punycode.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/tough-cookie/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/check.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/cli.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/bin/semver create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/foot.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/head.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/semver.browser.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/semver.browser.js.gz create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/semver.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/semver.min.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/node_modules/semver/semver.min.js.gz create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/node_modules/semver-diff/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/update-notifier/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/which/bin/which create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/which/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/which/which.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/wordwrap/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/wordwrap/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/wrappy/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/node_modules/wrappy/wrappy.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/package.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/colors.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/condense.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/indent.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/index.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/rpad.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/helpers/sum.js create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-cache.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-cache/clean.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-cache/list.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-home.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-info.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-init.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-install.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-link.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-list.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-lookup.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-prune.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-register.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-search.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-uninstall.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-update.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help-version.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/json/help.json create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/conflict-resolved.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/conflict.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/help-cache.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/help-generic.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/help.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/info.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/lookup.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/register.std create mode 100644 packages/Bower.1.3.11/node_modules/bower/templates/std/search-results.std create mode 100644 packages/Bower.1.3.11/readme.txt create mode 100644 packages/Bower.1.3.11/tools/bin_tools.ps1 create mode 100644 packages/Bower.1.3.11/tools/install.ps1 create mode 100644 packages/Bower.1.3.11/tools/uninstall.ps1 create mode 100644 packages/NoGit.0.0.8/NoGit.0.0.8.nupkg create mode 100644 packages/NoGit.0.0.8/content/.bin/git.cmd create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/bin/git.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/archive.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/clone.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/export.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/fetch.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/log.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/commands/ls-remote.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/lib/config.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/lib/utils.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/.bin/mkdirp create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/.bin/mkdirp.cmd create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/archiver.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/modules/core/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/modules/core/queue.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/modules/json/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/modules/tar/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/modules/zip/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/lib/util/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/buffer-crc32/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/buffer-crc32/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/Gruntfile.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/lib/env.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/lib/file.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/lib/logger.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/lib/query.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/.bin/rimraf create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/.bin/rimraf.cmd create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/findup-sync/Gruntfile.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/findup-sync/lib/findup-sync.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/findup-sync/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/glob/glob.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/glob/node_modules/minimatch/node_modules/_._ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/glob/node_modules/minimatch/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/glob/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/README.md~ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/encodings/big5.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/encodings/gbk.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/encodings/singlebyte.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/encodings/table/big5.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/encodings/table/gbk.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/generation/generate-big5-table.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/generation/generate-singlebyte.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/iconv-lite/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/isbinaryfile/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/isbinaryfile/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/lru-cache/lib/lru-cache.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/lru-cache/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/minimatch/minimatch.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/minimatch/node_modules/_._ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/minimatch/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/rimraf/bin.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/rimraf/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/rimraf/rimraf.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/sigmund/bench.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/sigmund/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/node_modules/sigmund/sigmund.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/file-utils/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/inherits/inherits.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/inherits/inherits_browser.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/inherits/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/lazystream/lib/lazystream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/lazystream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/lodash/dist/lodash.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/lodash/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/duplex.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/core-util-is/util.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/isarray/build/build.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/passthrough.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/readable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/transform.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/readable-stream/writable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/extract.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/headers.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/bl/bl.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/bl/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/end-of-stream/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/once.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/end-of-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/xtend/LICENCE create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/xtend/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/xtend/mutable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/node_modules/xtend/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/pack.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/tar-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/lib/headers.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/lib/util/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/lib/zip-stream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/crc32-stream/lib/crc32-stream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/crc32-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/debug/debug.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/debug/lib/debug.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/debug/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/deflate-crc32-stream/lib/deflate-crc32-stream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/deflate-crc32-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash._objecttypes/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash._objecttypes/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash._isnative/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash._isnative/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash._shimkeys/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash._shimkeys/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash.isobject/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/node_modules/lodash.isobject/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/node_modules/lodash.keys/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/node_modules/lodash.defaults/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/node_modules/zip-stream/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/archiver/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/commander/.gitignore create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/commander/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/commander/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/git.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-fs-db/.zedstate create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-fs-db/fs-db.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-fs-db/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-fs-db/tags create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/.zedstate create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/deline.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/discover.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/fetch.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/node_modules/_._ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/pkt-line.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/remote.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/smart-http.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/ssh.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/tags create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/tcp.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/url-parse.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/writable.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-net/ws.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/.zedstate create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/bops.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/deflate.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/fs.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/http.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/inflate.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/TODO create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/Channel.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/Connection.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/Parser.constants.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/Parser.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/SFTP/SFTPv3.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/SFTP/Stats.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/agent.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/keyParser.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/lib/utils.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/ber/errors.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/ber/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/ber/reader.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/ber/types.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/ber/writer.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/lib/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/asn1/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/streamsearch/lib/sbmh.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/node_modules/streamsearch/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/util/build_pagent.bat create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/util/pagent.c create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/node_modules/ssh2/util/pagent.exe create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/sha1.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/ssh-stream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/ssh.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/stream.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/tags create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/tcp.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/git-node-platform/trace.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/art/architecture.svg create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/art/jsgit-sticker-sheet.svg create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/js-git.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/apply-delta.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/decode.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/inflate.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/min.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/node_modules/varint/decode.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/node_modules/varint/encode.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/node_modules/varint/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/node_modules/varint/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/node_modules/git-pack-codec/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/specs/high/_._ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/js-git/specs/low/_._ create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/push-to-pull/.zedstate create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/push-to-pull/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/push-to-pull/tags create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/node_modules/push-to-pull/transform.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/git-node/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/global-tunnel/.gitignore create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/global-tunnel/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/global-tunnel/lib/agents.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/global-tunnel/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/ini/ini.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/ini/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/mkdirp/bin/cmd.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/mkdirp/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/node_modules/mkdirp/package.json create mode 100644 packages/NoGit.0.0.8/node_modules/nogit/package.json create mode 100644 packages/NoGit.0.0.8/readme.txt create mode 100644 packages/NoGit.0.0.8/tools/bin_tools.ps1 create mode 100644 packages/NoGit.0.0.8/tools/install.ps1 create mode 100644 packages/NoGit.0.0.8/tools/uninstall.ps1 create mode 100644 packages/Node.js.0.10.28/Node.js.0.10.28.nupkg create mode 100644 packages/Node.js.0.10.28/content/.bin/node.cmd create mode 100644 packages/Node.js.0.10.28/node.exe create mode 100644 packages/Node.js.0.10.28/readme.txt create mode 100644 packages/Node.js.0.10.28/tools/bin_tools.ps1 create mode 100644 packages/Node.js.0.10.28/tools/install.ps1 create mode 100644 packages/Node.js.0.10.28/tools/uninstall.ps1 diff --git a/StockManMVC/.bin/bower.cmd b/StockManMVC/.bin/bower.cmd new file mode 100644 index 0000000..814cf7b --- /dev/null +++ b/StockManMVC/.bin/bower.cmd @@ -0,0 +1,3 @@ +@echo off +SET PATH=%~dp0;%PATH% +"%~dp0node" "%~dp0..\..\packages\Bower.1.3.11\node_modules\bower\bin\bower" %* diff --git a/StockManMVC/.bin/bower_components/StockManMVC/.bower.json b/StockManMVC/.bin/bower_components/StockManMVC/.bower.json new file mode 100644 index 0000000..b4763e2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/StockManMVC/.bower.json @@ -0,0 +1,23 @@ +{ + "name": "StockManMVC", + "version": "0.8.20", + "description": "Gestione Stock", + "authors": [ + "S.E.Locatelli" + ], + "license": "MIT", + "dependencies": { + "globalize": "^1.0.0" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "_source": "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\bower.json", + "_target": "*", + "_originalSource": "../bower.json", + "_direct": true +} \ No newline at end of file diff --git a/StockManMVC/.bin/bower_components/StockManMVC/bower.json b/StockManMVC/.bin/bower_components/StockManMVC/bower.json new file mode 100644 index 0000000..0b49d4c --- /dev/null +++ b/StockManMVC/.bin/bower_components/StockManMVC/bower.json @@ -0,0 +1,19 @@ +{ + "name": "StockManMVC", + "version": "0.8.20", + "description": "Gestione Stock", + "authors": [ + "S.E.Locatelli" + ], + "license": "MIT", + "dependencies": { + "globalize": "^1.0.0" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/StockManMVC/.bin/bower_components/cldr-data/.bower.json b/StockManMVC/.bin/bower_components/cldr-data/.bower.json new file mode 100644 index 0000000..2eebc6f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/.bower.json @@ -0,0 +1,30 @@ +{ + "name": "cldr-data", + "main": "index.json", + "version": "29.0.0", + "homepage": "https://github.com/rxaviers/cldr-data-bower", + "authors": [ + "Rafael Xavier de Souza " + ], + "description": "Bower module for Unicode CLDR JSON data", + "moduleType": [ + "amd", + "globals" + ], + "keywords": [ + "Unicode", + "CLDR", + "JSON", + "data" + ], + "license": "MIT", + "_release": "29.0.0", + "_resolution": { + "type": "version", + "tag": "29.0.0", + "commit": "2bbb69cc3d10d14b4d39d6359d0f56089166ac1f" + }, + "_source": "https://github.com/rxaviers/cldr-data-bower.git", + "_target": ">=25", + "_originalSource": "cldr-data" +} \ No newline at end of file diff --git a/StockManMVC/.bin/bower_components/cldr-data/DCO.md b/StockManMVC/.bin/bower_components/cldr-data/DCO.md new file mode 100644 index 0000000..69afd4b --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/DCO.md @@ -0,0 +1,27 @@ +If you would like to make a contribution to cldr-data-bower, please certify to the following: + +--- + +cldr-data-bower Developer's Certificate of Origin. Version 1.0 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I have the right to submit it under the MIT license; or + +(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the MIT license; or + +(c) The contribution was provided directly to me by some other person who certified (a) or (b) and I have not modified it. + +(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all metadata and personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with cldr-data-bower's policies and the requirements of the MIT license where they are relevant. + +(e) I am granting this work to this project under the terms of the [MIT license](http://opensource.org/licenses/MIT). + +--- + +And please confirm your certification to the above by adding the following line to your commit message: + + Signed-off-by: Jane Developer + +using your real name (sorry, no pseudonyms or anonymous contributions). Committing with `git commit -s` will add the sign-off at the end of the commit message for you. + +If you are a developer who is authorized to contribute to cldr-data-bower on behalf of your employer, then please use your corporate email address in the Signed-off-by tag. If not, then please use a personal email address. diff --git a/StockManMVC/.bin/bower_components/cldr-data/LICENSE-MIT b/StockManMVC/.bin/bower_components/cldr-data/LICENSE-MIT new file mode 100644 index 0000000..6db134a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) 2013 Rafael Xavier de Souza http://rafael.xavier.blog.br + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/StockManMVC/.bin/bower_components/cldr-data/README.md b/StockManMVC/.bin/bower_components/cldr-data/README.md new file mode 100644 index 0000000..0a915c4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/README.md @@ -0,0 +1,139 @@ +# Bower's cldr-data + +Bower module for [Unicode CLDR JSON][] data. + +[Unicode CLDR JSON]: http://cldr.unicode.org/index/cldr-spec/json + +## Goal + +- Allow i18n libraries to define CLDR data as versioned "peer" dependency. +- Empower end applications the manage the final flatten CLDR data. +- Provide tools to assist (in other words, ease the pain) on fetching and + filtering the data. + +Bonus goals + +- Optimal for frontend development. (Backend, see [Npm's cldr-data][]). +- Optimal for AMD environment. (Node.js, see [Npm's cldr-data][]). + +[Npm's cldr-data]: https://github.com/rxaviers/cldr-data-npm + + +## Usage + +### End applications + +If you're writing an end application that depends on i18n libraries, which +in turn define their CLDR data dependency using bower's `cldr-data`, you need +to: + +1. List your i18n dependencies (obvious). +1. Setup a bower postinstall hook to populate the correct Unicode CLDR JSON data. + +On the `bower.json` of your application, list the i18n dependencies as you'd +normally do. For example, let's say they are FooNumberFormat and BarDateFormat. + +```javascript +"dependencies": { + "foo-number-format": "1.2.3", + "bar-date-format": "4.5.6" +} +``` + +If you don't have a `.bowerrc` file then create one. On your `.bowerrc` file, define script hooks to actually fetch the correct +Unicode CLDR JSON data for you. With this in place, when you enter `bower install` the lovely `cldr-data` will be included as part of the installation. + +**Important:** If you have already installed your bower dependencies prior to defining your `.bowerrc` hook then subsequently entering `bower install` *will not install `cldr-data`*. + +```javascript +{ + "scripts": { + "preinstall": "npm install cldr-data-downloader@0.2.x", + "postinstall": "node ./node_modules/cldr-data-downloader/bin/download.js -i bower_components/cldr-data/index.json -o bower_components/cldr-data/" + } +} +``` + +Unicode CLDR JSON data will be available at +`bower_components/cldr-data` (obviously, you can change that to your taste if +you want to). + +Note that if you use AMD, you can use the below in your application. + +```javascript +require.config({ + cldrData: "./bower_components/cldr-data", + json: "./bower_components/requirejs-plugins/src/json", + text: "./bower_components/requirejs-text/text" +}); + +require([ + "json!cldrData/main/en/numbers.json", + "json!cldrData/supplemental/likelySubtags.json", + ... +], function( enNumbers, likelySubtags, ... ) { + + // Your awesome application code goes here. + +}); +``` + +You can find more details (and give it a try) by switching to the +[Application Example][] branch. + +[Application Example]: https://github.com/rxaviers/cldr-data-bower/tree/example-application + +### I18n libraries + +If you own or develop an i18n library, your life just got better. :p + +On the `bower.json` of your i18n library, define its CLDR data dependency. + +```javascript +"dependencies": { + "cldr-data": ">=26" +} +``` + +That's it. End applications will now be able to provide your library the correct +version of CLDR data. For your convinience, use cldr-data in conjunction of +[cldr.js][]. + +You can find more details (and give it a try) by switching to the +[Foo Number Format Library Example][] branch. + +[cldr.js]: https://github.com/rxaviers/cldrjs +[Foo Number Format Library Example]: https://github.com/rxaviers/cldr-data-bower/tree/example-library-foo + +## How does it work? + +This bower module doesn't actually mirror any Unicode CLDR JSON data as you may +have already noticed. The only piece of information we carry is its zips URLs +(see `index.json`), which are necessary to fetch the data. In consequence, this +dependency gets really light and fast to be processed by bower. + +Each cldr-data-bower's `major.minor` version maps to a Unicode CLDR JSON with +the same number. For example, cldr-data-bower `26.0.0`, `26.0.1`, or `26.0.1` +all map to Unicode CLDR JSON `v26`. So, simply use major (and possibly minor, +e.g., 23.1) when defining it, e.g., `"cldr-data": ">=26"`. + +What really matters is that this approach allows bower to do its job, i.e., +dependency management. + +Exemplifying, an end application that depends on Foo (that depends on cldr-data +\>= 25) and Bar (that depends on cldr-data \>= 23.1), can use bower to install +and to flatten its `cldr-data` dependency. In this case, it's any version bigger +or equal to twenty five (>=25). + +At this point, bower installs the right `cldr-data` version into +`./bower_components/cldr-data`, which carries instructions on how to download +the CLDR JSON data. + +A postinstall script, like cldr-data-downloader, must be used to actually +populate the above skeleton. + +On any questions or problems, please file an issue. + +## License + +MIT © [Rafael Xavier de Souza](http://rafael.xavier.blog.br) diff --git a/StockManMVC/.bin/bower_components/cldr-data/bower.json b/StockManMVC/.bin/bower_components/cldr-data/bower.json new file mode 100644 index 0000000..a961029 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/bower.json @@ -0,0 +1,21 @@ +{ + "name": "cldr-data", + "main": "index.json", + "version": "29.0.0", + "homepage": "https://github.com/rxaviers/cldr-data-bower", + "authors": [ + "Rafael Xavier de Souza " + ], + "description": "Bower module for Unicode CLDR JSON data", + "moduleType": [ + "amd", + "globals" + ], + "keywords": [ + "Unicode", + "CLDR", + "JSON", + "data" + ], + "license": "MIT" +} diff --git a/StockManMVC/.bin/bower_components/cldr-data/index.json b/StockManMVC/.bin/bower_components/cldr-data/index.json new file mode 100644 index 0000000..dc4fcfc --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldr-data/index.json @@ -0,0 +1,42 @@ +{ + "core": [ + "https://github.com/unicode-cldr/cldr-core/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-dates-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-buddhist-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-chinese-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-coptic-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-dangi-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-ethiopic-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-hebrew-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-indian-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-islamic-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-japanese-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-persian-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-roc-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-localenames-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-misc-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-numbers-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-segments-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-units-modern/archive/29.0.0.zip" + ], + "full": [ + "https://github.com/unicode-cldr/cldr-core/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-segments-modern/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-dates-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-buddhist-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-chinese-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-coptic-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-dangi-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-ethiopic-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-hebrew-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-indian-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-islamic-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-japanese-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-persian-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-cal-roc-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-localenames-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-misc-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-numbers-full/archive/29.0.0.zip", + "https://github.com/unicode-cldr/cldr-units-full/archive/29.0.0.zip" + ] +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/.bower.json b/StockManMVC/.bin/bower_components/cldrjs/.bower.json new file mode 100644 index 0000000..884d038 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "cldrjs", + "dependencies": { + "cldr-data": ">=25" + }, + "devDependencies": { + "chai": "1.7.x", + "eventEmitter": "4.2.7", + "mocha": "1.12.x", + "requirejs": "2.1.x", + "requirejs-plugins": "1.0.2", + "requirejs-text": "2.0.10" + }, + "homepage": "https://github.com/rxaviers/cldrjs", + "version": "0.4.4", + "_release": "0.4.4", + "_resolution": { + "type": "version", + "tag": "0.4.4", + "commit": "ffa7de2f81e334eff2bf6a9ce0b586c0c875d7de" + }, + "_source": "https://github.com/rxaviers/cldrjs.git", + "_target": "0.4.4", + "_originalSource": "cldrjs" +} \ No newline at end of file diff --git a/StockManMVC/.bin/bower_components/cldrjs/.bowerrc b/StockManMVC/.bin/bower_components/cldrjs/.bowerrc new file mode 100644 index 0000000..f095e81 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/.bowerrc @@ -0,0 +1,6 @@ +{ + "scripts": { + "postinstall": "node ./node_modules/cldr-data-downloader/bin/download.js -i bower_components/cldr-data/index.json -o bower_components/cldr-data/" + } +} + diff --git a/StockManMVC/.bin/bower_components/cldrjs/.gitignore b/StockManMVC/.bin/bower_components/cldrjs/.gitignore new file mode 100644 index 0000000..ca2ac19 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/.gitignore @@ -0,0 +1,3 @@ +bower_components/ +node_modules/ +tmp/ diff --git a/StockManMVC/.bin/bower_components/cldrjs/.jshintrc b/StockManMVC/.bin/bower_components/cldrjs/.jshintrc new file mode 100644 index 0000000..ed61a87 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/.jshintrc @@ -0,0 +1,16 @@ +{ + "boss": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "onevar": false, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true, + + "node": true +} \ No newline at end of file diff --git a/StockManMVC/.bin/bower_components/cldrjs/CHANGELOG.md b/StockManMVC/.bin/bower_components/cldrjs/CHANGELOG.md new file mode 100644 index 0000000..f12921d --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/CHANGELOG.md @@ -0,0 +1,13 @@ +# 0.4.0 + +## Breaking Changes + +- Bundle Lookup Matcher ([f9572aa][], [#17][]). + +Applications that explicitly use `/main/{languageId}` to traverse main items need to update it to `/main/{bundle}`. Applications that use the `.main()` method need to take no action. + +This change improves how cldrjs performs lookup for the right bundle when traversing main items. See more information at [Bundle Lookup Matcher][]. + +[f9572aa]: https://github.com/rxaviers/cldrjs/commit/f9572aa0164a8e4fcb5b7c4ae95957f2ced8e96a +[#17]: https://github.com/rxaviers/cldrjs/issues/17 +[Bundle Lookup Matcher]: ./doc/bundle_lookup_matcher.md diff --git a/StockManMVC/.bin/bower_components/cldrjs/DCO.md b/StockManMVC/.bin/bower_components/cldrjs/DCO.md new file mode 100644 index 0000000..2076e0d --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/DCO.md @@ -0,0 +1,27 @@ +If you would like to make a contribution to cldr.js, please certify to the following: + +--- + +cldr.js Developer's Certificate of Origin. Version 1.0 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I have the right to submit it under the MIT license; or + +(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the MIT license; or + +(c) The contribution was provided directly to me by some other person who certified (a) or (b) and I have not modified it. + +(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all metadata and personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with cldr.js's policies and the requirements of the MIT license where they are relevant. + +(e) I am granting this work to this project under the terms of the [MIT license](http://opensource.org/licenses/MIT). + +--- + +And please confirm your certification to the above by adding the following line to your commit message: + + Signed-off-by: Jane Developer + +using your real name (sorry, no pseudonyms or anonymous contributions). Committing with `git commit -s` will add the sign-off at the end of the commit message for you. + +If you are a developer who is authorized to contribute to cldr.js on behalf of your employer, then please use your corporate email address in the Signed-off-by tag. If not, then please use a personal email address. diff --git a/StockManMVC/.bin/bower_components/cldrjs/Gruntfile.js b/StockManMVC/.bin/bower_components/cldrjs/Gruntfile.js new file mode 100644 index 0000000..e7f9545 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/Gruntfile.js @@ -0,0 +1,293 @@ +module.exports = function(grunt) { + + "use strict"; + + var isConnectTestRunning, + rdefineEnd = /\}\);[^}\w]*$/, + pkg = grunt.file.readJSON( "package.json" ); + + function camelCase( input ) { + return input.toLowerCase().replace( /[_/](.)/g, function( match, group1 ) { + return group1.toUpperCase(); + }); + } + + function mountFolder( connect, path ) { + return connect.static( require( "path" ).resolve( path ) ); + } + + function replaceConsts( content ) { + return content + + // Replace Version + .replace( /@VERSION/g, pkg.version ) + + // Replace Date yyyy-mm-ddThh:mmZ + .replace( /@DATE/g, ( new Date() ).toISOString().replace( /:\d+\.\d+Z$/, "Z" ) ); + } + + grunt.initConfig({ + pkg: pkg, + connect: { + options: { + port: 9001, + hostname: "localhost" + }, + test: { + options: { + middleware: function ( connect ) { + return [ + mountFolder( connect, "." ), + mountFolder( connect, "test" ) + ]; + } + } + } + }, + jshint: { + source: { + src: [ "src/**/*.js", "!src/build/**" ], + options: { + jshintrc: "src/.jshintrc" + } + }, + grunt: { + src: [ "Gruntfile.js" ], + options: { + jshintrc: ".jshintrc" + } + }, + metafiles: { + src: [ "bower.json", "package.json" ], + options: { + jshintrc: ".jshintrc" + } + }, + test: { + src: [ "test/**/*.js" ], + options: { + jshintrc: "test/.jshintrc" + } + }, + dist: { + src: [ "dist/**/*.js" ], + options: { + jshintrc: "src/.dist_jshintrc" + } + } + }, + dco: { + current: { + options: { + exceptionalAuthors: { + "rxaviers@gmail.com": "Rafael Xavier de Souza" + } + } + } + }, + mocha: { + unit: { + options: { + log: true, + urls: [ + "http://localhost:<%= connect.options.port %>/unit.html", + "http://localhost:<%= connect.options.port %>/unit_unresolved.html" + ] + } + }, + functional: { + options: { + log: true, + urls: [ + "http://localhost:<%= connect.options.port %>/functional.html"//, + //"http://localhost:<%= connect.options.port %>/functional_unresolved.html" + ] + } + } + }, + requirejs: { + options: { + dir: "dist/.build", + appDir: "src", + baseUrl: ".", + optimize: "none", + paths: { + EventEmitter: "../bower_components/eventEmitter/EventEmitter" + }, + skipSemiColonInsertion: true, + skipModuleInsertion: true, + + // Strip all definitions generated by requirejs. + // Convert content as follows: + // a) "Single return" means the module only contains a return statement that is converted to a var declaration. + // b) "Not as simple as a single return" means the define wrappers are replaced by a function wrapper call and the returned value is assigned to a var. + // c) "Main" means the define wrappers are removed, but content is untouched. Only for main* files. + onBuildWrite: function ( id, path, contents ) { + var name = id + .replace( /util\/|common\//, "" ); + + if ( (/^EventEmitter$/).test( id ) ) { + contents = contents + .replace( /.*\buse strict\b.*/, "" ) + .replace( /(\(function \(\) {)/, "var EventEmitter;\n/* jshint ignore:start */\nEventEmitter = $1" ) + .replace( /\/\/ Expose the class either via AMD, CommonJS[\S\s]*}\.call\(this\)\);/, "return EventEmitter;\n}());\n/* jshint ignore:end */" ); + return contents; + } + + // 1, and 2: Remove define() wrap. + // 3: Remove empty define()'s. + contents = contents + .replace( /define\([^{]*?{/, "" ) /* 1 */ + .replace( rdefineEnd, "" ) /* 2 */ + .replace( /define\(\[[^\]]+\]\)[\W\n]+$/, "" ); /* 3 */ + + // Type b (not as simple as a single return) + if ( [ "item/lookup", "util/json/merge" ].indexOf( id ) !== -1 ) { + contents = " var " + camelCase( name ) + " = (function() {" + + contents + "}());"; + } + // Type a (single return) + else if ( (/\//).test( id ) ) { + contents = contents + .replace( / return/, " var " + camelCase( name ) + " =" ); + } + + return contents; + } + }, + bundle: { + options: { + modules: [{ + name: "cldr", + include: [ "core" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro_core.js", + endFile: "src/build/outro.js" + } + } + }, { + name: "cldr_event", + include: [ "event" ], + exclude: [ "core" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro_event.js", + endFile: "src/build/outro.js" + } + } + }, { + name: "cldr_supplemental", + include: [ "supplemental" ], + exclude: [ "core" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro_supplemental.js", + endFile: "src/build/outro.js" + } + } + }, { + name: "cldr_unresolved", + include: [ "unresolved" ], + exclude: [ "core" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro_unresolved.js", + endFile: "src/build/outro.js" + } + } + }] + } + } + }, + copy: { + options: { + processContent: function( content ) { + + // Remove leftover define created during rjs build + content = content.replace( /define\(".*/, "" ); + + // Embed VERSION and DATE + return replaceConsts( content ); + } + }, + dist_cldr: { + expand: true, + cwd: "dist/.build/", + src: [ "cldr.js" ], + dest: "dist/" + }, + dist_modules: { + expand: true, + cwd: "dist/.build/", + src: [ "cldr*.js", "!cldr.js" ], + dest: "dist/cldr", + rename: function( dest, src ) { + return require( "path" ).join( dest, src.replace( /cldr_/, "" ) ); + } + }, + dist_node_main: { + src: "src/build/node_main.js", + dest: "dist/node_main.js" + } + }, + uglify: { + options: { + banner: replaceConsts( grunt.file.read( "src/build/intro.min.js" ) ) + }, + dist: { + files: { + "tmp/cldr.min.js": [ "dist/cldr.js" ], + "tmp/cldr/event.min.js": [ "dist/cldr/event.js" ], + "tmp/cldr/supplemental.min.js": [ "dist/cldr/supplemental.js" ], + "tmp/cldr/unresolved.min.js": [ "dist/cldr/unresolved.js" ] + } + } + }, + compare_size: { + files: [ + "tmp/cldr.min.js", + "tmp/cldr/*min.js" + ], + options: { + compress: { + gz: function( fileContents ) { + return require( "gzip-js" ).zip( fileContents, {} ).length; + } + } + } + } + }); + + require( "matchdep" ).filterDev( "grunt-*" ).forEach( grunt.loadNpmTasks ); + + grunt.registerTask( "test", function() { + var args = [].slice.call( arguments ); + if ( !isConnectTestRunning ) { + grunt.task.run( "connect:test" ); + isConnectTestRunning = true; + } + grunt.task.run( [ "mocha" ].concat( args ).join( ":" ) ); + }); + + grunt.registerTask( "default", [ + "jshint:metafiles", + "jshint:grunt", + "jshint:source", + "jshint:test", + "test:unit", + "requirejs", + "copy", + "jshint:dist", + "test:functional", + "uglify", + "compare_size", + "dco" + ]); + +}; + diff --git a/StockManMVC/.bin/bower_components/cldrjs/LICENSE-MIT b/StockManMVC/.bin/bower_components/cldrjs/LICENSE-MIT new file mode 100644 index 0000000..6123def --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) Rafael Xavier de Souza http://rafael.xavier.blog.br + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/StockManMVC/.bin/bower_components/cldrjs/README.md b/StockManMVC/.bin/bower_components/cldrjs/README.md new file mode 100644 index 0000000..8c97cfb --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/README.md @@ -0,0 +1,552 @@ +# cldr.js - Simple CLDR traverser + +[CLDR (unicode.org)](http://cldr.unicode.org/) provides locale content for i18n software. The data is provided in two formats: LDML (XML format) and JSON. Our goal is to provide a simple layer to facilitate i18n software to access and use the [official CLDR JSON data](http://cldr.unicode.org/index/cldr-spec/json). + +| File | Minified + gzipped size | Summary | +|---|--:|---| +| cldr.js | 2.1KB | Core library | +| cldr/event.js | +1.4KB | Provides methods to allow listening to events, eg. `get` | +| cldr/supplemental.js | +0.5KB | Provides supplemental helper methods | +| cldr/unresolved.js | +0.7KB | Provides inheritance support for unresolved data | + +Quick jump: +- [About cldr.js?](#about-cldrjs) +- [Getting Started](#getting-started) + - [Usage and installation](#usage-and-installation) + - [How to get CLDR JSON data?](#how-to-get-cldr-json-data) + - [How do I load CLDR data into Cldrjs?](#how-do-i-load-cldr-data-into-cldrjs) +- [API](#api) +- [Error reference](#error) +- [Development / Contributing](#development--contributing) + + +## About cldr.js? + +### Who uses cldr.js? + +| Organization | Project | +|---|---| +| ![jQuery](doc/asset/jquery.png) | https://github.com/jquery/globalize | + +### Where to use it? + +It's designed to work both in the [browser](#usage-and-installation) and in [Node.js](#commonjs--nodejs). It supports [AMD](#usage-and-installation) and [CommonJs](#usage-and-installation); + +See [Usage and installation](#usage-and-installation). + +### What changed from 0.3.x to 0.4.x? + +See our [changelogs](./CHANGELOG.md). + +### Load only the CLDR portion you need + +```javascript +// Load the appropriate portion of CLDR JSON data +Cldr.load( + likelySubtagsData, + enData, + ptBrData +); +``` + +See [How to get CLDR JSON data?](#how-to-get-cldr-json-data) below for more information on how to get that data. + +### Instantiate a locale and get it normalized + +```javascript +var en = new Cldr( "en" ); +en.attributes; +// > { +// "bundle": "en", +// "minLanguageId": "en", +// "maxLanguageId": "en-Latn-US", +// "language": "en", +// "script": "Latn", +// "territory": "US", +// "region": "US" +// } + +var zh = new Cldr( "zh-u-nu-finance-cu-cny" ); +zh.attributes; +// > { +// "bundle": "zh-Hant", +// "minLanguageId": "zh", +// "maxLanguageId": "zh-Hans-CN", +// "language": "zh", +// "script": "Hans", +// "territory": "CN", +// "region": "CN", +// "u-nu": "finance", +// "u-cu": "cny" +// } + +``` + +- `language`, `script`, `territory` (also aliased as `region`), `maxLanguageId` (computed by [adding likely subtags](./src/core/likely_subtags.js)) and `minLanguageId` (computed by [removing likely subtags](./src/core/remove_likely_subtags.js)) according to the [specification](http://www.unicode.org/reports/tr35/#Likely_Subtags). +- `bundle` holds the bundle lookup match based on the available loaded CLDR data, obtained by following [Bundle Lookup Matcher][]. +- [Unicode locale extensions](http://www.unicode.org/reports/tr35/#u_Extension). + +Comparison between different locales. + +| locale | minLanguageId | maxLanguageId | language | script | region | +| --- | --- | --- | --- | --- | --- | +| **en** | `"en"` | `"en-Latn-US"` | `"en"` | `"Latn"` | `"US"` | +| **en-US** | `"en"` | `"en-Latn-US"` | `"en"` | `"Latn"` | `"US"` | +| **de** | `"de"` | `"de-Latn-DE"` | `"de"` | `"Latn"` | `"DE"` | +| **zh** | `"zh"` | `"zh-Hans-CN"` | `"zh"` | `"Hans"` | `"CN"` | +| **zh-TW** | `"zh-TW"` | `"zh-Hant-TW"` | `"zh"` | `"Hant"` | `"TW"` | +| **ar** | `"ar"` | `"ar-Arab-EG"` | `"ar"` | `"Arab"` | `"EG"` | +| **pt** | `"pt"` | `"pt-Latn-BR"` | `"pt"` | `"Latn"` | `"BR"` | +| **pt-BR** | `"pt"` | `"pt-Latn-BR"` | `"pt"` | `"Latn"` | `"BR"` | +| **pt-PT** | `"pt-PT"` | `"pt-Latn-PT"` | `"pt"` | `"Latn"` | `"PT"` | +| **es** | `"es"` | `"es-Latn-ES"` | `"es"` | `"Latn"` | `"ES"` | +| **es-AR** | `"es-AR"` | `"es-Latn-AR"` | `"es"` | `"Latn"` | `"AR"` | + +### Get item given its path + +```javascript +// Equivalent to: +// .get( "main/{bundle}/numbers/symbols-numberSystem-latn/decimal" ); +en.main( "numbers/symbols-numberSystem-latn/decimal" ); +// > "." + +// Equivalent to: +// .get( "main/{bundle}/numbers/symbols-numberSystem-latn/decimal" ); +ptBr.main( "numbers/symbols-numberSystem-latn/decimal" ); +// > "," +``` + +Have any [locale attributes](#cldrattributes) replaced with their corresponding values by embracing it with `{}`. In the example below, `{language}` is replaced with `"en"` and `{territory}` with `"US"`. + +```javascript +// Notice the more complete way to get this data is: +// cldr.get( "supplemental/gender/personList/{language}" ) || +// cldr.get( "supplemental/gender/personList/001" ); +var enGender = en.get( "supplemental/gender/personList/{language}" ); +// > "neutral" + +var USCurrencies = en.get( "supplemental/currencyData/region/{territory}" ); +// > [ +// { USD: { _from: "1792-01-01" } }, +// { USN: { _tender: "false" } }, +// { USS: { _tender: "false" } } +// ] + +// Notice the more complete way to get this data is: +// cldr.get( "supplemental/measurementData/measurementSystem/{territory}" ) || +// cldr.get( "supplemental/measurementData/measurementSystem/001" ); +var enMeasurementSystem = en.get( "supplemental/measurementData/measurementSystem/{territory}" ); +// > "US" +``` + +Get `undefined` for non-existent data. + +```javascript +en.get( "/crazy/invalid/path" ); +// ➡ undefined + +// Avoid this +enData && enData.crazy && enData.crazy.invalid && enData.crazy.invalid.path; +``` + +### Resolve CLDR inheritances + +If you are using unresolved JSON data, you can resolve them dynamically during runtime by loading the `cldr/unresolved.js` extension module. Currently, we support bundle inheritance. + +```javascript +Cldr.load( + unresolvedEnData + unresolvedEnGbData, + unresolvedEnInData, + parentLocalesData, // supplemental + likelySubtagsData // supplemental +); + +var enIn = new Cldr( "en-IN" ); + +// 1st time retrieved by resolving: en-IN ➡ en-GB (parent locale lookup). +// Further times retrieved straight from the resolved cache. +enIn.main( "dates/calendars/gregorian/dateTimeFormats/availableFormats/yMd" ); +// > "dd/MM/y" + +// 1st time retrieved by resolving: en-IN ➡ en-GB (parent locale lookup) ➡ en (truncate lookup) +// Further times retrieved straight from the resolved cache. +enIn.main( "numbers/symbols-numberSystem-latn/decimal" ); +// > "." +``` + +### Helpers + +We offer some convenient helpers. + +```javascript +var usFirstDay = en.supplemental.weekData.firstDay(); +// ➡ sun +// Equivalent to: +// en.get( "supplemental/weekData/firstDay/{territory}" ) || +// en.get( "supplemental/weekData/firstDay/001" ); + +var brFirstDay = ptBr.supplemental.weekData.firstDay(); +// ➡ mon +// Equivalent to: +// ptBr.get( "supplemental/weekData/firstDay/{territory}" ) || +// ptBr.get( "supplemental/weekData/firstDay/001" ); +``` + +### Browser support + +We officially support: +- Firefox (latest - 2)+ +- Chrome (latest - 2)+ +- Safari 5.1+ +- IE 8+ +- Opera (latest - 2)+ + +Sniff tests show cldr.js also works on the following browsers: +- Firefox 4+ +- Safari 5+ +- Chrome 14+ +- IE 6+ +- Opera 11.1+ + +If you find any bugs, please just let us know. We'll be glad to fix them for the officially supported browsers, or at least update the documentation for the unsupported ones. + + +## Getting Started + +### Usage and installation + +cldr.js has no external dependencies. You can include it in the script tag of your page and you're ready to go. [Download it by clicking here](https://github.com/rxaviers/cldr/releases). + +```html + +``` + + +```javascript +// Load the appropriate portion of CLDR JSON data. +// See "How to get CLDR JSON data?" below for more information on how to get that data. +Cldr.load( cldrJsonData ); + +// Instantiate it by passing a locale. +var ptBr = new Cldr( "pt-BR" ); + +// Get CLDR item data given its path. +// Equivalent to: +// .get( "main/{bundle}/numbers/symbols-numberSystem-latn/decimal" ); +ptBr.main( "numbers/symbols-numberSystem-latn/decimal" ); +// > "," +``` + +We are UMD wrapped. So, it supports AMD, CommonJS, or global variables (in case neither AMD nor CommonJS have been detected). + +Example of usage on AMD: + +```bash +bower install cldrjs +``` + +```javascript +require.config({ + paths: { + "cldr": "bower_components/cldrjs/dist/cldr" + } +}); + +require( [ "cldr", "cldr/supplemental", "cldr/unresolved" ], function( Cldr ) { + ... +}); +``` + +Example of usage with Node.js: + +```bash +npm install cldrjs +``` + +```javascript +var Cldr = require( "cldrjs" ); +``` + +### How to get CLDR JSON data? + +*By downloading the JSON packages individually...* + +Unicode CLDR is available as JSON at https://github.com/unicode-cldr/ (after this [json-packaging proposal][] took place). Please, read https://github.com/unicode-cldr/cldr-json for more information about package organization. + +[json-packaging proposal]: http://cldr.unicode.org/development/development-process/design-proposals/json-packaging + +*By using a package manager...* + +`cldr-data` can be used for convenience. It always downloads from the correct source. + +Use bower `bower install cldr-data` ([detailed instructions][]) or npm `npm install cldr-data`. For more information, see: + +- https://github.com/rxaviers/cldr-data-npm +- https://github.com/rxaviers/cldr-data-bower + +[detailed instructions]: https://github.com/rxaviers/cldr-data-bower + +*By generating the JSON mappings yourself...* + +You can generate the JSON representation of the languages not available in the ZIP file by using the official conversion tool ([`tools.zip`](http://www.unicode.org/Public/cldr/latest/)). This ZIP contains a README with instructions on how to build the data. + +You can choose to generate unresolved data to save space or bandwidth (`-r false` option of the conversion tool) and instead have it resolve at runtime. + +### How do I load CLDR data into Cldrjs? + +The short answer is by using `Cldr.load()` and passing the JSON data as the first argument. Below, follow several examples on how this could be accomplished. + +For the examples below, first fetch CLDR JSON data: + +```bash +wget http://www.unicode.org/Public/cldr/latest/json.zip +unzip json.zip -d cldr +``` + +Example of embedding CLDR JSON data: + +```html + +``` + +Example of loading it dynamically: + +```html + + +``` + +Example using AMD (also see our [functional tests](test/functional.js)): +```javascript +define([ + "cldr", + "json!cldr/supplemental/likelySubtags.json" +], function( Cldr, likelySubtags ) { + + Cldr.load( likelySubtags ); + +}); +``` + +Example using Node.js: + +```javascript +var Cldr = require( "cldrjs" ); +Cldr.load( require( "./cldr/supplemental/likelySubtags.json" ) ); +``` + +#### Attention: library owners, do not embed data + +It's NOT recommended that libraries embed data into their code logic for several reasons: avoid forcing a certain data version on users, avoid maintaining locale changes, avoid duplicating data among different i18n libraries. + +We recommend loading CLDR data must be performed by end user code. + +#### Which CLDR portion to load? + +It depends on the used modules. + +| File | Required CLDR JSON data | +|---|---| +| cldr.js | `cldr/supplemental/likelySubtags.json` | +| cldr/unresolved.js | `cldr/supplemental/parentLocales.json` | +| cldr/supplemental.js | `cldr/supplemental/{timeData, weekData}.json` | + +You must also load any portion of the CLDR data you plan to use in your library or your end-application. + +## API + +### Core + +- **`Cldr.load( json, ... )`** + + Load resolved or unresolved [1] JSON data. + + [Read more...](doc/api/core/load.md) + + 1: Unresolved processing is **only available** after loading `cldr/unresolved.js` extension module. + +- **`new Cldr( locale )`** + + Create a new instance of Cldr. + + [Read more...](doc/api/core/constructor.md) + +- **`.attributes`** + + Attributes is an Object created during instance initialization (construction) and are used internally by `.get()` to replace dynamic parts of an item path. + + [Read more...](doc/api/core/attributes.md) + +- **`.get( path )`** + + Get the item data given its path, or `undefined` if missing. + + [Read more...](doc/api/core/get.md) + +- **`.main( path )`** + + It's an alias for `.get([ "main/{bundle}", ... ])`. + + [Read more...](doc/api/core/main.md) + +### cldr/event.js + +- **`Cldr.on( event, listener )`** + + Add a listener function to the specified event globally (for all instances). + + [Read more...](doc/api/event/global_on.md) + +- **`Cldr.once( event, listener )`** + + Add a listener function to the specified event globally (for all instances). It will be automatically removed after it's first execution. + + [Read more...](doc/api/event/global_once.md) + +- **`Cldr.off( event, listener )`** + + Remove a listener function from the specified event globally (for all instances). + + [Read more...](doc/api/event/global_off.md) + +- **`.on( event, listener )`** + + Add a listener function to the specified event for this instance. + + [Read more...](doc/api/event/on.md) + +- **`.once( event, listener )`** + + Add a listener function to the specified event for this instance. It will be automatically removed after it's first execution. + + [Read more...](doc/api/event/once.md) + +- **`.off( event, listener )`** + + Remove a listener function from the specified event for this instance. + + [Read more...](doc/api/event/off.md) + +#### Events + +- `get` ➡ `( path, value )` + + Triggered before a `.get()` (or any alias) return. The triggered listener receives the normalized *path* and the *value* found. + + [Read more...](doc/api/event/event_get.md) + +### cldr/supplemental.js + +- **`.supplemental( path )`** + + It's an alias for `.get([ "supplemental", ... ])`. + + [Read more...](doc/api/supplemental.md) + +- **`.supplemental.timeData.allowed()`** + + Helper function. Return the supplemental timeData allowed of locale's territory. + + [Read more...](doc/api/supplemental/time_data_allowed.md) + +- **`.supplemental.timeData.preferred()`** + + Helper function. Return the supplemental timeData preferred of locale's territory. + + [Read more...](doc/api/supplemental/time_data_preferred.md) + +- **`.supplemental.weekData.firstDay()`** + + Helper function. Return the supplemental weekData firstDay of locale's territory. + + [Read more...](doc/api/supplemental/week_data_first_day.md) + +- **`.supplemental.weekData.minDays()`** + + Helper function. Return the supplemental weekData minDays of locale's territory as a Number. + + [Read more...](doc/api/supplemental/week_data_min_days.md) + +### cldr/unresolved.js + +- **`.get( path )`** + + Overload (extend) `.get()` to get the item data or lookup by following [locale inheritance](http://www.unicode.org/reports/tr35/#Locale_Inheritance), set a local resolved cache if it's found (for subsequent faster access), or return `undefined`. + + [Read more...](doc/api/unresolved/get.md) + +## Error reference + +### CLDR Errors + +#### `E_MISSING_BUNDLE` + +Thrown when none of the loaded CLDR data can be used as a bundle for the corresponding locale. See more information on [Bundle Lookup Matcher][]. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_MISSING_BUNDLE` | +| locale | Locale whose bundle could not be found | + +### Parameter Errors + +#### `E_MISSING_PARAMETER` + +Thrown when a required parameter is missing on any static or instance methods. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_MISSING_PARAMETER` | +| name | Name of the missing parameter | + +#### `E_INVALID_PAR_TYPE` + +Thrown when a parameter has an invalid type on any static or instance methods. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_INVALID_PAR_TYPE` | +| name | Name of the invalid parameter | +| value | Invalid value | +| expected | Expected type | + + +### Development / Contributing + +Install grunt and tests external dependencies. First, install the [grunt-cli](http://gruntjs.com/getting-started#installing-the-cli) and [bower](http://bower.io/) packages if you haven't before. These should be done as global installs. Then: + +```bash +npm install && bower install +``` +Run tests +```bash +grunt test +``` +Build distribution file. +```bash +grunt +``` + +[Bundle Lookup Matcher]: ./doc/bundle_lookup_matcher.md + +## License + +MIT © [Rafael Xavier de Souza](http://rafael.xavier.blog.br) diff --git a/StockManMVC/.bin/bower_components/cldrjs/bower.json b/StockManMVC/.bin/bower_components/cldrjs/bower.json new file mode 100644 index 0000000..41123b4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/bower.json @@ -0,0 +1,14 @@ +{ + "name": "cldrjs", + "dependencies": { + "cldr-data": ">=25" + }, + "devDependencies": { + "chai": "1.7.x", + "eventEmitter": "4.2.7", + "mocha": "1.12.x", + "requirejs": "2.1.x", + "requirejs-plugins": "1.0.2", + "requirejs-text": "2.0.10" + } +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/dist/cldr.js b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr.js new file mode 100644 index 0000000..956afca --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr.js @@ -0,0 +1,676 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( root, factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory(); + } else { + // Global + root.Cldr = factory(); + } + +}( this, function() { + + + var arrayIsArray = Array.isArray || function( obj ) { + return Object.prototype.toString.call( obj ) === "[object Array]"; + }; + + + + + var pathNormalize = function( path, attributes ) { + if ( arrayIsArray( path ) ) { + path = path.join( "/" ); + } + if ( typeof path !== "string" ) { + throw new Error( "invalid path \"" + path + "\"" ); + } + // 1: Ignore leading slash `/` + // 2: Ignore leading `cldr/` + path = path + .replace( /^\// , "" ) /* 1 */ + .replace( /^cldr\// , "" ); /* 2 */ + + // Replace {attribute}'s + path = path.replace( /{[a-zA-Z]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return attributes[ name ]; + }); + + return path.split( "/" ); + }; + + + + + var arraySome = function( array, callback ) { + var i, length; + if ( array.some ) { + return array.some( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + if ( callback( array[ i ], i, array ) ) { + return true; + } + } + return false; + }; + + + + + /** + * Return the maximized language id as defined in + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. Canonicalize. + * 1.1 Make sure the input locale is in canonical form: uses the right + * separator, and has the right casing. + * TODO Right casing? What df? It seems languages are lowercase, scripts are + * Capitalized, territory is uppercase. I am leaving this as an exercise to + * the user. + * + * 1.2 Replace any deprecated subtags with their canonical values using the + * data in supplemental metadata. Use the first value in the + * replacement list, if it exists. Language tag replacements may have multiple + * parts, such as "sh" ➞ "sr_Latn" or mo" ➞ "ro_MD". In such a case, the + * original script and/or region are retained if there is one. Thus + * "sh_Arab_AQ" ➞ "sr_Arab_AQ", not "sr_Latn_AQ". + * TODO What data? + * + * 1.3 If the tag is grandfathered (see in the supplemental data), then return it. + * TODO grandfathered? + * + * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur. + * 1.5 Get the components of the cleaned-up source tag (languages, scripts, + * and regions), plus any variants and extensions. + * 2. Lookup. Lookup each of the following in order, and stop on the first + * match: + * 2.1 languages_scripts_regions + * 2.2 languages_regions + * 2.3 languages_scripts + * 2.4 languages + * 2.5 und_scripts + * 3. Return + * 3.1 If there is no match, either return an error value, or the match for + * "und" (in APIs where a valid language tag is required). + * 3.2 Otherwise there is a match = languagem_scriptm_regionm + * 3.3 Let xr = xs if xs is not empty, and xm otherwise. + * 3.4 Return the language tag composed of languager _ scriptr _ regionr + + * variants + extensions. + * + * @subtags [Array] normalized language id subtags tuple (see init.js). + */ + var coreLikelySubtags = function( Cldr, cldr, subtags, options ) { + var match, matchFound, + language = subtags[ 0 ], + script = subtags[ 1 ], + sep = Cldr.localeSep, + territory = subtags[ 2 ], + variantsAndUnicodeLocaleExtensions = subtags.slice( 3, 4 ); + options = options || {}; + + // Skip if (language, script, territory) is not empty [3.3] + if ( language !== "und" && script !== "Zzzz" && territory !== "ZZ" ) { + return [ language, script, territory ].concat( variantsAndUnicodeLocaleExtensions ); + } + + // Skip if no supplemental likelySubtags data is present + if ( typeof cldr.get( "supplemental/likelySubtags" ) === "undefined" ) { + return; + } + + // [2] + matchFound = arraySome([ + [ language, script, territory ], + [ language, territory ], + [ language, script ], + [ language ], + [ "und", script ] + ], function( test ) { + return match = !(/\b(Zzzz|ZZ)\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ "supplemental/likelySubtags", test.join( sep ) ] ); + }); + + // [3] + if ( matchFound ) { + // [3.2 .. 3.4] + match = match.split( sep ); + return [ + language !== "und" ? language : match[ 0 ], + script !== "Zzzz" ? script : match[ 1 ], + territory !== "ZZ" ? territory : match[ 2 ] + ].concat( + variantsAndUnicodeLocaleExtensions + ); + } else if ( options.force ) { + // [3.1.2] + return cldr.get( "supplemental/likelySubtags/und" ).split( sep ); + } else { + // [3.1.1] + return; + } + }; + + + + /** + * Given a locale, remove any fields that Add Likely Subtags would add. + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled, + * return it. + * 2. Remove the variants from max. + * 3. Then for trial in {language, language _ region, language _ script}. If + * AddLikelySubtags(trial) = max, then return trial + variants. + * 4. If you do not get a match, return max + variants. + * + * @maxLanguageId [Array] maxLanguageId tuple (see init.js). + */ + var coreRemoveLikelySubtags = function( Cldr, cldr, maxLanguageId ) { + var match, matchFound, + language = maxLanguageId[ 0 ], + script = maxLanguageId[ 1 ], + territory = maxLanguageId[ 2 ], + variants = maxLanguageId[ 3 ]; + + // [3] + matchFound = arraySome([ + [ [ language, "Zzzz", "ZZ" ], [ language ] ], + [ [ language, "Zzzz", territory ], [ language, territory ] ], + [ [ language, script, "ZZ" ], [ language, script ] ] + ], function( test ) { + var result = coreLikelySubtags( Cldr, cldr, test[ 0 ] ); + match = test[ 1 ]; + return result && result[ 0 ] === maxLanguageId[ 0 ] && + result[ 1 ] === maxLanguageId[ 1 ] && + result[ 2 ] === maxLanguageId[ 2 ]; + }); + + if ( matchFound ) { + if ( variants ) { + match.push( variants ); + } + return match; + } + + // [4] + return maxLanguageId; + }; + + + + + /** + * subtags( locale ) + * + * @locale [String] + */ + var coreSubtags = function( locale ) { + var aux, unicodeLanguageId, + subtags = []; + + locale = locale.replace( /_/, "-" ); + + // Unicode locale extensions. + aux = locale.split( "-u-" ); + if ( aux[ 1 ] ) { + aux[ 1 ] = aux[ 1 ].split( "-t-" ); + locale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? "-t-" + aux[ 1 ][ 1 ] : ""); + subtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ]; + } + + // TODO normalize transformed extensions. Currently, skipped. + // subtags[ x ] = locale.split( "-t-" )[ 1 ]; + unicodeLanguageId = locale.split( "-t-" )[ 0 ]; + + // unicode_language_id = "root" + // | unicode_language_subtag + // (sep unicode_script_subtag)? + // (sep unicode_region_subtag)? + // (sep unicode_variant_subtag)* ; + // + // Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3. + aux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)((-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*)$|^(root)$/ ); + if ( aux === null ) { + return [ "und", "Zzzz", "ZZ" ]; + } + subtags[ 0 /* language */ ] = aux[ 10 ] /* root */ || aux[ 2 ] || "und"; + subtags[ 1 /* script */ ] = aux[ 4 ] || "Zzzz"; + subtags[ 2 /* territory */ ] = aux[ 6 ] || "ZZ"; + if ( aux[ 7 ] && aux[ 7 ].length ) { + subtags[ 3 /* variant */ ] = aux[ 7 ].slice( 1 ) /* remove leading "-" */; + } + + // 0: language + // 1: script + // 2: territory (aka region) + // 3: variant + // 4: unicodeLocaleExtensions + return subtags; + }; + + + + + var arrayForEach = function( array, callback ) { + var i, length; + if ( array.forEach ) { + return array.forEach( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + callback( array[ i ], i, array ); + } + }; + + + + + /** + * bundleLookup( minLanguageId ) + * + * @Cldr [Cldr class] + * + * @cldr [Cldr instance] + * + * @minLanguageId [String] requested languageId after applied remove likely subtags. + */ + var bundleLookup = function( Cldr, cldr, minLanguageId ) { + var availableBundleMap = Cldr._availableBundleMap, + availableBundleMapQueue = Cldr._availableBundleMapQueue; + + if ( availableBundleMapQueue.length ) { + arrayForEach( availableBundleMapQueue, function( bundle ) { + var existing, maxBundle, minBundle, subtags; + subtags = coreSubtags( bundle ); + maxBundle = coreLikelySubtags( Cldr, cldr, subtags ); + minBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle ); + minBundle = minBundle.join( Cldr.localeSep ); + existing = availableBundleMapQueue[ minBundle ]; + if ( existing && existing.length < bundle.length ) { + return; + } + availableBundleMap[ minBundle ] = bundle; + }); + Cldr._availableBundleMapQueue = []; + } + + return availableBundleMap[ minLanguageId ] || null; + }; + + + + + var objectKeys = function( object ) { + var i, + result = []; + + if ( Object.keys ) { + return Object.keys( object ); + } + + for ( i in object ) { + result.push( i ); + } + + return result; + }; + + + + + var createError = function( code, attributes ) { + var error, message; + + message = code + ( attributes && JSON ? ": " + JSON.stringify( attributes ) : "" ); + error = new Error( message ); + error.code = code; + + // extend( error, attributes ); + arrayForEach( objectKeys( attributes ), function( attribute ) { + error[ attribute ] = attributes[ attribute ]; + }); + + return error; + }; + + + + + var validate = function( code, check, attributes ) { + if ( !check ) { + throw createError( code, attributes ); + } + }; + + + + + var validatePresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", typeof value !== "undefined", { + name: name + }); + }; + + + + + var validateType = function( value, name, check, expected ) { + validate( "E_INVALID_PAR_TYPE", check, { + expected: expected, + name: name, + value: value + }); + }; + + + + + var validateTypePath = function( value, name ) { + validateType( value, name, typeof value === "string" || arrayIsArray( value ), "String or Array" ); + }; + + + + + /** + * Function inspired by jQuery Core, but reduced to our use case. + */ + var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; + }; + + + + + var validateTypePlainObject = function( value, name ) { + validateType( value, name, typeof value === "undefined" || isPlainObject( value ), "Plain Object" ); + }; + + + + + var validateTypeString = function( value, name ) { + validateType( value, name, typeof value === "string", "a string" ); + }; + + + + + // @path: normalized path + var resourceGet = function( data, path ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + node = node[ path[ i ] ]; + if ( !node ) { + return undefined; + } + } + return node[ path[ i ] ]; + }; + + + + + /** + * setAvailableBundles( Cldr, json ) + * + * @Cldr [Cldr class] + * + * @json resolved/unresolved cldr data. + * + * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}. + */ + var coreSetAvailableBundles = function( Cldr, json ) { + var bundle, + availableBundleMapQueue = Cldr._availableBundleMapQueue, + main = resourceGet( json, [ "main" ] ); + + if ( main ) { + for ( bundle in main ) { + if ( main.hasOwnProperty( bundle ) && bundle !== "root" && + availableBundleMapQueue.indexOf( bundle ) === -1 ) { + availableBundleMapQueue.push( bundle ); + } + } + } + }; + + + + var alwaysArray = function( somethingOrArray ) { + return arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ]; + }; + + + var jsonMerge = (function() { + + // Returns new deeply merged JSON. + // + // Eg. + // merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } ) + // -> { a: { b: 3, c: 2, d: 4 } } + // + // @arguments JSON's + // + var merge = function() { + var destination = {}, + sources = [].slice.call( arguments, 0 ); + arrayForEach( sources, function( source ) { + var prop; + for ( prop in source ) { + if ( prop in destination && typeof destination[ prop ] === "object" && !arrayIsArray( destination[ prop ] ) ) { + + // Merge Objects + destination[ prop ] = merge( destination[ prop ], source[ prop ] ); + + } else { + + // Set new values + destination[ prop ] = source[ prop ]; + + } + } + }); + return destination; + }; + + return merge; + +}()); + + + /** + * load( Cldr, source, jsons ) + * + * @Cldr [Cldr class] + * + * @source [Object] + * + * @jsons [arguments] + */ + var coreLoad = function( Cldr, source, jsons ) { + var i, j, json; + + validatePresence( jsons[ 0 ], "json" ); + + // Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`. + for ( i = 0; i < jsons.length; i++ ) { + + // Support array parameters, e.g., `Cldr.load([{...}, {...}])`. + json = alwaysArray( jsons[ i ] ); + + for ( j = 0; j < json.length; j++ ) { + validateTypePlainObject( json[ j ], "json" ); + source = jsonMerge( source, json[ j ] ); + coreSetAvailableBundles( Cldr, json[ j ] ); + } + } + + return source; + }; + + + + var itemGetResolved = function( Cldr, path, attributes ) { + // Resolve path + var normalizedPath = pathNormalize( path, attributes ); + + return resourceGet( Cldr._resolved, normalizedPath ); + }; + + + + + /** + * new Cldr() + */ + var Cldr = function( locale ) { + this.init( locale ); + }; + + // Build optimization hack to avoid duplicating functions across modules. + Cldr._alwaysArray = alwaysArray; + Cldr._coreLoad = coreLoad; + Cldr._createError = createError; + Cldr._itemGetResolved = itemGetResolved; + Cldr._jsonMerge = jsonMerge; + Cldr._pathNormalize = pathNormalize; + Cldr._resourceGet = resourceGet; + Cldr._validatePresence = validatePresence; + Cldr._validateType = validateType; + Cldr._validateTypePath = validateTypePath; + Cldr._validateTypePlainObject = validateTypePlainObject; + + Cldr._availableBundleMap = {}; + Cldr._availableBundleMapQueue = []; + Cldr._resolved = {}; + + // Allow user to override locale separator "-" (default) | "_". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both "-" and "_" are valid locale separators (eg. "en_GB", "en-GB"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set. + Cldr.localeSep = "-"; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved cldr data. + */ + Cldr.load = function() { + Cldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments ); + }; + + /** + * .init() automatically run on instantiation/construction. + */ + Cldr.prototype.init = function( locale ) { + var attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant, + sep = Cldr.localeSep; + + validatePresence( locale, "locale" ); + validateTypeString( locale, "locale" ); + + subtags = coreSubtags( locale ); + + unicodeLocaleExtensions = subtags[ 4 ]; + variant = subtags[ 3 ]; + + // Normalize locale code. + // Get (or deduce) the "triple subtags": language, territory (also aliased as region), and script subtags. + // Get the variant subtags (calendar, collation, currency, etc). + // refs: + // - http://www.unicode.org/reports/tr35/#Field_Definitions + // - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs + // - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier + + // When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags. + maxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags; + language = maxLanguageId[ 0 ]; + script = maxLanguageId[ 1 ]; + territory = maxLanguageId[ 2 ]; + + minLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep ); + + // Set attributes + this.attributes = attributes = { + bundle: bundleLookup( Cldr, this, minLanguageId ), + + // Unicode Language Id + minlanguageId: minLanguageId, + maxLanguageId: maxLanguageId.join( sep ), + + // Unicode Language Id Subtabs + language: language, + script: script, + territory: territory, + region: territory, /* alias */ + variant: variant + }; + + // Unicode locale extensions. + unicodeLocaleExtensions && ( "-" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) { + + if ( key ) { + + // Extension is in the `keyword` form. + attributes[ "u" + key ] = type; + } else { + + // Extension is in the `attribute` form. + attributes[ "u" + attribute ] = true; + } + }); + + this.locale = locale; + }; + + /** + * .get() + */ + Cldr.prototype.get = function( path ) { + + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + return itemGetResolved( Cldr, path, this.attributes ); + }; + + /** + * .main() + */ + Cldr.prototype.main = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + validate( "E_MISSING_BUNDLE", this.attributes.bundle !== null, { + locale: this.locale + }); + + path = alwaysArray( path ); + return this.get( [ "main/{bundle}" ].concat( path ) ); + }; + + return Cldr; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/event.js b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/event.js new file mode 100644 index 0000000..121b5c8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/event.js @@ -0,0 +1,585 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var pathNormalize = Cldr._pathNormalize, + validatePresence = Cldr._validatePresence, + validateType = Cldr._validateType; + +/*! + * EventEmitter v4.2.7 - git.io/ee + * Oliver Caldwell + * MIT license + * @preserve + */ + +var EventEmitter; +/* jshint ignore:start */ +EventEmitter = (function () { + + + /** + * Class for managing events. + * Can be extended to provide event functionality in other classes. + * + * @class EventEmitter Manages event registering and emitting. + */ + function EventEmitter() {} + + // Shortcuts to improve speed and size + var proto = EventEmitter.prototype; + var exports = this; + var originalGlobalValue = exports.EventEmitter; + + /** + * Finds the index of the listener for the event in it's storage array. + * + * @param {Function[]} listeners Array of listeners to search through. + * @param {Function} listener Method to look for. + * @return {Number} Index of the specified listener, -1 if not found + * @api private + */ + function indexOfListener(listeners, listener) { + var i = listeners.length; + while (i--) { + if (listeners[i].listener === listener) { + return i; + } + } + + return -1; + } + + /** + * Alias a method while keeping the context correct, to allow for overwriting of target method. + * + * @param {String} name The name of the target method. + * @return {Function} The aliased method + * @api private + */ + function alias(name) { + return function aliasClosure() { + return this[name].apply(this, arguments); + }; + } + + /** + * Returns the listener array for the specified event. + * Will initialise the event object and listener arrays if required. + * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them. + * Each property in the object response is an array of listener functions. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Function[]|Object} All listener functions for the event. + */ + proto.getListeners = function getListeners(evt) { + var events = this._getEvents(); + var response; + var key; + + // Return a concatenated array of all matching events if + // the selector is a regular expression. + if (evt instanceof RegExp) { + response = {}; + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + response[key] = events[key]; + } + } + } + else { + response = events[evt] || (events[evt] = []); + } + + return response; + }; + + /** + * Takes a list of listener objects and flattens it into a list of listener functions. + * + * @param {Object[]} listeners Raw listener objects. + * @return {Function[]} Just the listener functions. + */ + proto.flattenListeners = function flattenListeners(listeners) { + var flatListeners = []; + var i; + + for (i = 0; i < listeners.length; i += 1) { + flatListeners.push(listeners[i].listener); + } + + return flatListeners; + }; + + /** + * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Object} All listener functions for an event in an object. + */ + proto.getListenersAsObject = function getListenersAsObject(evt) { + var listeners = this.getListeners(evt); + var response; + + if (listeners instanceof Array) { + response = {}; + response[evt] = listeners; + } + + return response || listeners; + }; + + /** + * Adds a listener function to the specified event. + * The listener will not be added if it is a duplicate. + * If the listener returns true then it will be removed after it is called. + * If you pass a regular expression as the event name then the listener will be added to all events that match it. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListener = function addListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var listenerIsWrapped = typeof listener === 'object'; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) { + listeners[key].push(listenerIsWrapped ? listener : { + listener: listener, + once: false + }); + } + } + + return this; + }; + + /** + * Alias of addListener + */ + proto.on = alias('addListener'); + + /** + * Semi-alias of addListener. It will add a listener that will be + * automatically removed after it's first execution. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addOnceListener = function addOnceListener(evt, listener) { + return this.addListener(evt, { + listener: listener, + once: true + }); + }; + + /** + * Alias of addOnceListener. + */ + proto.once = alias('addOnceListener'); + + /** + * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad. + * You need to tell it what event names should be matched by a regex. + * + * @param {String} evt Name of the event to create. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvent = function defineEvent(evt) { + this.getListeners(evt); + return this; + }; + + /** + * Uses defineEvent to define multiple events. + * + * @param {String[]} evts An array of event names to define. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvents = function defineEvents(evts) { + for (var i = 0; i < evts.length; i += 1) { + this.defineEvent(evts[i]); + } + return this; + }; + + /** + * Removes a listener function from the specified event. + * When passed a regular expression as the event name, it will remove the listener from all events that match it. + * + * @param {String|RegExp} evt Name of the event to remove the listener from. + * @param {Function} listener Method to remove from the event. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListener = function removeListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var index; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + index = indexOfListener(listeners[key], listener); + + if (index !== -1) { + listeners[key].splice(index, 1); + } + } + } + + return this; + }; + + /** + * Alias of removeListener + */ + proto.off = alias('removeListener'); + + /** + * Adds listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added. + * You can also pass it a regular expression to add the array of listeners to all events that match it. + * Yeah, this function does quite a bit. That's probably a bad thing. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListeners = function addListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(false, evt, listeners); + }; + + /** + * Removes listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be removed. + * You can also pass it a regular expression to remove the listeners from all events that match it. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListeners = function removeListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(true, evt, listeners); + }; + + /** + * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level. + * The first argument will determine if the listeners are removed (true) or added (false). + * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be added/removed. + * You can also pass it a regular expression to manipulate the listeners of all events that match it. + * + * @param {Boolean} remove True if you want to remove listeners, false if you want to add. + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add/remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) { + var i; + var value; + var single = remove ? this.removeListener : this.addListener; + var multiple = remove ? this.removeListeners : this.addListeners; + + // If evt is an object then pass each of it's properties to this method + if (typeof evt === 'object' && !(evt instanceof RegExp)) { + for (i in evt) { + if (evt.hasOwnProperty(i) && (value = evt[i])) { + // Pass the single listener straight through to the singular method + if (typeof value === 'function') { + single.call(this, i, value); + } + else { + // Otherwise pass back to the multiple function + multiple.call(this, i, value); + } + } + } + } + else { + // So evt must be a string + // And listeners must be an array of listeners + // Loop over it and pass each one to the multiple method + i = listeners.length; + while (i--) { + single.call(this, evt, listeners[i]); + } + } + + return this; + }; + + /** + * Removes all listeners from a specified event. + * If you do not specify an event then all listeners will be removed. + * That means every event will be emptied. + * You can also pass a regex to remove all events that match it. + * + * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeEvent = function removeEvent(evt) { + var type = typeof evt; + var events = this._getEvents(); + var key; + + // Remove different things depending on the state of evt + if (type === 'string') { + // Remove all listeners for the specified event + delete events[evt]; + } + else if (evt instanceof RegExp) { + // Remove all events matching the regex. + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + delete events[key]; + } + } + } + else { + // Remove all listeners in all events + delete this._events; + } + + return this; + }; + + /** + * Alias of removeEvent. + * + * Added to mirror the node API. + */ + proto.removeAllListeners = alias('removeEvent'); + + /** + * Emits an event of your choice. + * When emitted, every listener attached to that event will be executed. + * If you pass the optional argument array then those arguments will be passed to every listener upon execution. + * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately. + * So they will not arrive within the array on the other side, they will be separate. + * You can also pass a regular expression to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {Array} [args] Optional array of arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emitEvent = function emitEvent(evt, args) { + var listeners = this.getListenersAsObject(evt); + var listener; + var i; + var key; + var response; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + i = listeners[key].length; + + while (i--) { + // If the listener returns true then it shall be removed from the event + // The function is executed either with a basic call or an apply if there is an args array + listener = listeners[key][i]; + + if (listener.once === true) { + this.removeListener(evt, listener.listener); + } + + response = listener.listener.apply(this, args || []); + + if (response === this._getOnceReturnValue()) { + this.removeListener(evt, listener.listener); + } + } + } + } + + return this; + }; + + /** + * Alias of emitEvent + */ + proto.trigger = alias('emitEvent'); + + /** + * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on. + * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {...*} Optional additional arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emit = function emit(evt) { + var args = Array.prototype.slice.call(arguments, 1); + return this.emitEvent(evt, args); + }; + + /** + * Sets the current value to check against when executing listeners. If a + * listeners return value matches the one set here then it will be removed + * after execution. This value defaults to true. + * + * @param {*} value The new value to check for when executing listeners. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.setOnceReturnValue = function setOnceReturnValue(value) { + this._onceReturnValue = value; + return this; + }; + + /** + * Fetches the current value to check against when executing listeners. If + * the listeners return value matches this one then it should be removed + * automatically. It will return true by default. + * + * @return {*|Boolean} The current value to check for or the default, true. + * @api private + */ + proto._getOnceReturnValue = function _getOnceReturnValue() { + if (this.hasOwnProperty('_onceReturnValue')) { + return this._onceReturnValue; + } + else { + return true; + } + }; + + /** + * Fetches the events object and creates one if required. + * + * @return {Object} The events storage object. + * @api private + */ + proto._getEvents = function _getEvents() { + return this._events || (this._events = {}); + }; + + /** + * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version. + * + * @return {Function} Non conflicting EventEmitter class. + */ + EventEmitter.noConflict = function noConflict() { + exports.EventEmitter = originalGlobalValue; + return EventEmitter; + }; + + return EventEmitter; +}()); +/* jshint ignore:end */ + + + + var validateTypeFunction = function( value, name ) { + validateType( value, name, typeof value === "undefined" || typeof value === "function", "Function" ); + }; + + + + + var superGet, superInit, + globalEe = new EventEmitter(); + + function validateTypeEvent( value, name ) { + validateType( value, name, typeof value === "string" || value instanceof RegExp, "String or RegExp" ); + } + + function validateThenCall( method, self ) { + return function( event, listener ) { + validatePresence( event, "event" ); + validateTypeEvent( event, "event" ); + + validatePresence( listener, "listener" ); + validateTypeFunction( listener, "listener" ); + + return self[ method ].apply( self, arguments ); + }; + } + + function off( self ) { + return validateThenCall( "off", self ); + } + + function on( self ) { + return validateThenCall( "on", self ); + } + + function once( self ) { + return validateThenCall( "once", self ); + } + + Cldr.off = off( globalEe ); + Cldr.on = on( globalEe ); + Cldr.once = once( globalEe ); + + /** + * Overload Cldr.prototype.init(). + */ + superInit = Cldr.prototype.init; + Cldr.prototype.init = function() { + var ee; + this.ee = ee = new EventEmitter(); + this.off = off( ee ); + this.on = on( ee ); + this.once = once( ee ); + superInit.apply( this, arguments ); + }; + + /** + * getOverload is encapsulated, because of cldr/unresolved. If it's loaded + * after cldr/event (and note it overwrites .get), it can trigger this + * overload again. + */ + function getOverload() { + + /** + * Overload Cldr.prototype.get(). + */ + superGet = Cldr.prototype.get; + Cldr.prototype.get = function( path ) { + var value = superGet.apply( this, arguments ); + path = pathNormalize( path, this.attributes ).join( "/" ); + globalEe.trigger( "get", [ path, value ] ); + this.ee.trigger( "get", [ path, value ] ); + return value; + }; + } + + Cldr._eventInit = getOverload; + getOverload(); + + return Cldr; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/supplemental.js b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/supplemental.js new file mode 100644 index 0000000..855de02 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/supplemental.js @@ -0,0 +1,101 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var alwaysArray = Cldr._alwaysArray; + + + + var supplementalMain = function( cldr ) { + + var prepend, supplemental; + + prepend = function( prepend ) { + return function( path ) { + path = alwaysArray( path ); + return cldr.get( [ prepend ].concat( path ) ); + }; + }; + + supplemental = prepend( "supplemental" ); + + // Week Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data + supplemental.weekData = prepend( "supplemental/weekData" ); + + supplemental.weekData.firstDay = function() { + return cldr.get( "supplemental/weekData/firstDay/{territory}" ) || + cldr.get( "supplemental/weekData/firstDay/001" ); + }; + + supplemental.weekData.minDays = function() { + var minDays = cldr.get( "supplemental/weekData/minDays/{territory}" ) || + cldr.get( "supplemental/weekData/minDays/001" ); + return parseInt( minDays, 10 ); + }; + + // Time Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + supplemental.timeData = prepend( "supplemental/timeData" ); + + supplemental.timeData.allowed = function() { + return cldr.get( "supplemental/timeData/{territory}/_allowed" ) || + cldr.get( "supplemental/timeData/001/_allowed" ); + }; + + supplemental.timeData.preferred = function() { + return cldr.get( "supplemental/timeData/{territory}/_preferred" ) || + cldr.get( "supplemental/timeData/001/_preferred" ); + }; + + return supplemental; + + }; + + + + + var initSuper = Cldr.prototype.init; + + /** + * .init() automatically ran on construction. + * + * Overload .init(). + */ + Cldr.prototype.init = function() { + initSuper.apply( this, arguments ); + this.supplemental = supplementalMain( this ); + }; + + return Cldr; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/unresolved.js b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/unresolved.js new file mode 100644 index 0000000..0248ccb --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/dist/cldr/unresolved.js @@ -0,0 +1,164 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var coreLoad = Cldr._coreLoad; + var jsonMerge = Cldr._jsonMerge; + var pathNormalize = Cldr._pathNormalize; + var resourceGet = Cldr._resourceGet; + var validatePresence = Cldr._validatePresence; + var validateTypePath = Cldr._validateTypePath; + + + + var bundleParentLookup = function( Cldr, locale ) { + var normalizedPath, parent; + + if ( locale === "root" ) { + return; + } + + // First, try to find parent on supplemental data. + normalizedPath = pathNormalize( [ "supplemental/parentLocales/parentLocale", locale ] ); + parent = resourceGet( Cldr._resolved, normalizedPath ) || resourceGet( Cldr._raw, normalizedPath ); + if ( parent ) { + return parent; + } + + // Or truncate locale. + parent = locale.substr( 0, locale.lastIndexOf( Cldr.localeSep ) ); + if ( !parent ) { + return "root"; + } + + return parent; + }; + + + + + // @path: normalized path + var resourceSet = function( data, path, value ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + if ( !node[ path[ i ] ] ) { + node[ path[ i ] ] = {}; + } + node = node[ path[ i ] ]; + } + node[ path[ i ] ] = value; + }; + + + var itemLookup = (function() { + + var lookup; + + lookup = function( Cldr, locale, path, attributes, childLocale ) { + var normalizedPath, parent, value; + + // 1: Finish recursion + // 2: Avoid infinite loop + if ( typeof locale === "undefined" /* 1 */ || locale === childLocale /* 2 */ ) { + return; + } + + // Resolve path + normalizedPath = pathNormalize( path, attributes ); + + // Check resolved (cached) data first + // 1: Due to #16, never use the cached resolved non-leaf nodes. It may not + // represent its leafs in its entirety. + value = resourceGet( Cldr._resolved, normalizedPath ); + if ( value && typeof value !== "object" /* 1 */ ) { + return value; + } + + // Check raw data + value = resourceGet( Cldr._raw, normalizedPath ); + + if ( !value ) { + // Or, lookup at parent locale + parent = bundleParentLookup( Cldr, locale ); + value = lookup( Cldr, parent, path, jsonMerge( attributes, { bundle: parent }), locale ); + } + + if ( value ) { + // Set resolved (cached) + resourceSet( Cldr._resolved, normalizedPath, value ); + } + + return value; + }; + + return lookup; + +}()); + + + Cldr._raw = {}; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved or unresolved cldr data. + * Overwrite Cldr.load(). + */ + Cldr.load = function() { + Cldr._raw = coreLoad( Cldr, Cldr._raw, arguments ); + }; + + /** + * Overwrite Cldr.prototype.get(). + */ + Cldr.prototype.get = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + // 1: use bundle as locale on item lookup for simplification purposes, because no other extended subtag is used anyway on bundle parent lookup. + // 2: during init(), this method is called, but bundle is yet not defined. Use "" as a workaround in this very specific scenario. + return itemLookup( Cldr, this.attributes && this.attributes.bundle /* 1 */ || "" /* 2 */, path, this.attributes ); + }; + + // In case cldr/unresolved is loaded after cldr/event, we trigger its overloads again. Because, .get is overwritten in here. + if ( Cldr._eventInit ) { + Cldr._eventInit(); + } + + return Cldr; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/cldrjs/dist/node_main.js b/StockManMVC/.bin/bower_components/cldrjs/dist/node_main.js new file mode 100644 index 0000000..371f288 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/dist/node_main.js @@ -0,0 +1,22 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ + +// Cldr +module.exports = require( "./cldr" ); + +// Extent Cldr with the following modules +require( "./cldr/event" ); +require( "./cldr/supplemental" ); +require( "./cldr/unresolved" ); diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/attributes.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/attributes.md new file mode 100644 index 0000000..02242d7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/attributes.md @@ -0,0 +1,15 @@ +## .attributes + +Attributes is an Object created during instance initialization (construction), and are used internally by `.get()` to replace dynamic parts of an item path. + +| Attribute | Field | +| --- | --- | +| `language` | Language Subtag ([spec](http://www.unicode.org/reports/tr35/#Language_Locale_Field_Definitions)) | +| `script` | Script Subtag ([spec](http://www.unicode.org/reports/tr35/#Language_Locale_Field_Definitions)) | +| `region` or `territory` | Region Subtag ([spec](http://www.unicode.org/reports/tr35/#Language_Locale_Field_Definitions)) | +| `languageId` | Language Id ([spec](http://www.unicode.org/reports/tr35/#Unicode_language_identifier)) | +| `maxLanguageId` | Maximized Language Id ([spec](http://www.unicode.org/reports/tr35/#Likely_Subtags)) | + +- `language`, `script`, `territory` (also aliased as `region`), and `maxLanguageId` are computed by [adding likely subtags](./src/likely-subtags.js) according to the [specification](http://www.unicode.org/reports/tr35/#Likely_Subtags). +- `languageId` is always in the succint form, obtained by [removing the likely subtags from `maxLanguageId`](./src/remove-likely-subtags.js) according to the [specification](http://www.unicode.org/reports/tr35/#Likely_Subtags). + diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/constructor.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/constructor.md new file mode 100644 index 0000000..a6c3b86 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/constructor.md @@ -0,0 +1,9 @@ +## new Cldr( locale ) + +Create a new instance of Cldr. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *locale* | String | `"en"`, `"pt-BR"` | + +More information in the [specification](http://www.unicode.org/reports/tr35/#Locale). diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/get.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/get.md new file mode 100644 index 0000000..eaf6f88 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/get.md @@ -0,0 +1,18 @@ +## .get( path ) + +Get the item data given its path, or `undefined` if missing. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *path* | String or
Array | `"/cldr/main/{languageId}/numbers/symbols-numberSystem-latn/decimal"`
`[ "cldr", "main", "{languageId}", "numbers", "symbols-numberSystem-latn", "decimal" ]` | + +On *path* parameter, note the leading "/cldr" can be ommited. Also, note that its Array form accepts subpaths, eg. `[ "cldr/main", "{languageId}", "numbers/symbols-numberSystem-latn/"decimal" ]`. + +The [locale attributes](#cldrattributes), eg. `{languageId}`, are replaced with their appropriate values. + +If extended with the `cldr/unresolved.js` module, get the item data or lookup by following [locale inheritance](http://www.unicode.org/reports/tr35/#Locale_Inheritance), set a local resolved cache if it's found (for subsequent faster access), or return `undefined`. + +```javascript +ptBr.get( "main/{languageId}/numbers/symbols-numberSystem-latn/decimal" ); +// ➡ "," +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/load.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/load.md new file mode 100644 index 0000000..6c65fbd --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/load.md @@ -0,0 +1,23 @@ +## Cldr.load( json, ... ) + +Load resolved or unresolved [1] JSON data. + +| Parameter | Type | Description | +| --- | --- | --- | +| *json* | Object | Resolved or unresolved [1] CLDR JSON data | + +```javascript +Cldr.load({ + "main": { + "pt-BR": { + "numbers": { + "symbols-numberSystem-latn": { + "decimal": "," + } + } + } + } +}); +``` + +1: Unresolved processing is **only available** after loading `cldr/unresolved.js` extension module. diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/main.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/main.md new file mode 100644 index 0000000..ce7e69b --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/core/main.md @@ -0,0 +1,12 @@ +## .main( path ) + +It's an alias for `.get([ "main/{languageId}", ... ])`. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *path* | String or
Array | See `cldr.get()` for more information | + +```javascript +ptBr.main( "numbers/symbols-numberSystem-latn/decimal" ); +// ➡ "," +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/event_get.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/event_get.md new file mode 100644 index 0000000..2fd7361 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/event_get.md @@ -0,0 +1,10 @@ +## get ➡ ( path, value ) + +Triggered before a `.get()` (or any alias) return. The triggered listener receives the normalized *path* and the *value* found. + +| Parameter | Description | +| --- | --- | +| *path* | See [../core/get.md](.get()) for more information | +| *value* | See [../core/get.md](.get()) for more information | + +See [Cldr.on()](global_on.md) or [.on()](on.md) for example. diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_off.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_off.md new file mode 100644 index 0000000..8c3072c --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_off.md @@ -0,0 +1,10 @@ +## Cldr.off( event, listener ) + +Removes a listener function from the specified event globally (for all instances). + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +See [Cldr.on()](global_on.md) for example. diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_on.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_on.md new file mode 100644 index 0000000..5e7decc --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_on.md @@ -0,0 +1,32 @@ +## Cldr.on( event, listener ) + +Add a listener function to the specified event globally (for all instances). + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +```javascript +Cldr.load({ + foo: "bar" +}); + +function log( path, value ) { + console.log( "Got", path, value ); +} + +Cldr.on( "get", log ); + +en = new Cldr( "en" ); +en.get( "foo" ); +// Got foo bar (logged) +// ➡ bar + +zh = new Cldr( "zh" ); +zh.get( "foo" ); +// Got foo bar (logged) +// ➡ bar + +Cldr.off( "get", log ); +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_once.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_once.md new file mode 100644 index 0000000..54c4956 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/global_once.md @@ -0,0 +1,28 @@ +## Cldr.once( event, listener ) + +Add a listener function to the specified event globally (for all instances). It will be automatically removed after it's first execution. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +```javascript +Cldr.load({ + foo: "bar" +}); + +function log( path, value ) { + console.log( "Got", path, value ); +} + +Cldr.once( "get", log ); + +cldr = new Cldr( "en" ); +cldr.get( "foo" ); +// Got foo bar (logged) +// ➡ bar + +cldr.get( "foo" ); +// ➡ bar +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/off.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/off.md new file mode 100644 index 0000000..bf74ded --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/off.md @@ -0,0 +1,10 @@ +## .off( event, listener ) + +Removes a listener function from the specified event for this instance. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +See [cldr.on()](on.md) for example. diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/on.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/on.md new file mode 100644 index 0000000..d9915b1 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/on.md @@ -0,0 +1,26 @@ +## .on( event, listener ) + +Add a listener function to the specified event for this instance. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +```javascript +Cldr.load({ + foo: "bar" +}); + +function log( path, value ) { + console.log( "Got", path, value ); +} + +cldr = new Cldr( "en" ); +cldr.on( "get", log ); +cldr.get( "foo" ); +// Got foo bar (logged) +// ➡ bar + +cldr.off( "get", log ); +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/once.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/once.md new file mode 100644 index 0000000..39e8979 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/event/once.md @@ -0,0 +1,27 @@ +## .once( event, listener ) + +Add a listener function to the specified event for this instance. It will be automatically removed after it's first execution. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *event* | String | `"get"` | +| *listener* | Function | | + +```javascript +Cldr.load({ + foo: "bar" +}); + +function log( path, value ) { + console.log( "Got", path, value ); +} + +cldr = new Cldr( "en" ); +cldr.once( "get", log ); +cldr.get( "foo" ); +// Got foo bar (logged) +// ➡ bar + +cldr.get( "foo" ); +// ➡ bar +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental.md new file mode 100644 index 0000000..ceb2231 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental.md @@ -0,0 +1,12 @@ +## .supplemental( path ) + +It's an alias for `.get([ "supplemental", ... ])`. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *path* | String or
Array | See `cldr.get()` for more information | + +```javascript +en.supplemental( "gender/personList/{language}" ); +// ➡ "neutral" +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_allowed.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_allowed.md new file mode 100644 index 0000000..3bafd3f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_allowed.md @@ -0,0 +1,8 @@ +## .supplemental.timeData.allowed() + +Helper function. Return the supplemental timeData allowed of locale's territory. + +```javascript +en.supplemental.timeData.allowed(); +// ➡ "H h" +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_preferred.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_preferred.md new file mode 100644 index 0000000..d4d0425 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/time_data_preferred.md @@ -0,0 +1,8 @@ +## .supplemental.timeData.preferred() + +Helper function. Return the supplemental timeData preferred of locale's territory. + +```javascript +en.supplemental.timeData.preferred(); +// ➡ "h" +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_first_day.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_first_day.md new file mode 100644 index 0000000..f0064e9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_first_day.md @@ -0,0 +1,8 @@ +## .supplemental.weekData.firstDay() + +Helper function. Return the supplemental weekData firstDay of locale's territory. + +```javascript +en.supplemental.weekData.firstDay(); +// ➡ "sun" +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_min_days.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_min_days.md new file mode 100644 index 0000000..efdd0a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/supplemental/week_data_min_days.md @@ -0,0 +1,8 @@ +## .supplemental.weekData.minDays() + +Helper function. Return the supplemental weekData minDays of locale's territory as a Number. + +```javascript +en.supplemental.weekData.minDays(); +// ➡ 1 +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/api/unresolved/get.md b/StockManMVC/.bin/bower_components/cldrjs/doc/api/unresolved/get.md new file mode 100644 index 0000000..bc35931 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/doc/api/unresolved/get.md @@ -0,0 +1,12 @@ +## .get( path ) + +Overload (extend) `.get()` to get the item data or lookup by following [locale inheritance](http://www.unicode.org/reports/tr35/#Locale_Inheritance), set a local resolved cache if it's found (for subsequent faster access), or return `undefined`. + +| Parameter | Type | Exampe | +| --- | --- | --- | +| *path* | String or
Array | See `cldr.get()` above for more information | + +```javascript +ptBr.get( "main/{languageId}/numbers/symbols-numberSystem-latn/decimal" ); +// ➡ "," +``` diff --git a/StockManMVC/.bin/bower_components/cldrjs/doc/asset/jquery.png b/StockManMVC/.bin/bower_components/cldrjs/doc/asset/jquery.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb7a1fdfa1f52aa30d2abdaeb29fd7396ad0a7e GIT binary patch literal 7137 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 s;^-%qlK-!H=25" + }, + "devDependencies": { + "cldr-data-downloader": "0.2.x", + "grunt": "0.4.x", + "grunt-compare-size": "0.4.0", + "grunt-contrib-connect": "0.3.x", + "grunt-contrib-copy": "0.4.x", + "grunt-contrib-jshint": "0.10.x", + "grunt-contrib-requirejs": "0.4.x", + "grunt-contrib-uglify": "0.2.x", + "grunt-dco": "0.0.3", + "gzip-js": "0.3.2", + "grunt-mocha": "0.3.x", + "matchdep": "*" + } +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/.dist_jshintrc b/StockManMVC/.bin/bower_components/cldrjs/src/.dist_jshintrc new file mode 100644 index 0000000..4eae8e7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/.dist_jshintrc @@ -0,0 +1,17 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "onevar": false, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true, + + "predef": [ "Cldr", "define", "module", "require" ] +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/.jshintrc b/StockManMVC/.bin/bower_components/cldrjs/src/.jshintrc new file mode 100644 index 0000000..0a9a03c --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/.jshintrc @@ -0,0 +1,17 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "onevar": false, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true, + + "predef": [ "define" ] +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/intro.min.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro.min.js new file mode 100644 index 0000000..47b5dc6 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro.min.js @@ -0,0 +1,4 @@ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_core.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_core.js new file mode 100644 index 0000000..8490f60 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_core.js @@ -0,0 +1,28 @@ +/** + * CLDR JavaScript Library v@VERSION + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( root, factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory(); + } else { + // Global + root.Cldr = factory(); + } + +}( this, function() { diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_event.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_event.js new file mode 100644 index 0000000..8b0a53f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_event.js @@ -0,0 +1,34 @@ +/** + * CLDR JavaScript Library v@VERSION + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var pathNormalize = Cldr._pathNormalize, + validatePresence = Cldr._validatePresence, + validateType = Cldr._validateType; + diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_supplemental.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_supplemental.js new file mode 100644 index 0000000..6a662a2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_supplemental.js @@ -0,0 +1,32 @@ +/** + * CLDR JavaScript Library v@VERSION + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var alwaysArray = Cldr._alwaysArray; + diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_unresolved.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_unresolved.js new file mode 100644 index 0000000..129d628 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/intro_unresolved.js @@ -0,0 +1,37 @@ +/** + * CLDR JavaScript Library v@VERSION + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var coreLoad = Cldr._coreLoad; + var jsonMerge = Cldr._jsonMerge; + var pathNormalize = Cldr._pathNormalize; + var resourceGet = Cldr._resourceGet; + var validatePresence = Cldr._validatePresence; + var validateTypePath = Cldr._validateTypePath; + diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/node_main.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/node_main.js new file mode 100644 index 0000000..772f757 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/node_main.js @@ -0,0 +1,22 @@ +/** + * CLDR JavaScript Library v@VERSION + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * CLDR JavaScript Library v@VERSION @DATE MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ + +// Cldr +module.exports = require( "./cldr" ); + +// Extent Cldr with the following modules +require( "./cldr/event" ); +require( "./cldr/supplemental" ); +require( "./cldr/unresolved" ); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/build/outro.js b/StockManMVC/.bin/bower_components/cldrjs/src/build/outro.js new file mode 100644 index 0000000..be4600a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/build/outro.js @@ -0,0 +1 @@ +})); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/bundle/lookup.js b/StockManMVC/.bin/bower_components/cldrjs/src/bundle/lookup.js new file mode 100644 index 0000000..9604498 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/bundle/lookup.js @@ -0,0 +1,40 @@ +define([ + "../core/likely_subtags", + "../core/remove_likely_subtags", + "../core/subtags", + "../util/array/for_each" +], function( coreLikelySubtags, coreRemoveLikelySubtags, coreSubtags, arrayForEach ) { + + /** + * bundleLookup( minLanguageId ) + * + * @Cldr [Cldr class] + * + * @cldr [Cldr instance] + * + * @minLanguageId [String] requested languageId after applied remove likely subtags. + */ + return function( Cldr, cldr, minLanguageId ) { + var availableBundleMap = Cldr._availableBundleMap, + availableBundleMapQueue = Cldr._availableBundleMapQueue; + + if ( availableBundleMapQueue.length ) { + arrayForEach( availableBundleMapQueue, function( bundle ) { + var existing, maxBundle, minBundle, subtags; + subtags = coreSubtags( bundle ); + maxBundle = coreLikelySubtags( Cldr, cldr, subtags ); + minBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle ); + minBundle = minBundle.join( Cldr.localeSep ); + existing = availableBundleMapQueue[ minBundle ]; + if ( existing && existing.length < bundle.length ) { + return; + } + availableBundleMap[ minBundle ] = bundle; + }); + Cldr._availableBundleMapQueue = []; + } + + return availableBundleMap[ minLanguageId ] || null; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/bundle/parent_lookup.js b/StockManMVC/.bin/bower_components/cldrjs/src/bundle/parent_lookup.js new file mode 100644 index 0000000..0f5db21 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/bundle/parent_lookup.js @@ -0,0 +1,29 @@ +define([ + "../resource/get", + "../path/normalize" +], function( resourceGet, pathNormalize ) { + + return function( Cldr, locale ) { + var normalizedPath, parent; + + if ( locale === "root" ) { + return; + } + + // First, try to find parent on supplemental data. + normalizedPath = pathNormalize( [ "supplemental/parentLocales/parentLocale", locale ] ); + parent = resourceGet( Cldr._resolved, normalizedPath ) || resourceGet( Cldr._raw, normalizedPath ); + if ( parent ) { + return parent; + } + + // Or truncate locale. + parent = locale.substr( 0, locale.lastIndexOf( Cldr.localeSep ) ); + if ( !parent ) { + return "root"; + } + + return parent; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/create_error.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/create_error.js new file mode 100644 index 0000000..9536c7a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/create_error.js @@ -0,0 +1,21 @@ +define([ + "../util/array/for_each", + "../util/object/keys" +], function( arrayForEach, objectKeys ) { + + return function( code, attributes ) { + var error, message; + + message = code + ( attributes && JSON ? ": " + JSON.stringify( attributes ) : "" ); + error = new Error( message ); + error.code = code; + + // extend( error, attributes ); + arrayForEach( objectKeys( attributes ), function( attribute ) { + error[ attribute ] = attributes[ attribute ]; + }); + + return error; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate.js new file mode 100644 index 0000000..43992bd --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate.js @@ -0,0 +1,11 @@ +define([ + "./create_error" +], function( createError ) { + + return function( code, check, attributes ) { + if ( !check ) { + throw createError( code, attributes ); + } + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/presence.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/presence.js new file mode 100644 index 0000000..3bd5652 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/presence.js @@ -0,0 +1,11 @@ +define([ + "../validate" +], function( validate ) { + + return function( value, name ) { + validate( "E_MISSING_PARAMETER", typeof value !== "undefined", { + name: name + }); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type.js new file mode 100644 index 0000000..4e72f00 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type.js @@ -0,0 +1,13 @@ +define([ + "../validate" +], function( validate ) { + + return function( value, name, check, expected ) { + validate( "E_INVALID_PAR_TYPE", check, { + expected: expected, + name: name, + value: value + }); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/function.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/function.js new file mode 100644 index 0000000..a23d09b --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/function.js @@ -0,0 +1,9 @@ +define([ + "../type" +], function( validateType ) { + + return function( value, name ) { + validateType( value, name, typeof value === "undefined" || typeof value === "function", "Function" ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/path.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/path.js new file mode 100644 index 0000000..e1b35a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/path.js @@ -0,0 +1,10 @@ +define([ + "../type", + "../../../util/array/is_array" +], function( validateType, arrayIsArray ) { + + return function( value, name ) { + validateType( value, name, typeof value === "string" || arrayIsArray( value ), "String or Array" ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/plain_object.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/plain_object.js new file mode 100644 index 0000000..188f0f4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/plain_object.js @@ -0,0 +1,10 @@ +define([ + "../type", + "../../../util/is_plain_object" +], function( validateType, isPlainObject ) { + + return function( value, name ) { + validateType( value, name, typeof value === "undefined" || isPlainObject( value ), "Plain Object" ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/string.js b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/string.js new file mode 100644 index 0000000..bdba6b4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/common/validate/type/string.js @@ -0,0 +1,9 @@ +define([ + "../type" +], function( validateType ) { + + return function( value, name ) { + validateType( value, name, typeof value === "string", "a string" ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core.js b/StockManMVC/.bin/bower_components/cldrjs/src/core.js new file mode 100644 index 0000000..7244c4a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core.js @@ -0,0 +1,151 @@ +define([ + "./bundle/lookup", + "./common/create_error", + "./common/validate", + "./common/validate/presence", + "./common/validate/type", + "./common/validate/type/path", + "./common/validate/type/plain_object", + "./common/validate/type/string", + "./core/likely_subtags", + "./core/load", + "./core/remove_likely_subtags", + "./core/subtags", + "./item/get_resolved", + "./path/normalize", + "./resource/get", + "./util/always_array", + "./util/json/merge" +], function( bundleLookup, createError, validate, validatePresence, validateType, validateTypePath, validateTypePlainObject, validateTypeString, coreLikelySubtags, coreLoad, coreRemoveLikelySubtags, coreSubtags, itemGetResolved, pathNormalize, resourceGet, alwaysArray, jsonMerge ) { + + /** + * new Cldr() + */ + var Cldr = function( locale ) { + this.init( locale ); + }; + + // Build optimization hack to avoid duplicating functions across modules. + Cldr._alwaysArray = alwaysArray; + Cldr._coreLoad = coreLoad; + Cldr._createError = createError; + Cldr._itemGetResolved = itemGetResolved; + Cldr._jsonMerge = jsonMerge; + Cldr._pathNormalize = pathNormalize; + Cldr._resourceGet = resourceGet; + Cldr._validatePresence = validatePresence; + Cldr._validateType = validateType; + Cldr._validateTypePath = validateTypePath; + Cldr._validateTypePlainObject = validateTypePlainObject; + + Cldr._availableBundleMap = {}; + Cldr._availableBundleMapQueue = []; + Cldr._resolved = {}; + + // Allow user to override locale separator "-" (default) | "_". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both "-" and "_" are valid locale separators (eg. "en_GB", "en-GB"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set. + Cldr.localeSep = "-"; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved cldr data. + */ + Cldr.load = function() { + Cldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments ); + }; + + /** + * .init() automatically run on instantiation/construction. + */ + Cldr.prototype.init = function( locale ) { + var attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant, + sep = Cldr.localeSep; + + validatePresence( locale, "locale" ); + validateTypeString( locale, "locale" ); + + subtags = coreSubtags( locale ); + + unicodeLocaleExtensions = subtags[ 4 ]; + variant = subtags[ 3 ]; + + // Normalize locale code. + // Get (or deduce) the "triple subtags": language, territory (also aliased as region), and script subtags. + // Get the variant subtags (calendar, collation, currency, etc). + // refs: + // - http://www.unicode.org/reports/tr35/#Field_Definitions + // - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs + // - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier + + // When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags. + maxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags; + language = maxLanguageId[ 0 ]; + script = maxLanguageId[ 1 ]; + territory = maxLanguageId[ 2 ]; + + minLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep ); + + // Set attributes + this.attributes = attributes = { + bundle: bundleLookup( Cldr, this, minLanguageId ), + + // Unicode Language Id + minlanguageId: minLanguageId, + maxLanguageId: maxLanguageId.join( sep ), + + // Unicode Language Id Subtabs + language: language, + script: script, + territory: territory, + region: territory, /* alias */ + variant: variant + }; + + // Unicode locale extensions. + unicodeLocaleExtensions && ( "-" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) { + + if ( key ) { + + // Extension is in the `keyword` form. + attributes[ "u" + key ] = type; + } else { + + // Extension is in the `attribute` form. + attributes[ "u" + attribute ] = true; + } + }); + + this.locale = locale; + }; + + /** + * .get() + */ + Cldr.prototype.get = function( path ) { + + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + return itemGetResolved( Cldr, path, this.attributes ); + }; + + /** + * .main() + */ + Cldr.prototype.main = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + validate( "E_MISSING_BUNDLE", this.attributes.bundle !== null, { + locale: this.locale + }); + + path = alwaysArray( path ); + return this.get( [ "main/{bundle}" ].concat( path ) ); + }; + + return Cldr; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core/likely_subtags.js b/StockManMVC/.bin/bower_components/cldrjs/src/core/likely_subtags.js new file mode 100644 index 0000000..20d7392 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core/likely_subtags.js @@ -0,0 +1,97 @@ +define([ + "../path/normalize", + "../util/array/some" +], function( pathNormalize, arraySome ) { + + /** + * Return the maximized language id as defined in + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. Canonicalize. + * 1.1 Make sure the input locale is in canonical form: uses the right + * separator, and has the right casing. + * TODO Right casing? What df? It seems languages are lowercase, scripts are + * Capitalized, territory is uppercase. I am leaving this as an exercise to + * the user. + * + * 1.2 Replace any deprecated subtags with their canonical values using the + * data in supplemental metadata. Use the first value in the + * replacement list, if it exists. Language tag replacements may have multiple + * parts, such as "sh" ➞ "sr_Latn" or mo" ➞ "ro_MD". In such a case, the + * original script and/or region are retained if there is one. Thus + * "sh_Arab_AQ" ➞ "sr_Arab_AQ", not "sr_Latn_AQ". + * TODO What data? + * + * 1.3 If the tag is grandfathered (see in the supplemental data), then return it. + * TODO grandfathered? + * + * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur. + * 1.5 Get the components of the cleaned-up source tag (languages, scripts, + * and regions), plus any variants and extensions. + * 2. Lookup. Lookup each of the following in order, and stop on the first + * match: + * 2.1 languages_scripts_regions + * 2.2 languages_regions + * 2.3 languages_scripts + * 2.4 languages + * 2.5 und_scripts + * 3. Return + * 3.1 If there is no match, either return an error value, or the match for + * "und" (in APIs where a valid language tag is required). + * 3.2 Otherwise there is a match = languagem_scriptm_regionm + * 3.3 Let xr = xs if xs is not empty, and xm otherwise. + * 3.4 Return the language tag composed of languager _ scriptr _ regionr + + * variants + extensions. + * + * @subtags [Array] normalized language id subtags tuple (see init.js). + */ + return function( Cldr, cldr, subtags, options ) { + var match, matchFound, + language = subtags[ 0 ], + script = subtags[ 1 ], + sep = Cldr.localeSep, + territory = subtags[ 2 ], + variantsAndUnicodeLocaleExtensions = subtags.slice( 3, 4 ); + options = options || {}; + + // Skip if (language, script, territory) is not empty [3.3] + if ( language !== "und" && script !== "Zzzz" && territory !== "ZZ" ) { + return [ language, script, territory ].concat( variantsAndUnicodeLocaleExtensions ); + } + + // Skip if no supplemental likelySubtags data is present + if ( typeof cldr.get( "supplemental/likelySubtags" ) === "undefined" ) { + return; + } + + // [2] + matchFound = arraySome([ + [ language, script, territory ], + [ language, territory ], + [ language, script ], + [ language ], + [ "und", script ] + ], function( test ) { + return match = !(/\b(Zzzz|ZZ)\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ "supplemental/likelySubtags", test.join( sep ) ] ); + }); + + // [3] + if ( matchFound ) { + // [3.2 .. 3.4] + match = match.split( sep ); + return [ + language !== "und" ? language : match[ 0 ], + script !== "Zzzz" ? script : match[ 1 ], + territory !== "ZZ" ? territory : match[ 2 ] + ].concat( + variantsAndUnicodeLocaleExtensions + ); + } else if ( options.force ) { + // [3.1.2] + return cldr.get( "supplemental/likelySubtags/und" ).split( sep ); + } else { + // [3.1.1] + return; + } + }; +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core/load.js b/StockManMVC/.bin/bower_components/cldrjs/src/core/load.js new file mode 100644 index 0000000..e6cebfc --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core/load.js @@ -0,0 +1,38 @@ +define([ + "./set_available_bundles", + "../common/validate/presence", + "../common/validate/type/plain_object", + "../util/always_array", + "../util/json/merge" +], function( coreSetAvailableBundles, validatePresence, validateTypePlainObject, alwaysArray, jsonMerge ) { + + /** + * load( Cldr, source, jsons ) + * + * @Cldr [Cldr class] + * + * @source [Object] + * + * @jsons [arguments] + */ + return function( Cldr, source, jsons ) { + var i, j, json; + + validatePresence( jsons[ 0 ], "json" ); + + // Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`. + for ( i = 0; i < jsons.length; i++ ) { + + // Support array parameters, e.g., `Cldr.load([{...}, {...}])`. + json = alwaysArray( jsons[ i ] ); + + for ( j = 0; j < json.length; j++ ) { + validateTypePlainObject( json[ j ], "json" ); + source = jsonMerge( source, json[ j ] ); + coreSetAvailableBundles( Cldr, json[ j ] ); + } + } + + return source; + }; +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core/remove_likely_subtags.js b/StockManMVC/.bin/bower_components/cldrjs/src/core/remove_likely_subtags.js new file mode 100644 index 0000000..f03426f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core/remove_likely_subtags.js @@ -0,0 +1,49 @@ +define([ + "./likely_subtags", + "../util/array/some" +], function( coreLikelySubtags, arraySome ) { + + /** + * Given a locale, remove any fields that Add Likely Subtags would add. + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled, + * return it. + * 2. Remove the variants from max. + * 3. Then for trial in {language, language _ region, language _ script}. If + * AddLikelySubtags(trial) = max, then return trial + variants. + * 4. If you do not get a match, return max + variants. + * + * @maxLanguageId [Array] maxLanguageId tuple (see init.js). + */ + return function( Cldr, cldr, maxLanguageId ) { + var match, matchFound, + language = maxLanguageId[ 0 ], + script = maxLanguageId[ 1 ], + territory = maxLanguageId[ 2 ], + variants = maxLanguageId[ 3 ]; + + // [3] + matchFound = arraySome([ + [ [ language, "Zzzz", "ZZ" ], [ language ] ], + [ [ language, "Zzzz", territory ], [ language, territory ] ], + [ [ language, script, "ZZ" ], [ language, script ] ] + ], function( test ) { + var result = coreLikelySubtags( Cldr, cldr, test[ 0 ] ); + match = test[ 1 ]; + return result && result[ 0 ] === maxLanguageId[ 0 ] && + result[ 1 ] === maxLanguageId[ 1 ] && + result[ 2 ] === maxLanguageId[ 2 ]; + }); + + if ( matchFound ) { + if ( variants ) { + match.push( variants ); + } + return match; + } + + // [4] + return maxLanguageId; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core/set_available_bundles.js b/StockManMVC/.bin/bower_components/cldrjs/src/core/set_available_bundles.js new file mode 100644 index 0000000..cf85063 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core/set_available_bundles.js @@ -0,0 +1,28 @@ +define([ + "../resource/get" +], function( resourceGet ) { + + /** + * setAvailableBundles( Cldr, json ) + * + * @Cldr [Cldr class] + * + * @json resolved/unresolved cldr data. + * + * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}. + */ + return function( Cldr, json ) { + var bundle, + availableBundleMapQueue = Cldr._availableBundleMapQueue, + main = resourceGet( json, [ "main" ] ); + + if ( main ) { + for ( bundle in main ) { + if ( main.hasOwnProperty( bundle ) && bundle !== "root" && + availableBundleMapQueue.indexOf( bundle ) === -1 ) { + availableBundleMapQueue.push( bundle ); + } + } + } + }; +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/core/subtags.js b/StockManMVC/.bin/bower_components/cldrjs/src/core/subtags.js new file mode 100644 index 0000000..c6857b1 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/core/subtags.js @@ -0,0 +1,52 @@ +define(function() { + + /** + * subtags( locale ) + * + * @locale [String] + */ + return function( locale ) { + var aux, unicodeLanguageId, + subtags = []; + + locale = locale.replace( /_/, "-" ); + + // Unicode locale extensions. + aux = locale.split( "-u-" ); + if ( aux[ 1 ] ) { + aux[ 1 ] = aux[ 1 ].split( "-t-" ); + locale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? "-t-" + aux[ 1 ][ 1 ] : ""); + subtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ]; + } + + // TODO normalize transformed extensions. Currently, skipped. + // subtags[ x ] = locale.split( "-t-" )[ 1 ]; + unicodeLanguageId = locale.split( "-t-" )[ 0 ]; + + // unicode_language_id = "root" + // | unicode_language_subtag + // (sep unicode_script_subtag)? + // (sep unicode_region_subtag)? + // (sep unicode_variant_subtag)* ; + // + // Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3. + aux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)((-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*)$|^(root)$/ ); + if ( aux === null ) { + return [ "und", "Zzzz", "ZZ" ]; + } + subtags[ 0 /* language */ ] = aux[ 10 ] /* root */ || aux[ 2 ] || "und"; + subtags[ 1 /* script */ ] = aux[ 4 ] || "Zzzz"; + subtags[ 2 /* territory */ ] = aux[ 6 ] || "ZZ"; + if ( aux[ 7 ] && aux[ 7 ].length ) { + subtags[ 3 /* variant */ ] = aux[ 7 ].slice( 1 ) /* remove leading "-" */; + } + + // 0: language + // 1: script + // 2: territory (aka region) + // 3: variant + // 4: unicodeLocaleExtensions + return subtags; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/event.js b/StockManMVC/.bin/bower_components/cldrjs/src/event.js new file mode 100644 index 0000000..94046c9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/event.js @@ -0,0 +1,83 @@ +define([ + "EventEmitter", + "./common/validate/presence", + "./common/validate/type", + "./common/validate/type/function", + "./core", + "./path/normalize" +], function( EventEmitter, validatePresence, validateType, validateTypeFunction, Cldr, pathNormalize ) { + + var superGet, superInit, + globalEe = new EventEmitter(); + + function validateTypeEvent( value, name ) { + validateType( value, name, typeof value === "string" || value instanceof RegExp, "String or RegExp" ); + } + + function validateThenCall( method, self ) { + return function( event, listener ) { + validatePresence( event, "event" ); + validateTypeEvent( event, "event" ); + + validatePresence( listener, "listener" ); + validateTypeFunction( listener, "listener" ); + + return self[ method ].apply( self, arguments ); + }; + } + + function off( self ) { + return validateThenCall( "off", self ); + } + + function on( self ) { + return validateThenCall( "on", self ); + } + + function once( self ) { + return validateThenCall( "once", self ); + } + + Cldr.off = off( globalEe ); + Cldr.on = on( globalEe ); + Cldr.once = once( globalEe ); + + /** + * Overload Cldr.prototype.init(). + */ + superInit = Cldr.prototype.init; + Cldr.prototype.init = function() { + var ee; + this.ee = ee = new EventEmitter(); + this.off = off( ee ); + this.on = on( ee ); + this.once = once( ee ); + superInit.apply( this, arguments ); + }; + + /** + * getOverload is encapsulated, because of cldr/unresolved. If it's loaded + * after cldr/event (and note it overwrites .get), it can trigger this + * overload again. + */ + function getOverload() { + + /** + * Overload Cldr.prototype.get(). + */ + superGet = Cldr.prototype.get; + Cldr.prototype.get = function( path ) { + var value = superGet.apply( this, arguments ); + path = pathNormalize( path, this.attributes ).join( "/" ); + globalEe.trigger( "get", [ path, value ] ); + this.ee.trigger( "get", [ path, value ] ); + return value; + }; + } + + Cldr._eventInit = getOverload; + getOverload(); + + return Cldr; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/item/get_resolved.js b/StockManMVC/.bin/bower_components/cldrjs/src/item/get_resolved.js new file mode 100644 index 0000000..c16a452 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/item/get_resolved.js @@ -0,0 +1,13 @@ +define([ + "../resource/get", + "../path/normalize" +], function( resourceGet, pathNormalize ) { + + return function( Cldr, path, attributes ) { + // Resolve path + var normalizedPath = pathNormalize( path, attributes ); + + return resourceGet( Cldr._resolved, normalizedPath ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/item/lookup.js b/StockManMVC/.bin/bower_components/cldrjs/src/item/lookup.js new file mode 100644 index 0000000..3532572 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/item/lookup.js @@ -0,0 +1,50 @@ +define([ + "../bundle/parent_lookup", + "../path/normalize", + "../resource/get", + "../resource/set", + "../util/json/merge" +], function( bundleParentLookup, pathNormalize, resourceGet, resourceSet, jsonMerge ) { + + var lookup; + + lookup = function( Cldr, locale, path, attributes, childLocale ) { + var normalizedPath, parent, value; + + // 1: Finish recursion + // 2: Avoid infinite loop + if ( typeof locale === "undefined" /* 1 */ || locale === childLocale /* 2 */ ) { + return; + } + + // Resolve path + normalizedPath = pathNormalize( path, attributes ); + + // Check resolved (cached) data first + // 1: Due to #16, never use the cached resolved non-leaf nodes. It may not + // represent its leafs in its entirety. + value = resourceGet( Cldr._resolved, normalizedPath ); + if ( value && typeof value !== "object" /* 1 */ ) { + return value; + } + + // Check raw data + value = resourceGet( Cldr._raw, normalizedPath ); + + if ( !value ) { + // Or, lookup at parent locale + parent = bundleParentLookup( Cldr, locale ); + value = lookup( Cldr, parent, path, jsonMerge( attributes, { bundle: parent }), locale ); + } + + if ( value ) { + // Set resolved (cached) + resourceSet( Cldr._resolved, normalizedPath, value ); + } + + return value; + }; + + return lookup; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/path/normalize.js b/StockManMVC/.bin/bower_components/cldrjs/src/path/normalize.js new file mode 100644 index 0000000..b1d68a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/path/normalize.js @@ -0,0 +1,27 @@ +define([ + "../util/array/is_array" +], function( arrayIsArray ) { + + return function( path, attributes ) { + if ( arrayIsArray( path ) ) { + path = path.join( "/" ); + } + if ( typeof path !== "string" ) { + throw new Error( "invalid path \"" + path + "\"" ); + } + // 1: Ignore leading slash `/` + // 2: Ignore leading `cldr/` + path = path + .replace( /^\// , "" ) /* 1 */ + .replace( /^cldr\// , "" ); /* 2 */ + + // Replace {attribute}'s + path = path.replace( /{[a-zA-Z]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return attributes[ name ]; + }); + + return path.split( "/" ); + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/resource/get.js b/StockManMVC/.bin/bower_components/cldrjs/src/resource/get.js new file mode 100644 index 0000000..f8bfd17 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/resource/get.js @@ -0,0 +1,18 @@ +define(function() { + + // @path: normalized path + return function( data, path ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + node = node[ path[ i ] ]; + if ( !node ) { + return undefined; + } + } + return node[ path[ i ] ]; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/resource/set.js b/StockManMVC/.bin/bower_components/cldrjs/src/resource/set.js new file mode 100644 index 0000000..800b009 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/resource/set.js @@ -0,0 +1,18 @@ +define(function() { + + // @path: normalized path + return function( data, path, value ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + if ( !node[ path[ i ] ] ) { + node[ path[ i ] ] = {}; + } + node = node[ path[ i ] ]; + } + node[ path[ i ] ] = value; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/supplemental.js b/StockManMVC/.bin/bower_components/cldrjs/src/supplemental.js new file mode 100644 index 0000000..7ca2d87 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/supplemental.js @@ -0,0 +1,20 @@ +define([ + "./core", + "./supplemental/main" +], function( Cldr, supplementalMain ) { + + var initSuper = Cldr.prototype.init; + + /** + * .init() automatically ran on construction. + * + * Overload .init(). + */ + Cldr.prototype.init = function() { + initSuper.apply( this, arguments ); + this.supplemental = supplementalMain( this ); + }; + + return Cldr; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/supplemental/main.js b/StockManMVC/.bin/bower_components/cldrjs/src/supplemental/main.js new file mode 100644 index 0000000..a584529 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/supplemental/main.js @@ -0,0 +1,51 @@ +define([ + "../util/always_array" +], function( alwaysArray ) { + + return function( cldr ) { + + var prepend, supplemental; + + prepend = function( prepend ) { + return function( path ) { + path = alwaysArray( path ); + return cldr.get( [ prepend ].concat( path ) ); + }; + }; + + supplemental = prepend( "supplemental" ); + + // Week Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data + supplemental.weekData = prepend( "supplemental/weekData" ); + + supplemental.weekData.firstDay = function() { + return cldr.get( "supplemental/weekData/firstDay/{territory}" ) || + cldr.get( "supplemental/weekData/firstDay/001" ); + }; + + supplemental.weekData.minDays = function() { + var minDays = cldr.get( "supplemental/weekData/minDays/{territory}" ) || + cldr.get( "supplemental/weekData/minDays/001" ); + return parseInt( minDays, 10 ); + }; + + // Time Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + supplemental.timeData = prepend( "supplemental/timeData" ); + + supplemental.timeData.allowed = function() { + return cldr.get( "supplemental/timeData/{territory}/_allowed" ) || + cldr.get( "supplemental/timeData/001/_allowed" ); + }; + + supplemental.timeData.preferred = function() { + return cldr.get( "supplemental/timeData/{territory}/_preferred" ) || + cldr.get( "supplemental/timeData/001/_preferred" ); + }; + + return supplemental; + + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/unresolved.js b/StockManMVC/.bin/bower_components/cldrjs/src/unresolved.js new file mode 100644 index 0000000..a3f76f6 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/unresolved.js @@ -0,0 +1,42 @@ +define([ + "./common/validate/presence", + "./common/validate/type/path", + "./core", + "./core/load", + "./item/lookup" +], function( validatePresence, validateTypePath, Cldr, coreLoad, itemLookup ) { + + Cldr._raw = {}; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved or unresolved cldr data. + * Overwrite Cldr.load(). + */ + Cldr.load = function() { + Cldr._raw = coreLoad( Cldr, Cldr._raw, arguments ); + }; + + /** + * Overwrite Cldr.prototype.get(). + */ + Cldr.prototype.get = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + // 1: use bundle as locale on item lookup for simplification purposes, because no other extended subtag is used anyway on bundle parent lookup. + // 2: during init(), this method is called, but bundle is yet not defined. Use "" as a workaround in this very specific scenario. + return itemLookup( Cldr, this.attributes && this.attributes.bundle /* 1 */ || "" /* 2 */, path, this.attributes ); + }; + + // In case cldr/unresolved is loaded after cldr/event, we trigger its overloads again. Because, .get is overwritten in here. + if ( Cldr._eventInit ) { + Cldr._eventInit(); + } + + return Cldr; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/always_array.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/always_array.js new file mode 100644 index 0000000..c8ddb66 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/always_array.js @@ -0,0 +1,9 @@ +define([ + "./array/is_array" +], function( arrayIsArray ) { + + return function( somethingOrArray ) { + return arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ]; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/array/for_each.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/for_each.js new file mode 100644 index 0000000..d23b71a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/for_each.js @@ -0,0 +1,13 @@ +define(function() { + + return function( array, callback ) { + var i, length; + if ( array.forEach ) { + return array.forEach( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + callback( array[ i ], i, array ); + } + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/array/is_array.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/is_array.js new file mode 100644 index 0000000..0d68266 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/is_array.js @@ -0,0 +1,7 @@ +define(function() { + + return Array.isArray || function( obj ) { + return Object.prototype.toString.call( obj ) === "[object Array]"; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/array/some.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/some.js new file mode 100644 index 0000000..3ed54fb --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/array/some.js @@ -0,0 +1,16 @@ +define(function() { + + return function( array, callback ) { + var i, length; + if ( array.some ) { + return array.some( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + if ( callback( array[ i ], i, array ) ) { + return true; + } + } + return false; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/is_plain_object.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/is_plain_object.js new file mode 100644 index 0000000..7a2fe1f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/is_plain_object.js @@ -0,0 +1,10 @@ +define(function() { + + /** + * Function inspired by jQuery Core, but reduced to our use case. + */ + return function( obj ) { + return obj !== null && "" + obj === "[object Object]"; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/json/merge.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/json/merge.js new file mode 100644 index 0000000..54862e9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/json/merge.js @@ -0,0 +1,38 @@ +define([ + "../array/for_each", + "../array/is_array" +], function( arrayForEach, arrayIsArray ) { + + // Returns new deeply merged JSON. + // + // Eg. + // merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } ) + // -> { a: { b: 3, c: 2, d: 4 } } + // + // @arguments JSON's + // + var merge = function() { + var destination = {}, + sources = [].slice.call( arguments, 0 ); + arrayForEach( sources, function( source ) { + var prop; + for ( prop in source ) { + if ( prop in destination && typeof destination[ prop ] === "object" && !arrayIsArray( destination[ prop ] ) ) { + + // Merge Objects + destination[ prop ] = merge( destination[ prop ], source[ prop ] ); + + } else { + + // Set new values + destination[ prop ] = source[ prop ]; + + } + } + }); + return destination; + }; + + return merge; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/src/util/object/keys.js b/StockManMVC/.bin/bower_components/cldrjs/src/util/object/keys.js new file mode 100644 index 0000000..28d2a74 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/src/util/object/keys.js @@ -0,0 +1,18 @@ +define(function() { + + return function( object ) { + var i, + result = []; + + if ( Object.keys ) { + return Object.keys( object ); + } + + for ( i in object ) { + result.push( i ); + } + + return result; + }; + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/.jshintrc b/StockManMVC/.bin/bower_components/cldrjs/test/.jshintrc new file mode 100644 index 0000000..4d123df --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/.jshintrc @@ -0,0 +1,17 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "onevar": false, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true, + + "predef": [ "after", "before", "define", "describe", "expect", "it", "mocha", "require", "setTimeout" ] +} diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/functional.html b/StockManMVC/.bin/bower_components/cldrjs/test/functional.html new file mode 100644 index 0000000..46d8ef9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/functional.html @@ -0,0 +1,20 @@ + + + + + CLDR Functional Tests + + + +
+ + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/functional.js b/StockManMVC/.bin/bower_components/cldrjs/test/functional.js new file mode 100644 index 0000000..2169aa5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/functional.js @@ -0,0 +1,17 @@ +require.config({ + paths: { + cldr: "../dist/cldr", + "cldr-data": "../bower_components/cldr-data", + json: "../bower_components/requirejs-plugins/src/json", + text: "../bower_components/requirejs-text/text" + } +}); + +require([ + + "./functional/core", + "./functional/event" + +], function() { + mocha.run(); +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/functional/core.js b/StockManMVC/.bin/bower_components/cldrjs/test/functional/core.js new file mode 100644 index 0000000..f1251c0 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/functional/core.js @@ -0,0 +1,109 @@ +define([ + "cldr", + "../util", + "json!cldr-data/main/en/numbers.json", + "json!cldr-data/supplemental/likelySubtags.json" +], function( Cldr, util, enNumbersJson, likelySubtagsJson ) { + + var isLoaded; + + function cldrLoad() { + if ( isLoaded ) { + return; + } + Cldr.load( enNumbersJson, likelySubtagsJson ); + isLoaded = true; + } + + describe( "Cldr.load( json )", function() { + + it( "should throw error on missing json parameter", function() { + expect(function() { + Cldr.load(); + }).to.throw( Error, /E_MISSING_PARAMETER/ ); + }); + + it( "should throw error on invalid locale parameter type", function() { + util.assertObjectParameter( expect, function( invalidValue ) { + return function() { + Cldr.load( invalidValue ); + }; + }); + }); + + it( "should throw error on invalid locale parameter type", function() { + util.assertObjectParameter( expect, function( invalidValue ) { + return function() { + Cldr.load([ { a: 1 }, invalidValue ]); + }; + }); + }); + + it( "should throw error on invalid locale parameter type", function() { + util.assertObjectParameter( expect, function( invalidValue ) { + return function() { + Cldr.load( { a: 1 }, invalidValue ); + }; + }); + }); + + }); + + describe( "new Cldr( locale )", function() { + cldrLoad(); + + it( "should throw error on missing locale parameter", function() { + expect(function() { + new Cldr(); + }).to.throw( Error, /E_MISSING_PARAMETER/ ); + }); + + it( "should throw error on invalid locale parameter type", function() { + util.assertStringParameter( expect, function( invalidValue ) { + return function() { + new Cldr( invalidValue ); + }; + }); + }); + + }); + + describe( ".get( path )", function() { + var cldr; + cldrLoad(); + cldr = new Cldr( "en" ); + + it( "should throw error on invalid parameter type", function() { + util.assertPathParameter( expect, function( invalidValue ) { + return function() { + cldr.get( invalidValue ); + }; + }); + }); + + }); + + describe( ".main( path )", function() { + var cldr; + cldrLoad(); + cldr = new Cldr( "en" ); + + it( "should throw error on invalid parameter type", function() { + util.assertPathParameter( expect, function( invalidValue ) { + return function() { + cldr.main( invalidValue ); + }; + }); + }); + + it( "should throw error on missing bundle", function() { + var cldr = new Cldr( "sr-RS" ); + expect( cldr.attributes.bundle ).to.be.null; + expect(function() { + cldr.main( "numbers" ); + }).to.throw( Error, /E_MISSING_BUNDLE/ ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/functional/event.js b/StockManMVC/.bin/bower_components/cldrjs/test/functional/event.js new file mode 100644 index 0000000..c73258a --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/functional/event.js @@ -0,0 +1,219 @@ +define([ + "cldr", + "../util", + "json!cldr-data/supplemental/likelySubtags.json", + "cldr/event" +], function( Cldr, util, likelySubtagsJson ) { + + Cldr.load( likelySubtagsJson ); + + [ "off", "on", "once" ].forEach(function( method ) { + describe( "Cldr." + method + "( event, listener )", function() { + + it( "should throw error on missing event parameter", function() { + expect(function() { + Cldr[ method ](); + }).to.throw( Error, /E_MISSING_PARAMETER/ ); + }); + + it( "should throw error on missing listener parameter", function() { + expect(function() { + Cldr[ method ]( "get" ); + }).to.throw( Error, /E_MISSING_PARAMETER/ ); + }); + + it( "should throw error on invalid event parameter type", function() { + util.assertEventParameter( expect, function( invalidValue ) { + return function() { + Cldr[ method ]( invalidValue, function() {} ); + }; + }); + }); + + it( "should throw error on invalid listener parameter type", function() { + util.assertFunctionParameter( expect, function( invalidValue ) { + return function() { + Cldr[ method ]( "get", invalidValue ); + }; + }); + }); + + }); + + }); + + describe( "Cldr.on( \"get\", listener )", function() { + + it( "should add the listener to the global `get` event", function( done ) { + function listener() { + done(); + } + var cldr = new Cldr( "root" ); + Cldr.on( "get", listener ); + cldr.get( "something" ); + Cldr.off( "get", listener ); + }); + + it( "should pass path and value to the listener", function( done ) { + function listener( path, value ) { + if ( path === "supplemental/likelySubtags/en" && value === "en-Latn-US" ) { + done(); + } + } + var cldr = new Cldr( "root" ); + Cldr.on( "get", listener ); + cldr.get( "supplemental/likelySubtags/en" ); + Cldr.off( "get", listener ); + }); + + }); + + describe( "Cldr.off( \"get\", listener )", function() { + + it( "should remove the specific listener from the global `get` event", function( done ) { + var status = new Error( "Also removed wrong listener `listener2`" ); + function listener1() { + done( new Error( "should not listen `listener1`" ) ); + } + function listener2() { + status = undefined; // Good. + } + var cldr = new Cldr( "root" ); + Cldr.on( "get", listener1 ); + Cldr.on( "get", listener2 ); + Cldr.off( "get", listener1 ); + cldr.get( "something" ); + Cldr.off( "get", listener2 ); + setTimeout(function() { + done( status ); + }); + }); + + }); + + describe( "Cldr.once( \"get\", listener )", function() { + + it( "should add the listener to the global `get` event *once*", function( done ) { + var status = new Error( "Did not listen" ); + function listener( path ) { + if ( path === "first" ) { + status = undefined; // Good. + } else if ( path === "second" ) { + status = new Error( "Listened twice" ); + } + } + var cldr = new Cldr( "root" ); + Cldr.once( "get", listener ); + cldr.get( "first" ); + cldr.get( "second" ); + setTimeout(function() { + done( status ); + }); + }); + + it( "should pass path and value to the listener", function( done ) { + function listener( path, value ) { + if ( path === "supplemental/likelySubtags/en" && value === "en-Latn-US" ) { + done(); + } + } + var cldr = new Cldr( "root" ); + Cldr.once( "get", listener ); + cldr.get( "supplemental/likelySubtags/en" ); + }); + + }); + + describe( "cldr.on( \"get\", listener )", function() { + + it( "should add the listener to the instance `get` event", function( done ) { + var status = new Error( "Did not listen" ); + function listener( path ) { + if ( path === "something-from-cldr" ) { + status = undefined; // Good. + } else { + status = new Error( "Eavesdropping another instances" ); + } + } + var cldr = new Cldr( "root" ), + another = new Cldr( "root" ); + cldr.on( "get", listener ); + cldr.get( "something-from-cldr" ); + another.get( "something-from-another" ); + cldr.off( "get", listener ); + setTimeout(function() { + done( status ); + }); + }); + + it( "should pass path and value to the listener", function( done ) { + function listener( path, value ) { + if ( path === "supplemental/likelySubtags/en" && value === "en-Latn-US" ) { + done(); + } + } + var cldr = new Cldr( "root" ); + cldr.on( "get", listener ); + cldr.get( "supplemental/likelySubtags/en" ); + cldr.off( "get", listener ); + }); + + }); + + describe( "cldr.off( \"get\", listener )", function() { + + it( "should remove the specific listener from the instance `get` event", function( done ) { + var status = new Error( "Also removed wrong listener `listener2`" ); + function listener1() { + done( new Error( "should not listen `listener1`" ) ); + } + function listener2() { + status = undefined; // Good. + } + var cldr = new Cldr( "root" ); + cldr.on( "get", listener1 ); + cldr.on( "get", listener2 ); + cldr.off( "get", listener1 ); + cldr.get( "something" ); + cldr.off( "get", listener2 ); + setTimeout(function() { + done( status ); + }); + }); + + }); + + describe( "cldr.once( \"get\", listener )", function() { + + it( "should add the listener to the instance `get` event *once*", function( done ) { + var status = new Error( "Did not listen" ); + function listener( path ) { + if ( path === "first" ) { + status = undefined; // Good. + } else if ( path === "second" ) { + status = new Error( "Listened twice" ); + } + } + var cldr = new Cldr( "root" ); + cldr.once( "get", listener ); + cldr.get( "first" ); + cldr.get( "second" ); + setTimeout(function() { + done( status ); + }); + }); + + it( "should pass path and value to the listener", function( done ) { + function listener( path, value ) { + if ( path === "supplemental/likelySubtags/en" && value === "en-Latn-US" ) { + done(); + } + } + var cldr = new Cldr( "root" ); + cldr.once( "get", listener ); + cldr.get( "supplemental/likelySubtags/en" ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit.html b/StockManMVC/.bin/bower_components/cldrjs/test/unit.html new file mode 100644 index 0000000..6965f03 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit.html @@ -0,0 +1,20 @@ + + + + + CLDR Unit Tests + + + +
+ + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit.js new file mode 100644 index 0000000..b1255e3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit.js @@ -0,0 +1,34 @@ +require.config({ + paths: { + "cldr-data": "../bower_components/cldr-data", + json: "../bower_components/requirejs-plugins/src/json", + src: "../src", + text: "../bower_components/requirejs-text/text" + } +}); + +require([ + + // 1st unit tests group. + "./unit/core/subtags", + "./unit/path/normalize", + "./unit/resource/get", + "./unit/resource/set", + "./unit/util/json/merge", + + // 2nd unit tests group. + "./unit/core/load", + "./unit/core/set_available_bundles", + + // 3rd unit tests group. + "./unit/core", + "./unit/core/likely_subtags", + "./unit/core/remove_likely_subtags", + "./unit/supplemental", + + // 4th unit tests group. + "./unit/bundle/lookup" + +], function() { + mocha.run(); +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/lookup.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/lookup.js new file mode 100644 index 0000000..0c2c51c --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/lookup.js @@ -0,0 +1,59 @@ +define([ + "src/bundle/lookup", + "src/core", + "json!cldr-data/supplemental/likelySubtags.json" +], function( bundleLookup, Cldr, likelySubtags ) { + + describe( "Bundle Lookup", function() { + + before(function() { + Cldr.load( likelySubtags ); + }); + + // This test must pass to ensure this whole unit test run under the planned premises. + it( "should pass test's prerequisites", function() { + expect( Cldr._availableBundleMapQueue ).to.not.include.members([ "sr", "sr-Cyrl", "sr-Latn" ]); + expect( Cldr._availableBundleMap ).to.not.contain.keys( "sr", "sr-Latn" ); + }); + + it( "should set the correct bundle", function() { + var sr; + Cldr.load({ + main: { "sr-Cyrl": {} } + }); + expect( Cldr._availableBundleMapQueue ).to.include.members([ "sr-Cyrl" ]); + sr = new Cldr( "sr" ); + expect( Cldr._availableBundleMapQueue ).to.eql([]); + expect( Cldr._availableBundleMap ).to.contain.keys( "sr" ); + expect( Cldr._availableBundleMap.sr ).to.equal( "sr-Cyrl" ); + expect( sr.attributes.bundle ).to.equal( "sr-Cyrl" ); + sr = new Cldr( "sr-Cyrl" ); + expect( sr.attributes.bundle ).to.equal( "sr-Cyrl" ); + sr = new Cldr( "sr-RS" ); + expect( sr.attributes.bundle ).to.equal( "sr-Cyrl" ); + sr = new Cldr( "sr-Cyrl-RS" ); + expect( sr.attributes.bundle ).to.equal( "sr-Cyrl" ); + sr = new Cldr( "sr-Latn-RS" ); + expect( sr.attributes.bundle ).to.be.null; + }); + + it( "should always favor the grandest parent", function() { + var sr; + Cldr.load({ + main: { "sr": {} } + }); + expect( Cldr._availableBundleMapQueue ).to.include.members([ "sr" ]); + sr = new Cldr( "sr" ); + expect( Cldr._availableBundleMapQueue ).to.eql([]); + expect( Cldr._availableBundleMap ).to.contain.keys( "sr" ); + expect( Cldr._availableBundleMap.sr ).to.equal( "sr" ); + expect( sr.attributes.bundle ).to.equal( "sr" ); + sr = new Cldr( "sr-Cyrl" ); + expect( sr.attributes.bundle ).to.equal( "sr" ); + sr = new Cldr( "sr-RS" ); + expect( sr.attributes.bundle ).to.equal( "sr" ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/parent_lookup.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/parent_lookup.js new file mode 100644 index 0000000..b29dc44 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/bundle/parent_lookup.js @@ -0,0 +1,27 @@ +define([ + "src/core", + "src/bundle/parent_lookup", + "json!cldr-data/supplemental/parentLocales.json" +], function( Cldr, parentLookup, parentLocalesJson ) { + + describe( "Bundle Parent Lookup", function() { + + before(function() { + Cldr.load( parentLocalesJson ); + }); + + it( "should truncate locale", function() { + expect( parentLookup( Cldr, [ "pt", "BR" ].join( Cldr.localeSep ) ) ).to.equal( "pt" ); + }); + + it( "should end with root", function() { + expect( parentLookup( Cldr, "en" ) ).to.equal( "root" ); + }); + + it( "should use supplemental resource", function() { + expect( parentLookup( Cldr, [ "en", "IN" ].join( Cldr.localeSep ) )).to.equal( [ "en", "001" ].join( Cldr.localeSep ) ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core.js new file mode 100644 index 0000000..764ddc3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core.js @@ -0,0 +1,83 @@ +define([ + "src/core", + "json!cldr-data/main/en/numbers.json", + "json!cldr-data/supplemental/likelySubtags.json" +], function( Cldr, enNumbersJson, likelySubtagsJson ) { + + describe( "Cldr (core)", function() { + before(function() { + Cldr.load( enNumbersJson, likelySubtagsJson ); + }); + + describe( "Cldr.load()", function() { + + it( "should load json", function() { + expect( Cldr._resolved && Cldr._resolved.supplemental ).to.be.ok; + }); + + }); + + describe( "Constructor", function() { + var cldr; + + it( "should normalize a locale on initialization", function() { + cldr = new Cldr( "pt-BR" ); + expect( cldr.attributes.language ).to.equal( "pt" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "BR" ); + + cldr = new Cldr( "en" ); + expect( cldr.attributes.language ).to.equal( "en" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "US" ); + + cldr = new Cldr( "en-GB" ); + expect( cldr.attributes.language ).to.equal( "en" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "GB" ); + + cldr = new Cldr( "lkt" ); + expect( cldr.attributes.language ).to.equal( "lkt" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "US" ); + + cldr = new Cldr( "root" ); + expect( cldr.attributes.language ).to.equal( "en" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "US" ); + + // Should not identify nonExistent as a language subtag, due to its length. So, it should become `und_Zzzz_ZZ`. Then, the `und` likelySubtags value. + cldr = new Cldr( "nonExistent" ); + expect( cldr.attributes.language ).to.equal( "en" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "US" ); + + // Variant + cldr = new Cldr( "en-POSIX" ); + expect( cldr.attributes.language ).to.equal( "en" ); + expect( cldr.attributes.script ).to.equal( "Latn" ); + expect( cldr.attributes.territory ).to.equal( "US" ); + expect( cldr.attributes.variant ).to.equal( "POSIX" ); + }); + + it( "should set unicode locale extensions attributes", function() { + cldr = new Cldr( "en-u-cu-usd" ); + expect( cldr.attributes[ "u-cu" ] ).to.equal( "usd" ); + + cldr = new Cldr( "en-u-foo-bar-nu-arab-cu-usd" ); + expect( cldr.attributes[ "u-foo" ] ).to.be.true; + expect( cldr.attributes[ "u-bar" ] ).to.be.true; + expect( cldr.attributes[ "u-cu" ] ).to.equal( "usd" ); + expect( cldr.attributes[ "u-nu" ] ).to.equal( "arab" ); + }); + + it( "should implement cldr.main as an alias of get( \"main/{bundle}...\" )", function() { + cldr = new Cldr( "en" ); + expect( cldr.main( "numbers/symbols-numberSystem-latn/decimal" ) ).to.equal( "." ); + }); + + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/likely_subtags.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/likely_subtags.js new file mode 100644 index 0000000..f76a7fe --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/likely_subtags.js @@ -0,0 +1,53 @@ +define([ + "src/core", + "src/core/likely_subtags", + "json!cldr-data/supplemental/likelySubtags.json" +], function( Cldr, likelySubtags, likelySubtagsJson ) { + + describe( "Likely Subtags", function() { + var cldr = new Cldr( "root" ); + + before(function() { + Cldr.load( likelySubtagsJson ); + }); + + it( "should skip empty language tag", function() { + expect( likelySubtags( Cldr, cldr, [ "en", "Latn", "US" ] ) ).to.eql( [ "en", "Latn", "US" ] ); + }); + + it( "should lookup language_script_territory's", function() { + expect( likelySubtags( Cldr, cldr, [ "und", "Latn", "RU" ] ) ).to.eql( [ "krl", "Latn", "RU" ] ); + }); + + it( "should lookup language_territory's", function() { + expect( likelySubtags( Cldr, cldr, [ "zh", "Zzzz", "HK" ] ) ).to.eql( [ "zh", "Hant", "HK" ] ); + }); + + it( "should lookup language_script's", function() { + expect( likelySubtags( Cldr, cldr, [ "az", "Arab", "ZZ" ] ) ).to.eql( [ "az", "Arab", "IR" ] ); + }); + + it( "should lookup und_scripts's", function() { + expect( likelySubtags( Cldr, cldr, [ "und", "Java", "ZZ" ] ) ).to.eql( [ "jv", "Java", "ID" ] ); + }); + + it( "should lookup root", function() { + expect( likelySubtags( Cldr, cldr, [ "und", "Zzzz", "ZZ" ] ) ).to.eql( [ "en", "Latn", "US" ] ); + }); + + it( "should lookup und", function() { + expect( likelySubtags( Cldr, cldr, [ "und", "Zzzz", "ZZ" ] ) ).to.eql( [ "en", "Latn", "US" ] ); + }); + + it( "should lookup non-existent when option { force: true }", function() { + expect( likelySubtags( Cldr, cldr, [ "foo", "Zzzz", "bar" ], { force: true } ) ).to.eql( [ "en", "Latn", "US" ] ); + }); + + it( "should lookup variant subtag", function() { + expect( likelySubtags( Cldr, cldr, [ "en", "Zzzz", "US", "POSIX" ] ) ).to.eql( [ "en", "Latn", "US", "POSIX" ] ); + expect( likelySubtags( Cldr, cldr, [ "ca", "Zzzz", "ES", "VALENCIA" ] ) ).to.eql( [ "ca", "Latn", "ES", "VALENCIA" ] ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/load.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/load.js new file mode 100644 index 0000000..5163973 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/load.js @@ -0,0 +1,31 @@ +define([ + "src/core/load" +], function( _load ) { + + describe( "Core load", function() { + var fakeCldr = { + _availableBundleMapQueue: [] + }; + + function load() { + return _load( fakeCldr, {}, arguments ); + } + + it( "should load a json entry", function() { + var source = load({ foo: "bar" }); + expect( source ).to.eql({ foo: "bar" }); + }); + + it( "should load arbitrary json parameters, e.g., Cldr.load({...}, {...}, ...)", function() { + var source = load({ foo: "bar" }, { baz: "qux" }); + expect( source ).to.eql({ baz: "qux", foo: "bar" }); + }); + + it( "should load arbitrary jsons via Array, e.g., Cldr.load([{...}, {...}, ...])", function() { + var source = load([{ foo: "bar" }, { baz: "qux" }]); + expect( source ).to.eql({ baz: "qux", foo: "bar" }); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/remove_likely_subtags.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/remove_likely_subtags.js new file mode 100644 index 0000000..60f5ccb --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/remove_likely_subtags.js @@ -0,0 +1,40 @@ +define([ + "src/core", + "src/core/remove_likely_subtags", + "json!cldr-data/supplemental/likelySubtags.json" +], function( Cldr, removeLikelySubtags, likelySubtagsJson ) { + + describe( "Remove Likely Subtags", function() { + var cldr = new Cldr( "root" ); + + before(function() { + Cldr.load( likelySubtagsJson ); + }); + + it( "Should reduce \"en_Latn_US\" into \"en\"", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "en", "Latn", "US" ] ) ).to.eql( [ "en" ] ); + }); + + it( "Should reduce \"pt_Latn_BR\" into \"pt\"", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "pt", "Latn", "BR" ] ) ).to.eql( [ "pt" ] ); + }); + + it( "Should reduce \"en_Latn_GB\" into \"en_GB\"", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "en", "Latn", "GB" ] ) ).to.eql( [ "en", "GB" ] ); + }); + + it( "Should reduce \"zh_Hant_HK\" into \"zh_HK\"", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "zh", "Hant", "HK" ] ) ).to.eql( [ "zh", "HK" ] ); + }); + + it( "Should reduce \"az_Arab_IR\" into \"az_Arab\"", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "az", "Arab", "IR" ] ) ).to.eql( [ "az", "IR" ] ); + }); + + it( "Should reduce \"en_Latn_US_POSIX\" into \"en_POSIX\" - variant subtag", function() { + expect( removeLikelySubtags( Cldr, cldr, [ "en", "Latn", "US", "POSIX" ] )).to.eql( [ "en", "POSIX" ] ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/set_available_bundles.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/set_available_bundles.js new file mode 100644 index 0000000..857bc72 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/set_available_bundles.js @@ -0,0 +1,24 @@ +define([ + "src/core/set_available_bundles" +], function( setAvailableBundles ) { + + describe( "Core setAvailableBundles", function() { + var fakeCldr = { + _availableBundleMap: {}, + _availableBundleMapQueue: [] + }; + + it( "should set availableBundleMapQueue", function() { + setAvailableBundles( fakeCldr, { + main: { "en-US": {} } + }); + expect( fakeCldr._availableBundleMapQueue ).to.eql([ "en-US" ]); + setAvailableBundles( fakeCldr, { + main: { "pt-BR": {} } + }); + expect( fakeCldr._availableBundleMapQueue ).to.eql([ "en-US", "pt-BR" ]); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/subtags.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/subtags.js new file mode 100644 index 0000000..a57f4d9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/core/subtags.js @@ -0,0 +1,55 @@ +define([ + "src/core/subtags" +], function( subtags ) { + + describe( "Subtags", function() { + it( "should match language", function() { + expect( subtags( "root" ) ).to.eql( [ "root", "Zzzz", "ZZ" ] ); + }); + + it( "should match language", function() { + expect( subtags( "en" ) ).to.eql( [ "en", "Zzzz", "ZZ" ] ); + expect( subtags( "ar" ) ).to.eql( [ "ar", "Zzzz", "ZZ" ] ); + expect( subtags( "zh" ) ).to.eql( [ "zh", "Zzzz", "ZZ" ] ); + expect( subtags( "pt" ) ).to.eql( [ "pt", "Zzzz", "ZZ" ] ); + expect( subtags( "foobar" ) ).to.eql( [ "und", "Zzzz", "ZZ" ] ); + }); + + it( "should match language_region", function() { + expect( subtags( "en-US" ) ).to.eql( [ "en", "Zzzz", "US" ] ); + expect( subtags( "ar-EG" ) ).to.eql( [ "ar", "Zzzz", "EG" ] ); + expect( subtags( "zh-CN" ) ).to.eql( [ "zh", "Zzzz", "CN" ] ); + expect( subtags( "pt-BR" ) ).to.eql( [ "pt", "Zzzz", "BR" ] ); + expect( subtags( "en-001" ) ).to.eql( [ "en", "Zzzz", "001" ] ); + expect( subtags( "en-0001" ) ).to.eql( [ "en", "Zzzz", "ZZ", "0001" ] ); + expect( subtags( "en-01" ) ).to.eql( [ "und", "Zzzz", "ZZ" ] ); + }); + + it( "should match language_script", function() { + expect( subtags( "en-Latn" ) ).to.eql( [ "en", "Latn", "ZZ" ] ); + expect( subtags( "ar-Arab" ) ).to.eql( [ "ar", "Arab", "ZZ" ] ); + expect( subtags( "ar-Arabic" ) ).to.eql( [ "ar", "Zzzz", "ZZ", "Arabic" ] ); + }); + + it( "should match language_script_region", function() { + expect( subtags( "en-Latn-US" ) ).to.eql( [ "en", "Latn", "US" ] ); + expect( subtags( "ar-Arab-EG" ) ).to.eql( [ "ar", "Arab", "EG" ] ); + expect( subtags( "ar-EG-Arab" ) ).to.eql( [ "und", "Zzzz", "ZZ" ] ); + }); + + it( "should match language_script_region_variant", function() { + expect( subtags( "en-US-POSIX" ) ).to.eql( [ "en", "Zzzz", "US", "POSIX" ] ); + expect( subtags( "ca-ES-VALENCIA" ) ).to.eql( [ "ca", "Zzzz", "ES", "VALENCIA" ] ); + }); + + it( "should match language_script_region_unicode_extension", function() { + var aux = subtags( "en-u-cu-usd" ); + expect( aux[ 0 ] ).to.eql( "en" ); + expect( aux[ 1 ] ).to.eql( "Zzzz" ); + expect( aux[ 2 ] ).to.eql( "ZZ" ); + expect( aux[ 4 ] ).to.eql( "cu-usd" ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/item/lookup.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/item/lookup.js new file mode 100644 index 0000000..0e9a772 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/item/lookup.js @@ -0,0 +1,50 @@ +define([ + "src/core", + "src/item/lookup", + "json!cldr-data/main/pt/numbers.json", + "json!cldr-data/supplemental/gender.json", + "json!cldr-data/supplemental/likelySubtags.json", + "src/unresolved" +], function( Cldr, itemLookup, ptNumbersJson, genderJson, likelySubtagsJson ) { + + describe( "Item Lookup", function() { + + before(function() { + Cldr.load( + genderJson, + likelySubtagsJson, + ptNumbersJson, + { + "lookup-test": { + a: 1, + b: 2 + } + } + ); + }); + + it( "should get resolved items", function() { + var cldr = new Cldr( "root" ); + expect( itemLookup( Cldr, cldr.locale, "/supplemental/gender/personList/de", cldr.attributes ) ).to.equal( "neutral" ); + }); + + it( "should resolve and get unresolved items", function() { + var cldr = new Cldr( "pt_BR" ); + expect( itemLookup( Cldr, cldr.locale, "/main/{bundle}/numbers/symbols-numberSystem-latn/decimal", cldr.attributes ) ).to.equal( "," ); + }); + + it( "should only cache found resolved items", function() { + var cldr = new Cldr( "root" ); + itemLookup( Cldr, cldr.locale, "/lookup-inexistent-item/data", cldr.attributes ); + expect( Cldr._resolved[ "lookup-inexistent-item" ] ).to.be.undefined; + }); + + it( "should only cache leaf items", function() { + var cldr = new Cldr( "root" ); + expect( itemLookup( Cldr, cldr.locale, "/lookup-test/a", cldr.attributes ) ).to.equal( 1 ); + expect( itemLookup( Cldr, cldr.locale, "/lookup-test", cldr.attributes ) ).to.eql({ a: 1, b: 2 }); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/path/normalize.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/path/normalize.js new file mode 100644 index 0000000..6f66d96 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/path/normalize.js @@ -0,0 +1,44 @@ +define([ + "src/path/normalize", +], function( pathNormalize ) { + + describe("Path Normalize", function() { + + it( "should throw Error on invalid path", function() { + var invalidPath = 5; + expect(function() { + pathNormalize( invalidPath ); + }).to.throw( Error ); + }); + + it( "should split a String into an Array", function() { + var value = pathNormalize( "supplemental/likelySubtags" ); + expect( value ).to.be.instanceof( Array ); + expect( value ).to.eql( [ "supplemental", "likelySubtags" ] ); + }); + + it( "should ignore a leading slash / on path", function() { + var value = pathNormalize( "/supplemental/likelySubtags" ); + expect( value ).to.be.instanceof( Array ); + expect( value ).to.eql( [ "supplemental", "likelySubtags" ] ); + }); + + it( "should ignore a leading /cldr/ or cldr/ on path", function() { + [ "/cldr/supplemental/likelySubtags", "cldr/supplemental/likelySubtags" ].forEach(function( path ) { + var value = pathNormalize( path ); + expect( value ).to.be.instanceof( Array ); + expect( value ).to.eql( [ "supplemental", "likelySubtags" ] ); + }); + }); + + it( "should replace attribute variables", function() { + expect( pathNormalize( "main/{languageId}/numbers/decimalFormats-numberSystem-latn", { languageId: "root" } ) ).to.eql( [ "main", "root", "numbers", "decimalFormats-numberSystem-latn" ] ); + }); + + it( "should split the inner Strings of an Array into a flatten Array", function() { + expect( pathNormalize( [ "main/{languageId}/numbers", "decimalFormats-numberSystem-latn" ], { languageId: "root" } ) ).to.eql( [ "main", "root", "numbers", "decimalFormats-numberSystem-latn" ] ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/get.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/get.js new file mode 100644 index 0000000..1c148b3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/get.js @@ -0,0 +1,23 @@ +define([ + "src/resource/get", +], function( resourceGet ) { + + var data = { a: { b: { c: 5 } } }; + + describe("Data Get", function() { + + it( "should return existing data value", function() { + expect( resourceGet( data, [ "a", "b", "c" ] ) ).to.equal( 5 ); + }); + + it( "should return undefined for non-existing data", function() { + expect( resourceGet( data, [ "a", "b", "x" ] ) ).to.be.undefined; + }); + + it( "should return undefined for non-existing tree", function() { + expect( resourceGet( data, [ "x", "y", "z" ] ) ).to.be.undefined; + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/set.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/set.js new file mode 100644 index 0000000..6fa3829 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/resource/set.js @@ -0,0 +1,24 @@ +define([ + "src/resource/set", +], function( resourceSet ) { + + var data = {}; + + describe("Resource Set", function() { + + it( "should set value into new JSON data structure", function() { + resourceSet( data, [ "i" ], 1 ); + expect( data.i ).to.equal( 1 ); + + resourceSet( data, [ "a", "b", "c" ], 5 ); + expect( data.a.b.c ).to.equal( 5 ); + }); + + it( "should set value into existing JSON data structure", function() { + resourceSet( data, [ "a", "b", "e" ], 7 ); + expect( data.a.b.e ).to.equal( 7 ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/supplemental.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/supplemental.js new file mode 100644 index 0000000..1f31c0f --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/supplemental.js @@ -0,0 +1,68 @@ +define([ + "src/core", + "src/supplemental/main", + "json!cldr-data/supplemental/likelySubtags.json", + "json!cldr-data/supplemental/timeData.json", + "json!cldr-data/supplemental/weekData.json" +], function( Cldr, supplemental, likelySubtagsJson, timeDataJson, weekDataJson ) { + + describe( "Supplemental", function() { + var en, enGb, fr, ptBr, ty; + + before(function() { + Cldr.load( + likelySubtagsJson, + timeDataJson, + weekDataJson + ); + + en = new Cldr( "en" ), + enGb = new Cldr( "en_GB" ), + fr = new Cldr( "fr" ), + ptBr = new Cldr( "pt_BR" ), + ty = new Cldr( "ty" ); + + en.supplemental = supplemental( en ); + enGb.supplemental = supplemental( enGb ); + fr.supplemental = supplemental( fr ); + ptBr.supplemental = supplemental( ptBr ); + ty.supplemental = supplemental( ty ); + }); + + it( "should get weekData.firstDay", function() { + // Explicitly defined firstDay. + expect( en.supplemental.weekData.firstDay() ).to.equal( "sun" ); + + // Or default (001). + expect( ty.supplemental.weekData.firstDay() ).to.equal( "mon" ); + }); + + it( "should get weekData.minDays", function() { + // Explicitly defined minDays. + expect( fr.supplemental.weekData.minDays() ).to.equal( 4 ); + + // Or default (001). + expect( en.supplemental.weekData.minDays() ).to.equal( 1 ); + }); + + it( "should get timeData.allowed", function() { + // Explicitly defined allowed. + expect( en.supplemental.timeData.allowed() ).to.equal( "H h" ); + expect( ptBr.supplemental.timeData.allowed() ).to.equal( "H" ); + + // Or default (001). + expect( enGb.supplemental.timeData.allowed() ).to.equal( "H h" ); + }); + + it( "should get timeData.preferred", function() { + // Explicitly defined preferred. + expect( en.supplemental.timeData.preferred() ).to.equal( "h" ); + expect( ptBr.supplemental.timeData.preferred() ).to.equal( "H" ); + + // Or default (001). + expect( enGb.supplemental.timeData.preferred() ).to.equal( "H" ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit/util/json/merge.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit/util/json/merge.js new file mode 100644 index 0000000..d71f5b5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit/util/json/merge.js @@ -0,0 +1,24 @@ +define([ + "src/util/json/merge" +], function( jsonMerge ) { + + var data1 = { a: { b: 1, c: 2 } }, + data2 = { a: { b: 3, d: 4 } }, + empty = {}; + + describe( "Util Json Merge", function() { + + it( "should merge two JSONs deeply", function() { + expect( jsonMerge( data1, data2 ) ).to.eql( { a: { b: 3, c: 2, d: 4 } } ); + }); + + it( "should merge empty JSONs", function() { + expect( jsonMerge( empty ) ).to.eql( empty ); + expect( jsonMerge( empty, data1 ) ).to.eql( data1 ); + expect( jsonMerge( data1, empty ) ).to.eql( data1 ); + expect( jsonMerge( empty, data1, empty ) ).to.eql( data1 ); + }); + + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.html b/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.html new file mode 100644 index 0000000..d9920a3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.html @@ -0,0 +1,20 @@ + + + + + CLDR Unit Tests + + + +
+ + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.js b/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.js new file mode 100644 index 0000000..0b9dfc7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/unit_unresolved.js @@ -0,0 +1,19 @@ +require.config({ + paths: { + "cldr-data": "../bower_components/cldr-data", + json: "../bower_components/requirejs-plugins/src/json", + src: "../src", + text: "../bower_components/requirejs-text/text" + } +}); + +require( [ "src/unresolved" ], function() { + + require([ + "./unit/item/lookup", + "./unit/bundle/parent_lookup" + ], function() { + mocha.run(); + }); + +}); diff --git a/StockManMVC/.bin/bower_components/cldrjs/test/util.js b/StockManMVC/.bin/bower_components/cldrjs/test/util.js new file mode 100644 index 0000000..fe4deaa --- /dev/null +++ b/StockManMVC/.bin/bower_components/cldrjs/test/util.js @@ -0,0 +1,67 @@ +define(function() { + +var allTypes = { + array: [ 7 ], + date: new Date(), + "function": function() {}, + "null": null, + number: 7, + object: new Foo(), + plainObject: {}, + regexp: /foo/, + string: "foo" +}; + +function assertParameterType( expect, type, fn ) { + Object.keys( allTypes ).filter( not( type ) ).forEach(function( type ) { + expect( fn( allTypes[ type ] ) ).to.throw( Error, /E_INVALID_PAR_TYPE/ ); + }); +} + +function Foo() {} + +/** + * not() should be used with Array.prototype.filter(). + * + * Return true only if b is different than any a. + * + * For example: + * [ 1, 2, 3 ].filter( not( 2 ) ) => [ 1, 3 ] + * [ 1, 2, 3 ].filter( not( [ 2, 3 ] ) ) => [ 1 ] + */ +function not( a ) { + return function( b ) { + if ( Array.isArray( a ) ) { + return !a.some(function( a ) { + return a === b; + }); + } + return a !== b; + }; +} + +return { + + assertEventParameter: function( expect, fn ) { + assertParameterType( expect, [ "regexp", "string" ], fn ); + }, + + assertFunctionParameter: function( expect, fn ) { + assertParameterType( expect, [ "function" ], fn ); + }, + + assertPathParameter: function( expect, fn ) { + assertParameterType( expect, [ "array", "string" ], fn ); + }, + + assertObjectParameter: function( expect, fn ) { + assertParameterType( expect, [ "object", "plainObject" ], fn ); + }, + + assertStringParameter: function( expect, fn ) { + assertParameterType( expect, [ "string" ], fn ); + } + +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/.bower.json b/StockManMVC/.bin/bower_components/globalize/.bower.json new file mode 100644 index 0000000..dd0d38d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/.bower.json @@ -0,0 +1,34 @@ +{ + "name": "globalize", + "license": "MIT", + "ignore": [ + "**/.*", + "test", + "CONTRIBUTING.md", + "bower.json" + ], + "dependencies": { + "cldrjs": "0.4.4", + "cldr-data": ">=25" + }, + "devDependencies": { + "es5-shim": "3.4.0", + "make-plural": "eemeli/make-plural.js#3.0.0", + "messageformat": "SlexAxton/messageformat.js#v0.3.0-1", + "qunit": "1.18.0", + "requirejs": "2.1.20", + "requirejs-plugins": "1.0.2", + "requirejs-text": "2.0.10" + }, + "homepage": "https://github.com/jquery/globalize", + "version": "1.1.1", + "_release": "1.1.1", + "_resolution": { + "type": "version", + "tag": "1.1.1", + "commit": "e8325dbf5564d239e022ce78487f4f10e26d71b1" + }, + "_source": "https://github.com/jquery/globalize.git", + "_target": "^1.0.0", + "_originalSource": "globalize" +} \ No newline at end of file diff --git a/StockManMVC/.bin/bower_components/globalize/AUTHORS.txt b/StockManMVC/.bin/bower_components/globalize/AUTHORS.txt new file mode 100644 index 0000000..bab87b3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/AUTHORS.txt @@ -0,0 +1,53 @@ +Authors ordered by number of contributions + +Rafael Xavier de Souza +Richard D. Worth +Eric Bréchemier +Jörn Zaefferer +Dave Reed +Nikolaus Graf +Nick Schonning +Scott González +Kyle Florence +Manraj Singh +Tobie Langel +John Reilly +Nova Patch +Sean Cady +Wes Cravens +Michael Birtwell +Andrew Lunny +Pavel Karoukin +Kris Borchers +Rob Garrison +Karan Sharma +Yasuhiro Yoshida +Oleg Gulverdashvili +Stephen Walther +Mateusz Bożyk +Oleg Gaidarenko +Riku Nieminen +Isaac Durazo +Anne-Gaelle Colom +Raphael Amorim +Peter Dave Hello +Bao Ngo +Leonardo Balter +Andreas Blixt +Ed Sanders +Brahim Arkni +Kevin Kirsche +Lee Nave +Tomasz Peczek +Robert Plummer +Fredrik Blomqvist +Christian Vuerings +David De Sloovere +Tobias Nießen +Boris Moore +Arvind Kalyan +Juan Soto +John Resig +Luke Page +Amanpreet Singh +Arthur Verschaeve diff --git a/StockManMVC/.bin/bower_components/globalize/Gruntfile.js b/StockManMVC/.bin/bower_components/globalize/Gruntfile.js new file mode 100644 index 0000000..4f8eb10 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/Gruntfile.js @@ -0,0 +1,663 @@ +module.exports = function( grunt ) { + + "use strict"; + + var isConnectTestRunning, + rdefineEnd = /\}\);[^}\w]*$/, + pkg = grunt.file.readJSON( "package.json" ); + + function camelCase( input ) { + return input.toLowerCase().replace( /[-/](.)/g, function( match, group1 ) { + return group1.toUpperCase(); + }); + } + + function mountFolder( connect, path ) { + return connect.static( require( "path" ).resolve( path ) ); + } + + function replaceConsts( content ) { + return content + + // Replace Version + .replace( /@VERSION/g, pkg.version ) + + // Replace Date yyyy-mm-ddThh:mmZ + .replace( /@DATE/g, ( new Date() ).toISOString().replace( /:\d+\.\d+Z$/, "Z" ) ); + } + + grunt.initConfig({ + pkg: pkg, + authors: { + order: "count" + }, + commitplease: { + last50: { + options: { + committish: "-n 50" + } + } + }, + connect: { + options: { + port: 9001, + hostname: "localhost" + }, + test: { + options: { + middleware: function( connect ) { + return [ + mountFolder( connect, "." ), + mountFolder( connect, "test" ) + ]; + } + } + }, + keepalive: { + options: { + keepalive: true, + middleware: function( connect ) { + return [ + mountFolder( connect, "." ) + ]; + } + } + } + }, + jshint: { + source: { + src: [ "src/**/*.js", "!src/build/**" ], + options: { + jshintrc: "src/.jshintrc" + } + }, + grunt: { + src: [ "Gruntfile.js" ], + options: { + jshintrc: ".jshintrc" + } + }, + test: { + src: [ "test/*.js", "test/functional/**/*.js", "test/unit/**/*.js", + "!test/config.js" ], + options: { + jshintrc: "test/.jshintrc" + } + }, + dist: { + src: [ "dist/globalize*.js", "dist/globalize/*.js" ], + options: { + jshintrc: "src/.dist-jshintrc" + } + } + }, + jscs: { + source: [ "src/**/*.js", "!src/build/**" ], + grunt: "Gruntfile.js", + test: [ "test/*.js", "test/functional/**/*.js", "test/unit/**/*.js" ], + dist: [ "dist/globalize*.js", "dist/globalize/*.js" ] + }, + qunit: { + functional: { + options: { + urls: [ + + // Use es5-shim here due to .bind(), which is not present on phantomjs v1.9. + // But, it should be on v2.x. + "http://localhost:<%= connect.options.port %>/functional-es5-shim.html" + ] + } + }, + unit: { + options: { + urls: [ "http://localhost:<%= connect.options.port %>/unit.html" ] + } + } + }, + requirejs: { + options: { + dir: "dist/.build", + appDir: "src", + baseUrl: ".", + optimize: "none", + paths: { + cldr: "../external/cldrjs/dist/cldr", + "make-plural": "../external/make-plural/make-plural", + messageformat: "../external/messageformat/messageformat" + }, + skipSemiColonInsertion: true, + skipModuleInsertion: true, + + // Strip all definitions generated by requirejs. + // Convert content as follows: + // a) "Single return" means the module only contains a return statement that is + // converted to a var declaration. + // b) "Module" means the define wrappers are removed, but content is untouched. + // Only for root id's (the ones in src, not in src's subpaths). Note there's no + // conditional code checking for this type. + onBuildWrite: function( id, path, contents ) { + var messageformat, + name = camelCase( id.replace( /util\/|common\//, "" ) ); + + // MakePlural + if ( ( /make-plural/ ).test( id ) ) { + return contents + + // Remove browserify wrappers. + .replace( /^\(function\(f\){if\(typeof exports==="object"&&type.*/, "" ) + .replace( /\},\{\}\]\},\{\},\[1\]\)\(1\)[\s\S]*?$/, "" ) + + // Remove browserify exports. + .replace( /Object.defineProperty\(exports[\s\S]*?\n}\);/, "" ) + .replace( "exports['default'] = MakePlural;", "" ) + .replace( "module.exports = exports['default'];", "" ) + + // Remove self-tests. + .replace( /var Tests =[\s\S]*?\n}\)\(\);/, "" ) + .replace( "this.tests = new Tests(this);", "" ) + .replace( /this.fn.test =[\s\S]*?bind\(this\);/, "" ) + .replace( "this.tests.add(type, cat, examples);", "" ) + + // Remove load method. + .replace( /load: \{[\s\S]*?\n \}/, "" ) + + // Replace its wrapper into var assignment. + .replace( /\(function \(global\) \{/, [ + "var MakePlural;", + "/* jshint ignore:start */", + "MakePlural = (function() {" + ].join( "\n" ) ) + .replace( /if \(\(typeof module !== 'undefined'[\s\S]*/, [ + "return MakePlural;", + "}());", + "/* jshint ignore:end */" + ].join( "\n" ) ) + + // Wrap everything into a var assignment. + .replace( /^/, [ + "var MakePlural;", + "/* jshint ignore:start */", + "MakePlural = (function() {" + ].join( "\n" ) ) + .replace( /$/, [ + "return MakePlural;", + "}());", + "/* jshint ignore:end */" + ].join( "\n" ) ); + + // messageformat + } else if ( ( /messageformat/ ).test( id ) ) { + return contents + + // Remove browserify wrappers. + .replace( /^\(function\(f\)\{if\(typeof exports==="object"&&type.*/, "" ) + .replace( "},{}],2:[function(require,module,exports){", "" ) + .replace( /\},\{"\.\/messageformat-parser":1,"make-plural\/plural.*/, "" ) + .replace( /\},\{\}\]\},\{\},\[2\]\)\(2\)[\s\S]*?$/, "" ) + + // Set `MessageFormat.plurals` and remove `make-plural/plurals` + // completely. This is populated by Globalize on demand. + .replace( /var _cp = \[[\s\S]*?$/, "" ) + .replace( + "MessageFormat.plurals = require('make-plural/plurals')", + "MessageFormat.plurals = {}" + ) + + // Set `MessageFormat._parse` + .replace( + "MessageFormat._parse = require('./messageformat-parser').parse;", + "" + ) + .replace( /module\.exports = \(function\(\) \{([\s\S]*?)\n\}\)\(\);/, [ + "MessageFormat._parse = (function() {", + "$1", + "}()).parse;" + ].join( "\n" ) ) + + // Remove unused code. + .replace( /if \(!pluralFunc\) \{\n[\s\S]*?\n \}/, "" ) + .replace( /if \(!locale\) \{\n[\s\S]*? \}\n/, "this.lc = [locale];" ) + .replace( /(MessageFormat\.formatters) = \{[\s\S]*?\n\};/, "$1 = {};" ) + .replace( /MessageFormat\.prototype\.setIntlSupport[\s\S]*?\n\};/, "" ) + + // Wrap everything into a var assignment. + .replace( "module.exports = MessageFormat;", "" ) + .replace( /^/, [ + "var MessageFormat;", + "/* jshint ignore:start */", + "MessageFormat = (function() {" + ].join( "\n" ) ) + .replace( /$/, [ + "return MessageFormat;", + "}());", + "/* jshint ignore:end */" + ].join( "\n" ) ); + + // message-runtime + } else if ( ( /message-runtime/ ).test( id ) ) { + messageformat = require( "./external/messageformat/messageformat" ); + delete messageformat.prototype.runtime.fmt; + delete messageformat.prototype.runtime.pluralFuncs; + contents = contents.replace( "Globalize._messageFormat = {};", [ + "/* jshint ignore:start */", + "Globalize._messageFormat = (function() {", + messageformat.prototype.runtime.toString(), + "return {number: number, plural: plural, select: select};", + "}());", + "/* jshint ignore:end */" + ].join( "\n" ) ); + } + + // 1, and 2: Remove define() wrap. + // 3: Remove empty define()'s. + contents = contents + .replace( /define\([^{]*?\{/, "" ) /* 1 */ + .replace( rdefineEnd, "" ) /* 2 */ + .replace( /define\(\[[^\]]+\]\)[\W\n]+$/, "" ); /* 3 */ + + // Type a (single return) + if ( ( /\// ).test( id ) ) { + contents = contents + .replace( /\nreturn/, "\nvar " + name + " =" ); + } + + return contents; + } + }, + bundle: { + options: { + modules: [ + { + name: "globalize", + include: [ "core" ], + exclude: [ "cldr", "cldr/event" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-core.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.currency", + include: [ "currency" ], + exclude: [ + "cldr", + "cldr/event", + "cldr/supplemental", + "./core", + "./number" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-currency.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.date", + include: [ "date" ], + exclude: [ + "cldr", + "cldr/event", + "cldr/supplemental", + "./core", + "./number" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-date.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.message", + include: [ "message" ], + exclude: [ "cldr", "./core" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-message.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.number", + include: [ "number" ], + exclude: [ + "cldr", + "cldr/event", + "cldr/supplemental", + "./core" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-number.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.plural", + include: [ "plural" ], + exclude: [ + "cldr", + "cldr/event", + "cldr/supplemental", + "./core" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-plural.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.relative-time", + include: [ "relative-time" ], + exclude: [ + "cldr", + "cldr/event", + "cldr/supplemental", + "./core", + "./number", + "./plural" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-relative-time.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.unit", + include: [ "unit" ], + exclude: [ + "cldr", + "./core", + "./number", + "./plural" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-unit.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize-runtime", + include: [ "core-runtime" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-core-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.currency-runtime", + include: [ "currency-runtime" ], + exclude: [ + "./core-runtime", + "./number-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-currency-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.date-runtime", + include: [ "date-runtime" ], + exclude: [ + "./core-runtime", + "./number-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-date-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.message-runtime", + include: [ "message-runtime" ], + exclude: [ "./core-runtime" ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-message-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.number-runtime", + include: [ "number-runtime" ], + exclude: [ + "./core-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-number-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.plural-runtime", + include: [ "plural-runtime" ], + exclude: [ + "./core-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-plural-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.relative-time-runtime", + include: [ "relative-time-runtime" ], + exclude: [ + "./core-runtime", + "./number-runtime", + "./plural-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-relative-time-runtime.js", + endFile: "src/build/outro.js" + } + } + }, + { + name: "globalize.unit-runtime", + include: [ "unit-runtime" ], + exclude: [ + "./core-runtime", + "./number-runtime", + "./plural-runtime" + ], + create: true, + override: { + wrap: { + startFile: "src/build/intro-unit-runtime.js", + endFile: "src/build/outro.js" + } + } + } + ] + } + } + }, + watch: { + files: [ "src/*.js", "test/functional/**/*.js", "test/unit/**/*.js", "test/*.html" ], + tasks: [ "default" ] + }, + copy: { + options: { + processContent: function( content ) { + + // Remove leftover define created during rjs build + content = content.replace( /define\(".*/, "" ); + + // Embed VERSION and DATE + return replaceConsts( content ); + } + }, + coreAndRuntime: { + expand: true, + cwd: "dist/.build/", + src: [ "globalize.js", "globalize-runtime.js" ], + dest: "dist/" + }, + modules: { + expand: true, + cwd: "dist/.build/", + src: [ "globalize*.js", "!globalize.js", "!*runtime*.js" ], + dest: "dist/globalize", + rename: function( dest, src ) { + return require( "path" ).join( dest, src.replace( /globalize\./, "" ) ); + } + }, + runtimeModules: { + expand: true, + cwd: "dist/.build/", + src: [ "globalize.*runtime.js" ], + dest: "dist/globalize-runtime", + rename: function( dest, src ) { + return require( "path" ).join( dest, src.replace( /(globalize\.|-runtime)/g, "" ) ); + } + }, + allInOneNode: { + src: "src/build/node-main.js", + dest: "dist/node-main.js" + } + }, + uglify: { + options: { + banner: replaceConsts( grunt.file.read( "src/build/intro.min.js" ) ) + }, + dist: { + files: { + "tmp/globalize.min.js": [ "dist/globalize.js" ], + "tmp/globalize/currency.min.js": [ "dist/globalize/currency.js" ], + "tmp/globalize/date.min.js": [ "dist/globalize/date.js" ], + "tmp/globalize/number.min.js": [ "dist/globalize/number.js" ], + "tmp/globalize/plural.min.js": [ "dist/globalize/plural.js" ], + "tmp/globalize/message.min.js": [ "dist/globalize/message.js" ], + "tmp/globalize/relative-time.min.js": [ "dist/globalize/relative-time.js" ], + "tmp/globalize/unit.min.js": [ "dist/globalize/unit.js" ], + + "tmp/globalize-runtime.min.js": [ "dist/globalize-runtime.js" ], + "tmp/globalize-runtime/currency.min.js": [ + "dist/globalize-runtime/currency.js" + ], + "tmp/globalize-runtime/date.min.js": [ "dist/globalize-runtime/date.js" ], + "tmp/globalize-runtime/message.min.js": [ "dist/globalize-runtime/message.js" ], + "tmp/globalize-runtime/number.min.js": [ "dist/globalize-runtime/number.js" ], + "tmp/globalize-runtime/plural.min.js": [ "dist/globalize-runtime/plural.js" ], + "tmp/globalize-runtime/relative-time.min.js": [ + "dist/globalize-runtime/relative-time.js" + ], + "tmp/globalize-runtime/unit.min.js": [ "dist/globalize-runtime/unit.js" ] + } + } + }, + + // TODO figure out how to specify exceptions for externals + "compare_size": { + files: [ + "tmp/globalize.min.js", + "tmp/globalize/*min.js", + "tmp/globalize-runtime.min.js", + "tmp/globalize-runtime/*min.js" + ], + options: { + compress: { + gz: function( fileContents ) { + return require( "gzip-js" ).zip( fileContents, {}).length; + } + } + } + }, + clean: { + dist: [ + "dist" + ] + }, + checkDependencies: { + bower: { + options: { + packageManager: "bower" + } + }, + npm: { + options: { + packageManager: "npm" + } + } + } + }); + + require( "matchdep" ).filterDev( "grunt-*" ).forEach( grunt.loadNpmTasks ); + + grunt.registerTask( "test", function() { + var args = [].slice.call( arguments ); + if ( !isConnectTestRunning ) { + grunt.task.run( "checkDependencies" ); + grunt.task.run( "connect:test" ); + isConnectTestRunning = true; + } + grunt.task.run( [ "qunit" ].concat( args ).join( ":" ) ); + }); + + // Default task. + grunt.registerTask( "default", [ + "jshint:grunt", + "jshint:source", + "jshint:test", + "jscs:grunt", + "jscs:source", + + // TODO fix issues, enable + //"jscs:test", + "test:unit", + "clean", + "requirejs", + "copy", + "jshint:dist", + + // TODO fix issues, enable + // "jscs:dist", + "test:functional", + "uglify", + "compare_size", + "commitplease" + ]); + +}; diff --git a/StockManMVC/.bin/bower_components/globalize/LICENSE.txt b/StockManMVC/.bin/bower_components/globalize/LICENSE.txt new file mode 100644 index 0000000..0f9f2e5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/LICENSE.txt @@ -0,0 +1,43 @@ +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/globalize + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the doc directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. diff --git a/StockManMVC/.bin/bower_components/globalize/README.md b/StockManMVC/.bin/bower_components/globalize/README.md new file mode 100644 index 0000000..7968a4e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/README.md @@ -0,0 +1,867 @@ +# Globalize + +[![Build Status](https://secure.travis-ci.org/jquery/globalize.svg?branch=master)](http://travis-ci.org/jquery/globalize) +[![devDependency Status](https://david-dm.org/jquery/globalize/status.svg)](https://david-dm.org/jquery/globalize#info=dependencies) +[![devDependency Status](https://david-dm.org/jquery/globalize/dev-status.svg)](https://david-dm.org/jquery/globalize#info=devDependencies) + +A JavaScript library for internationalization and localization that leverage the +official [Unicode CLDR](http://cldr.unicode.org/) JSON data. The library works both for the browser and as a +Node.js module. + +- [About Globalize](#about-globalize) + - [Why globalization?](#why-globalization) + - [Why Globalize?](#why-globalize) + - [Migrating from Globalize 0.x](#migrating-from-globalize-0x) + - [Where to use it?](#where-to-use-it) + - [Where does the data come from?](#where-does-the-data-come-from) + - [Only load and use what you need](#pick-the-modules-you-need) + - [Browser support](#browser-support) +- [Getting started](#getting-started) + - [Requirements](#requirements) + - [Installation](#installation) + - [Usage](#usage) + - [Performance](#performance) + - [Compilation and the Runtime modules](#compilation-and-the-runtime-modules) + - [Examples](#examples) +- [API](#api) + - [Core](#core-module) + - [Date module](#date-module) + - [Message module](#message-module) + - [Number module](#number-module) + - [Currency module](#currency-module) + - [Plural module](#plural-module) + - [Relative time module](#relative-time-module) + - [Unit module](#unit-module) + - more to come... +- [Error reference](#error-reference) +- [Contributing](#contributing) + - [Roadmap](#roadmap) +- [Development](#development) + - [File structure](#file-structure) + - [Source files](#source-files) + - [Tests](#tests) + - [Build](#build) + + +## About Globalize + +### Why globalization? + +Each language, and the countries that speak that language, have different +expectations when it comes to how numbers (including currency and percentages) +and dates should appear. Obviously, each language has different names for the +days of the week and the months of the year. But they also have different +expectations for the structure of dates, such as what order the day, month and +year are in. In number formatting, not only does the character used to +delineate number groupings and the decimal portion differ, but the placement of +those characters differ as well. + +A user using an application should be able to read and write dates and numbers +in the format they are accustomed to. This library makes this possible, +providing an API to convert user-entered number and date strings - in their +own format - into actual numbers and dates, and conversely, to format numbers +and dates into that string format. + +Even if the application deals only with the English locale, it may still need +globalization to format programming language bytes into human-understandable +language and vice-versa in an effective and reasonable way. For example, to +display something better than "Edited 1 minutes ago". + +### Why Globalize? + +Globalize provides number formatting and parsing, date and time formatting and +parsing, currency formatting, message formatting (ICU message format pattern), +and plural support. + +Design Goals. + +- Leverages the Unicode CLDR data and follows its UTS#35 specification. +- Keeps code separate from i18n content. Doesn't host or embed any locale data + in the library. Empowers developers to control the loading mechanism of their + choice. +- Allows developers to load as much or as little data as they need. Avoids + duplicating data if using multiple i18n libraries that leverage CLDR. +- Keeps code modular. Allows developers to load the i18n functionalities they + need. +- Runs in browsers and Node.js, consistently across all of them. +- Makes globalization as easy to use as jQuery. + +Globalize is based on the Unicode Consortium's Common Locale Data Repository +(CLDR), the largest and most extensive standard repository of locale data +available. CLDR is constantly updated and is used by many large applications and +operating systems, so you'll always have access to the most accurate and +up-to-date locale data. + +Globalize needs CLDR content to function properly, although it doesn't embed, +hard-code, or host such content. Instead, Globalize empowers developers to load +CLDR data the way they want. Vanilla CLDR in its official JSON format (no +pre-processing) is expected to be provided. As a consequence, (a) Globalize +avoids bugs caused by outdated i18n content. Developers can use up-to-date CLDR +data directly from Unicode as soon as it's released, without having to wait for +any pipeline on our side. (b) Developers have full control over which locale +coverage they want to provide on their applications. (c) Developers are able to +share the same i18n dataset between Globalize and other libraries that leverage +CLDR. There's no need for duplicating data. + +Globalize is systematically tested against desktop and mobile browsers and +Node.js. So, using it you'll get consistent results across different browsers +and across browsers and the server. + +Globalize doesn't use native Ecma-402 yet, which could potentially improve date +and number formatting performance. Although Ecma-402 support is improving among +modern browsers and even Node.js, the functionality and locale coverage level +varies between different environments (see Comparing JavaScript Libraries [slide +25][]). Globalize needs to do more research and testings to use it reliably. + +For alternative libraries and more, check out this [JavaScript globalization +overview][]. + +[slide 25]: http://jsi18n.com/jsi18n.pdf +[JavaScript globalization overview]: http://rxaviers.github.io/javascript-globalization/ + +### Migrating from Globalize 0.x + +Are you coming from Globalize 0.x? Read our [migration guide][] to learn what +have changed and how to migrate older 0.x code to up-to-date 1.x. + +[migration guide]: doc/migrating-from-0.x.md + +### Where to use it? + +Globalize is designed to work both in the [browser](#browser-support), or in +[Node.js](#usage). It supports both [AMD](#usage) and [CommonJS](#usage). + +### Where does the data come from? + +Globalize uses the [Unicode CLDR](http://cldr.unicode.org/), the largest and +most extensive standard repository of locale data. + +We do NOT embed any i18n data within our library. However, we make it really +easy to use. Read [How to get and load CLDR JSON data](#2-cldr-content) for more +information on its usage. + +### Pick the modules you need + +| File | Minified + gzipped size | Runtime minified + gzipped size | Summary | +|---|--:|--:|---| +| globalize.js | 1.5KB | 1.0KB | [Core library](#core-module) | +| globalize/currency.js | 2.6KB | 0.6KB | [Currency module](#currency-module) provides currency formatting and parsing | +| globalize/date.js | 5.1KB | 3.8KB | [Date module](#date-module) provides date formatting and parsing | +| globalize/message.js | 5.4KB | 0.7KB | [Message module](#message-module) provides ICU message format support | +| globalize/number.js | 3.1KB | 1.8KB | [Number module](#number-module) provides number formatting and parsing | +| globalize/plural.js | 2.3KB | 0.4KB | [Plural module](#plural-module) provides pluralization support | +| globalize/relative-time.js | 0.8KB | 0.6KB | [Relative time module](#relative-time-module) provides relative time formatting support | +| globalize/unit.js | 0.9KB | 0.5KB | [Unit module](#unit-module) provides unit formatting support | + +### Browser Support + +Globalize 1.x supports the following browsers: + +- Chrome: (Current - 1) or Current +- Firefox: (Current - 1) or Current +- Safari: 5.1+ +- Opera: 12.1x, (Current - 1) or Current +- IE9+ + +*(Current - 1)* or *Current* denotes that we support the current stable version +of the browser and the version that preceded it. For example, if the current +version of a browser is 24.x, we support the 24.x and 23.x versions. + +## Getting Started + + npm install globalize cldr-data + +```js +var Globalize = require( "globalize" ); +Globalize.load( require( "cldr-data" ).entireSupplemental() ); +Globalize.load( require( "cldr-data" ).entireMainFor( "en", "es" ) ); + +Globalize("en").formatDate(new Date()); +// > "11/27/2015" + +Globalize("es").formatDate(new Date()); +// > "27/11/2015" +``` + +Read the [Locales section](#locales) for more information about supported locales. For AMD, bower and other usage examples, see [Examples section](#examples). + +### Installation + +*By downloading a ZIP or a TAR.GZ...* + +Click the github [releases tab](https://github.com/jquery/globalize/releases) +and download the latest available Globalize package. + +*By using a package manager...* + +Use bower `bower install globalize`, or npm `npm install globalize cldr-data`. + +*By using source files...* + +1. `git clone https://github.com/jquery/globalize.git`. +1. [Build the distribution files](#build). + +### Requirements + +#### 1. Dependencies + +If you use module loading like ES6 import, CommonJS, or AMD and fetch your code +using package managers like *npm* or *bower*, you don't need to worry about this +and can skip reading this section. Otherwise, you need to satisfy Globalize +dependencies prior to using it. There is only one external dependency: +[cldr.js][], which is a CLDR low level manipulation tool. Additionally, you need +to satisfy the cross-dependencies between modules. + +| Module | Dependencies (load in order) | +|---|---| +| Core module | [cldr.js][] | +| Currency module | globalize.js (core), globalize/number.js, and globalize/plural.js (only required for "code" or "name" styles) | +| Date module | globalize.js (core) and globalize/number.js | +| Message module | globalize.js (core) and globalize/plural.js (if using messages that need pluralization support) | +| Number module | globalize.js (core) | +| Plural | globalize.js (core) | +| Relative time module | globalize.js (core), globalize/number.js, and globalize/plural.js | +| Unit module | globalize.js (core), globalize/number.js, and globalize/plural.js | + +As an alternative to deducing this yourself, use this [online tool](http://johnnyreilly.github.io/globalize-so-what-cha-want/). The tool allows you to select the modules you're interested in using and tells you the Globalize files *and* CLDR JSON that you need. + +[cldr.js]: https://github.com/rxaviers/cldrjs + +#### 2. CLDR content + +Globalize is the i18n software (the engine). Unicode CLDR is the i18n content +(the fuel). You need to feed Globalize on the appropriate portions of CLDR prior +to using it. + +*(a) How do I figure out which CLDR portions are appropriate for my needs?* + +Each Globalize function requires a special set of CLDR portions. Once you know +which Globalize functionalities you need, you can deduce its respective CLDR +requirements. See table below. + +| Module | Required CLDR JSON files | +|---|---| +| Core module | cldr/supplemental/likelySubtags.json | +| Currency module | cldr/main/`locale`/currencies.json
cldr/supplemental/currencyData.json
+CLDR JSON files from number module
+CLDR JSON files from plural module for name style support | +| Date module | cldr/main/`locale`/ca-gregorian.json
cldr/main/`locale`/timeZoneNames.json
cldr/supplemental/timeData.json
cldr/supplemental/weekData.json
+CLDR JSON files from number module | +| Number module | cldr/main/`locale`/numbers.json
cldr/supplemental/numberingSystems.json | +| Plural module | cldr/supplemental/plurals.json (for cardinals)
cldr/supplemental/ordinals.json (for ordinals) | +| Relative time module | cldr/main/`locale`/dateFields.json
+CLDR JSON files from number and plural modules | +| Unit module | cldr/main/`locale`/units.json
+CLDR JSON files from number and plural module | + +As an alternative to deducing this yourself, use this [online tool](http://johnnyreilly.github.io/globalize-so-what-cha-want/). The tool allows you to select the modules you're interested in using and tells you the Globalize files *and* CLDR JSON that you need. + +*(b) How am I supposed to get and load CLDR content?* + +Learn [how to get and load CLDR content...](doc/cldr.md). + +### Usage + +Globalize's consumable-files are located in the `./dist` directory. If you +don't find it, it's because you are using a development branch. You should +either use a tagged version or [build the distribution files yourself](#build). +Read [installation](#installation) above if you need more information on how to +download. + +Globalize can be used for a variety of different i18n tasks, eg. formatting or +parsing dates, formatting or parsing numbers, formatting messages, etc. You may +NOT need Globalize in its entirety. For that reason, we made it modular. So, you +can cherry-pick the pieces you need, eg. load `dist/globalize.js` to get +Globalize core, load `dist/globalize/date.js` to extend Globalize with Date +functionalities, etc. + +An example is worth a thousand words. Check out our [Examples](#examples) +section below. + +### Performance + +When formatting or parsing, there's actually a two-step process: (a) the +formatter (or parser) *creation* and (b) its *execution*, where creation takes +an order of magnitude more time (more expensive) than execution. In the creation +phase, Globalize traverses the CLDR tree, processes data (e.g., expands date +patterns, parses plural rules, etc), and returns a function that actually +executes the formatting or parsing. + +```js +// Formatter creation. +var formatter = Globalize.numberFormatter(); + +// Formatter execution (roughly 10x faster than above). +formatter( Math.PI ); +// > 3.141 +``` + +As a rule of thumb for optimal performance, cache your formatters and parsers. +For example: (a) on iterations, generate them outside the loop and reuse while +looping; (b) on server applications, generate them in advance and execute when +requests arrive. + +### Compilation and the Runtime modules + +Take advantage of compiling your formatters and/or parsers during build time +when deploying to production. It's much faster than generating them in real-time +and it's also much smaller (i.e., better loading performance). + +Your compiled formatters and parsers allow you to skip a big part of the library +and also allow you to skip loading CLDR data, because they have already been +created (see [Performance](#performance) above for more information). + +To illustrate, see our [Basic Globalize Compiler example][]. + + +#### Globalize Compiler + +For information about the Globalize Compiler CLI or its JavaScript API, see the +[Globalize Compiler documentation][]. + +[Globalize Compiler documentation]: https://github.com/jquery-support/globalize-compiler#README + +### Examples + +The fastest and easiest way to use Globalize is by integrating it into your +existing tools. + +- [Application example using webpack and npm](examples/app-npm-webpack/): easy to + get started, automated CLDR loading and precompilation for production, but + requires npm and webpack knowledge. + +If you're using a different tool than the one above, but you're comfortable +using JavaScript modules (such as ES6 modules, CommonJS, or AMD) and package +managers like npm or bower, you may want to check out the following examples. +Note you'll need to compile your code for production yourself. + +- [Basic example using AMD and bower](examples/amd-bower/): feeding Globalize on + CLDR is not completely transparent. +- [Basic example using Node.js and npm](examples/node-npm/): feeding Globalize + on CLDR is not completely transparent. +- [Basic Globalize Compiler example][]: shows how to use Globalize Compiler CLI. + +[Basic Globalize Compiler example]: examples/globalize-compiler/ + +If you're using none of the tools above, but instead you're using the plain and +old script tags only, the following example may interest you. Note Globalize +allows you to go low level like this. But, acknowledge that you'll need to +handle dependencies and CLDR loading manually yourself. + +- [Basic example using plain JavaScript](examples/plain-javascript/): requires + loading CLDR and handling dependencies manually. + +## API + +### Core module + +- **`Globalize.load( cldrJSONData, ... )`** + + This method allows you to load CLDR JSON locale data. `Globalize.load()` is a + proxy to `Cldr.load()`. + + [Read more...](doc/api/core/load.md) + +- **`Globalize.locale( [locale|cldr] )`** + + Set default locale, or get it if locale argument is omitted. + + [Read more...](doc/api/core/locale.md) + +- **`[new] Globalize( locale|cldr )`** + + Create a Globalize instance. + + [Read more...](doc/api/core/constructor.md) + +#### Locales + +A locale is an identifier (id) that refers to a set of user preferences that +tend to be shared across significant swaths of the world. In technical terms, +it's a String composed of three parts: language, script, and region. For +example: + +| locale | description | +| --- | --- | +| *en-Latn-US* | English as spoken in the Unites States in the Latin script. | +| *en-US* | English as spoken in the Unites States (Latin script is deduced given it's the most likely script used in this place). | +| *en* | English (United States region and Latin script are deduced given they are respectively the most likely region and script used in this place). | +| *en-GB* | English as spoken in the United Kingdom (Latin script is deduced given it's the most likely script used in this place). | +| *en-IN* | English as spoken in India (Latin script is deduced). | +| *es* | Spanish (Spain region and Latin script are deduced). | +| *es-MX* | Spanish as spoken in Mexico (Latin script is deduced). | +| *zh* | Chinese (China region and Simplified Han script are deduced). | +| *zh-TW* | Chinese as spoken in Taiwan (Traditional Han script is deduced). | +| *ja* | Japanese (Japan region and Japanese script are deduced). | +| *de* | German (Germany region and Latin script are deduced). | +| *pt* | Portuguese (Brazil region and Latin script are deduced). | +| *pt-PT* | Portuguese as spoken in Portugal (Latin script is deduced). | +| *fr* | French (France region and Latin script are deduced). | +| *ru* | Russian (Russia region and Cyrillic script are deduced). | +| *ar* | Arabic (Egypt region and Arabic script are deduced). | + +The likely deductibility is computed by using CLDR data, which is based on the +population and the suppress-script data in BCP47 (among others). The data is +heuristically derived, and may change over time. + +Figure out the deduced information by looking at the +`cldr.attributes.maxLanguageId` property of a Globalize instance: + +```js +var Globalize = require( "globalize" ); +Globalize.load( require( "cldr-data" ).entireSupplemental() ); +Globalize("en").cldr.attributes.maxLanguageId; +// > "en-Latn-US" +``` + +Globalize supports all the locales available in CLDR, which are around 740. +For more information, search for coverage charts at the downloads section of +http://cldr.unicode.org/. + +Read more details about locale at [UTS#35 locale][]. + +[UTS#35 locale]: http://www.unicode.org/reports/tr35/#Locale + +### Date module + +- **`.dateFormatter( [options] )`** + + Return a function that formats a date according to the given `options`. The default formatting is + numeric year, month, and day (i.e., `{ skeleton: "yMd" }`. + + ```javascript + .dateFormatter()( new Date() ) + // > "11/30/2010" + + .dateFormatter({ skeleton: "GyMMMd" })( new Date() ) + // > "Nov 30, 2010 AD" + + .dateFormatter({ date: "medium" })( new Date() ) + // > "Nov 1, 2010" + + .dateFormatter({ time: "medium" })( new Date() ) + // > "5:55:00 PM" + + .dateFormatter({ datetime: "medium" })( new Date() ) + // > "Nov 1, 2010, 5:55:00 PM" + ``` + + [Read more...](doc/api/date/date-formatter.md) + +- **`.dateParser( [options] )`** + + Return a function that parses a string representing a date into a JavaScript Date object according + to the given `options`. The default parsing assumes numeric year, month, and day (i.e., `{ + skeleton: "yMd" }`). + + ```javascript + .dateParser()( "11/30/2010" ) + // > new Date( 2010, 10, 30, 0, 0, 0 ) + + .dateParser({ skeleton: "GyMMMd" })( "Nov 30, 2010 AD" ) + // > new Date( 2010, 10, 30, 0, 0, 0 ) + + .dateParser({ date: "medium" })( "Nov 1, 2010" ) + // > new Date( 2010, 10, 30, 0, 0, 0 ) + + .dateParser({ time: "medium" })( "5:55:00 PM" ) + // > new Date( 2015, 3, 22, 17, 55, 0 ) // i.e., today @ 5:55PM + + .dateParser({ datetime: "medium" })( "Nov 1, 2010, 5:55:00 PM" ) + // > new Date( 2010, 10, 30, 17, 55, 0 ) + ``` + + [Read more...](doc/api/date/date-parser.md) + +- **`.formatDate( value [, options] )`** + + Alias for `.dateFormatter( [options] )( value )`. + +- **`.parseDate( value [, options] )`** + + Alias for `.dateParser( [options] )( value )`. + +### Message module + +- **`Globalize.loadMessages( json )`** + + Load messages data. + + [Read more...](doc/api/message/load-messages.md) + +- **`.messageFormatter( path ) ➡ function( [variables] )`** + + Return a function that formats a message (using ICU message format pattern) + given its path and a set of variables into a user-readable string. It supports + pluralization and gender inflections. + + ```javascript + .messageFormatter( "task" )( 1000 ) + // > "You have 1,000 tasks remaining" + + .messageFormatter( "like" )( 3 ) + // > "You and 2 others liked this" + ``` + + [Read more...](doc/api/message/message-formatter.md) + +- **`.formatMessage( path [, variables ] )`** + + Alias for `.messageFormatter( path )([ variables ])`. + +### Number module + +- **`.numberFormatter( [options] )`** + + Return a function that formats a number according to the given options or locale's defaults. + + ```javascript + .numberFormatter()( pi ) + // > "3.142" + + .numberFormatter({ maximumFractionDigits: 5 })( pi ) + // > "3.14159" + + .numberFormatter({ round: "floor" })( pi ) + // > "3.141" + + .numberFormatter({ minimumFractionDigits: 2 })( 10000 ) + // > "10,000.00" + + .numberFormatter({ style: "percent" })( 0.5 ) + // > "50%" + ``` + + [Read more...](doc/api/number/number-formatter.md) + +- **`.numberParser( [options] )`** + + Return a function that parses a string representing a number according to the given options or + locale's defaults. + + ```javascript + .numberParser()( "3.14159" ) + // > 3.14159 + + .numberParser()( "10,000.00" ) + // > 10000 + + .numberParser({ style: "percent" })( "50%" ) + // > 0.5 + ``` + + [Read more...](doc/api/number/number-parser.md) + +- **`.formatNumber( value [, options] )`** + + Alias for `.numberFormatter( [options] )( value )`. + +- **`.parseNumber( value [, options] )`** + + Alias for `.numberParser( [options] )( value )`. + +#### Currency module + +- **`.currencyFormatter( currency [, options] )`** + + Return a function that formats a currency according to the given options or + locale's defaults. + + ```javascript + .currencyFormatter( "USD" )( 1 ) + // > "$1.00" + + .currencyFormatter( "USD", { style: "accounting" })( -1 ) + // > "($1.00)" + + .currencyFormatter( "USD", { style: "name" })( 69900 ) + // > "69,900.00 US dollars" + + .currencyFormatter( "USD", { style: "code" })( 69900 ) + // > "69,900.00 USD" + + .currencyFormatter( "USD", { round: "ceil" })( 1.491 ) + // > "$1.50" + ``` + + [Read more...](doc/api/currency/currency-formatter.md) + +- **`.formatCurrency( value, currency [, options] )`** + + Alias for `.currencyFormatter( currency [, options] )( value )`. + +### Plural module + +- **`.pluralGenerator( [options] )`** + + Return a function that returns the value's corresponding plural group: `zero`, + `one`, `two`, `few`, `many`, or `other`. + + The function may be used for cardinals or ordinals. + + ```javascript + .pluralGenerator()( 0 ) + // > "other" + + .pluralGenerator()( 1 ) + // > "one" + + .pluralGenerator({ type: "ordinal" })( 1 ) + // > "one" + + .pluralGenerator({ type: "ordinal" })( 2 ) + // > "two" + ``` + + [Read more...](doc/api/plural/plural-generator.md) + +- **`.plural( value[, options ] )`** + + Alias for `.pluralGenerator( [options] )( value )`. + +### Relative time module + +- **`.relativeTimeFormatter( unit [, options] )`** + + Returns a function that formats a relative time according to the given unit, options, and the + default/instance locale. + + ```javascript + .relativeTimeFormatter( "day" )( 1 ) + // > "tomorrow" + + .relativeTimeFormatter( "month" )( -1 ) + // > "last month" + + .relativeTimeFormatter( "month" )( 3 ) + // > "in 3 months" + ``` + + [Read more...](doc/api/relative-time/relative-time-formatter.md) + +- **`.formatRelativeTime( value, unit [, options] )`** + + Alias for `.relativeTimeFormatter( unit, options )( value )`. + +## Unit module + +- **`.unitFormatter( unit [, options] )`** + + Returns a function that formats a unit according to the given unit, options, and the + default/instance locale. + + ```javascript + .unitFormatter( "second" )( 10 ) + // > "10 seconds" + + .unitFormatter( "second", { form: "short" } )( 10 ) + // > "10 secs" + + .unitFormatter( "second", { form: "narrow" } )( 10 ) + // > "10s" + ``` + + [Read more...](doc/api/unit/unit-formatter.md) + +- **`.formatUnit( value, unit [, options] )`** + + Alias for `.unitFormatter( unit, options )( value )`. + +## Error reference + +### CLDR Errors + +- **`E_INVALID_CLDR`** + + Thrown when a CLDR item has an invalid or unexpected value. + + [Read more...](doc/error/e-invalid-cldr.md) + +- **`E_MISSING_CLDR`** + + Thrown when any required CLDR item is NOT found. + + [Read more...](doc/error/e-missing-cldr.md) + +### Parameter Errors + +- **`E_INVALID_PAR_TYPE`** + + Thrown when a parameter has an invalid type on any static or instance methods. + + [Read more...](doc/error/e-invalid-par-type.md) + +- **`E_INVALID_PAR_VALUE`** + + Thrown for certain parameters when the type is correct, but the value is + invalid. + + [Read more...](doc/error/e-invalid-par-value.md) + +- **`E_MISSING_PARAMETER`** + + Thrown when a required parameter is missing on any static or instance methods. + + [Read more...](doc/error/e-missing-parameter.md) + +- **`E_PAR_OUT_OF_RANGE`** + + Thrown when a parameter is not within a valid range of values. + + [Read more...](doc/error/e-par-out-of-range.md) + +### Other Errors + +- **`E_DEFAULT_LOCALE_NOT_DEFINED`** + + Thrown when any static method, eg. `Globalize.formatNumber()` is used prior to + setting the Global locale with `Globalize.locale( )`. + + [Read more...](doc/error/e-default-locale-not-defined.md) + +- **`E_MISSING_PLURAL_MODULE`** + + Thrown when plural module is needed, but not loaded, eg. to format currencies + using the named form. + + [Read more...](doc/error/e-missing-plural-module.md) + +- **`E_UNSUPPORTED`** + + Thrown for unsupported features, eg. to format unsupported date patterns. + + [Read more...](doc/error/e-unsupported.md) + + +## Contributing + +If you are having trouble using Globalize after reading the documentation +carefully, please post a question to [StackOverflow with the +"javascript-globalize" tag][]. Questions that include a minimal demo are more +likely to receive responses. + +In the spirit of open source software development, we always encourage +community code contribution. To help you get started and before you jump into +writing code, be sure to read [CONTRIBUTING.md](CONTRIBUTING.md). + +[StackOverflow with the "javascript-globalize" tag]: http://stackoverflow.com/tags/javascript-globalize + +For ideas where to start contributing, see the following queries to find what +best suites your interest: [quick changes][], [new features][], [bug fixes][], +[documentation improvements][], [date module][], [currency module][], [message +module][], [number module][], [plural module][], [relative time module][]. Last +but not least, feel free to [get in touch](http://irc.jquery.org/). + +[bug fixes]: https://github.com/jquery/globalize/labels/bug +[documentation improvements]: https://github.com/jquery/globalize/labels/docs +[new features]: https://github.com/jquery/globalize/labels/new%20feature +[quick changes]: https://github.com/jquery/globalize/labels/quick%20changes + +[currency module]: https://github.com/jquery/globalize/labels/currency%20module +[date module]: https://github.com/jquery/globalize/labels/date%20module +[message module]: https://github.com/jquery/globalize/labels/message%20module +[number module]: https://github.com/jquery/globalize/labels/number%20module +[plural module]: https://github.com/jquery/globalize/labels/plural%20module +[relative time module]: https://github.com/jquery/globalize/labels/relative%20time%20module + +### Roadmap + +Our roadmap is the collection of all open issues and pull requests where you can +find: + +- [Ongoing work][] lists our current sprint. Here you find where we're actively + working on at this very moment. Priority is determined by the community needs + and volunteering. If there is anything you want to be done, share your + thoughts with us on any existing or new issue and especially volunteer to do + it. +- [Everything else][] is potential next work that you could help us to + accomplish now. Releases are published following semver rules as often as + possible. + +[Ongoing work]: https://github.com/jquery/globalize/labels/Current%20Sprint +[Everything else]: https://github.com/jquery/globalize/issues?utf8=%E2%9C%93&q=is%3Aopen+-label%3A%22Current+Sprint%22+ + +## Development + +### File structure +``` +├── bower.json (metadata file) +├── CONTRIBUTING.md (doc file) +├── dist/ (consumable files, the built files) +├── external/ (external dependencies, eg. cldr.js, QUnit, RequireJS) +├── Gruntfile.js (Grunt tasks) +├── LICENSE.txt (license file) +├── package.json (metadata file) +├── README.md (doc file) +├── src/ (source code) +│ ├── build/ (build helpers, eg. intro, and outro) +│ ├── common/ (common function helpers across modules) +│ ├── core.js (core module) +│ ├── date/ (date source code) +│ ├── date.js (date module) +│ ├── message.js (message module) +│ ├── number.js (number module) +│ ├── number/ (number source code) +│ ├── plural.js (plural module) +│ ├── plural/ (plural source code) +│ ├── relative-time.js (relative time module) +│ ├── relative-time/ (relative time source code) +│ ├── unit.js (unit module) +│ ├── unit/ (unit source code) +│ └── util/ (basic JavaScript helpers polyfills, eg array.map) +└── test/ (unit and functional test files) + ├── fixtures/ (CLDR fixture data) + ├── functional/ (functional tests) + ├── functional.html + ├── functional.js + ├── unit/ (unit tests) + ├── unit.html + └── unit.js +``` + +### Source files + +The source files are as granular as possible. When combined to generate the +build file, all the excessive/overhead wrappers are cut off. It's following +the same build model of jQuery and Modernizr. + +Core, and all modules' public APIs are located in the `src/` directory, ie. +`core.js`, `date.js`, `message.js`, `number.js`, and `plural.js`. + +### Install development external dependencies + +Install Grunt and external dependencies. First, install the +[grunt-cli](http://gruntjs.com/getting-started#installing-the-cli) and +[bower](http://bower.io/) packages if you haven't before. These should be +installed globally (like this: `npm install -g grunt-cli bower`). Then: + +```bash +npm install && bower install +``` + +### Tests + +Tests can be run either in the browser or using Node.js (via Grunt) after having +installed the external development dependencies (for more details, see above). + +***Unit tests*** + +To run the unit tests, run `grunt test:unit`, or run `grunt connect:keepalive` +and open `http://localhost:9001/test/unit.html` in a browser. It tests the very +specific functionality of each function (sometimes internal/private). + +The goal of the unit tests is to make it easy to spot bugs, easy to debug. + +***Functional tests*** + +To run the functional tests, create the dist files by running `grunt`. Then, run +`grunt test:functional`, or open `http://localhost:9001/test/functional.html` in +a browser. Note that `grunt` will automatically run unit and functional tests +for you to ensure the built files are safe. + +The goal of the functional tests is to ensure that everything works as expected +when it is combined. + +### Build + +Build the distribution files after having installed the external development +dependencies (for more details, see above). + +```bash +grunt +``` diff --git a/StockManMVC/.bin/bower_components/globalize/bower.json b/StockManMVC/.bin/bower_components/globalize/bower.json new file mode 100644 index 0000000..49ee5d6 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/bower.json @@ -0,0 +1,23 @@ +{ + "name": "globalize", + "license": "MIT", + "ignore": [ + "**/.*", + "test", + "CONTRIBUTING.md", + "bower.json" + ], + "dependencies": { + "cldrjs": "0.4.4", + "cldr-data": ">=25" + }, + "devDependencies": { + "es5-shim": "3.4.0", + "make-plural": "eemeli/make-plural.js#3.0.0", + "messageformat": "SlexAxton/messageformat.js#v0.3.0-1", + "qunit": "1.18.0", + "requirejs": "2.1.20", + "requirejs-plugins": "1.0.2", + "requirejs-text": "2.0.10" + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/browserstack.json b/StockManMVC/.bin/bower_components/globalize/browserstack.json new file mode 100644 index 0000000..cbffa87 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/browserstack.json @@ -0,0 +1,17 @@ +{ + "test_framework": "qunit", + "test_path": [ "test/unit.html", "test/functional.html" ], + "browsers": [ + "chrome_previous", + "chrome_latest", + "firefox_previous", + "firefox_latest", + "ie_9", + "ie_10", + "ie_11", + "opera_previous", + "opera_latest", + "safari_previous", + "safari_latest" + ] +} diff --git a/StockManMVC/.bin/bower_components/globalize/chore/release.sh b/StockManMVC/.bin/bower_components/globalize/chore/release.sh new file mode 100644 index 0000000..f0964a4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/chore/release.sh @@ -0,0 +1,106 @@ +#! /bin/bash + +function assertions { + if [ -z "$1" ]; then + echo Usage: $0 "" + exit 1 + fi + + if ! git diff --quiet --exit-code; then + echo Current branch "isn't" clean. Use '`git status` for more details.' + echo Quiting... + exit 1 + fi + + if git rev-parse --verify --quiet $1 > /dev/null; then + echo 'Target tag `'$1'` already exists.' + echo Quiting... + exit 1 + fi + + if [ ! -z `git branch --list $TARGET_BRANCH` ]; then + echo 'Target branch `'$TARGET_BRANCH'` already exists.' + echo Quiting... + exit 1 + fi + + CURRENT_BRANCH=`git name-rev --name-only HEAD` + if [ :$CURRENT_BRANCH != :master ]; then + echo 'Current branch `'$CURRENT_BRANCH'`' "isn't" '`master`.' + echo Quiting... + exit 1 + fi + + echo Preparing release for '`'$1'`' + echo -n Proceed? "[Y|n] " + read input + test :$input = :N -o :$input = :n && exit 1 + + h1 Test + grunt +} + +function h1 { + echo + echo '## '$* +} + +function error { + echo 'ERROR: '$* + exit 2 +} + +function update_authors { + h1 Update AUTHORS file + grunt update-authors > /dev/null && + git commit -a -m 'AUTHORS: Update' > /dev/null && + git show --stat +} + +function update_version { + h1 Update package.json '`versions`' attribute + sed -i.orig 's/"version": "[^"]\+"/"version": "'$1'"/' package.json && + git commit -a -m $1 && + git show +} + +function build { + h1 Include distribution files + + # Yeap, again. Now including the new version in the dist files. + grunt > /dev/null || error Build failed + + git add dist/* > /dev/null && + git commit -a -m "Build: Include distribution files" > /dev/null && + git show --stat || + error Failed including distribution files +} + +function tag { + h1 'Tag `'$1'` (detached)' + git tag -a -m $1 $1 > /dev/null +} + +function checkout_back_to_master { + git checkout master > /dev/null +} + +function final_message { + h1 Done + echo + echo Now you need to: + echo git push --tags origin + echo npm publish + echo git branch -D $TARGET_BRANCH +} + +TARGET_BRANCH=b$1 + +assertions $1 && + update_authors && + update_version $1 && + git checkout -b $TARGET_BRANCH && + build && + tag $1 && + git checkout master > /dev/null && + final_message diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime.js new file mode 100644 index 0000000..1d451d5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime.js @@ -0,0 +1,236 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define( factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory(); + } else { + + // Globalize + root.Globalize = factory(); + } +}( this, function() { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +var stringHash = function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + + + + +var runtimeKey = function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeString( locale, "locale" ); + + this._locale = locale; +} + +Globalize.locale = function( locale ) { + validateParameterTypeString( locale, "locale" ); + + if ( arguments.length ) { + this._locale = locale; + } + return this._locale; +}; + +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeKey = runtimeKey; +Globalize._stringPad = stringPad; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeString = validateParameterTypeString; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/currency.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/currency.js new file mode 100644 index 0000000..b5c61ca --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/currency.js @@ -0,0 +1,119 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +var currencyNameFormat = function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + + + + +var currencyFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + var fn; + + // Return formatter when style is "code" or "name". + if ( pluralGenerator && properties ) { + fn = function currencyFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( + numberFormatter( value ), + pluralGenerator( value ), + properties + ); + }; + + // Return formatter when style is "symbol" or "accounting". + } else { + fn = function currencyFormatter( value ) { + return numberFormatter( value ); + }; + } + + return fn; +}; + + + + +Globalize._currencyFormatterFn = currencyFormatterFn; +Globalize._currencyNameFormat = currencyNameFormat; + +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + options = options || {}; + return Globalize[ runtimeKey( "currencyFormatter", this._locale, [ currency, options ] ) ]; +}; + +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/date.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/date.js new file mode 100644 index 0000000..528678e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/date.js @@ -0,0 +1,1300 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var validateParameterTypeDate = function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + + + + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +var dateDayOfWeek = function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + + + + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +var dateDistanceInDays = function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + + + + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +var dateStartOf = function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + + + + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +var dateDayOfYear = function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + + + + +/** + * millisecondsInDay + */ +var dateMillisecondsInDay = function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + + + + +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + + + + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + + + + +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +var dateFormat = function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + + + + +var dateFormatterFn = function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return dateFormat( value, numberFormatters, properties ); + }; + +}; + + + + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +var dateIsLeapYear = function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + + + + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +var dateLastDayOfMonth = function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + + + + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +var dateSetDate = function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + + + + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +var dateSetMonth = function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + + + + +var outOfRange = function( value, low, high ) { + return value < low || value > high; +}; + + + + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +var dateParse = function( value, tokens, properties ) { + var amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + + // Setting the month later so that we have the correct year and can determine + // the correct last day of February in case of leap year. + month = value; + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( month !== undefined ) { + dateSetMonth( date, month - 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + + + + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + + + + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +var dateTokenizer = function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + + + + +var dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + + + + +Globalize._dateFormatterFn = dateFormatterFn; +Globalize._dateParserFn = dateParserFn; +Globalize._dateFormat = dateFormat; +Globalize._dateParser = dateParse; +Globalize._dateTokenizer = dateTokenizer; +Globalize._validateParameterTypeDate = validateParameterTypeDate; + +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/message.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/message.js new file mode 100644 index 0000000..2637d11 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/message.js @@ -0,0 +1,116 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterType = Globalize._validateParameterType; + + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + + + + +var validateParameterTypeMessageVariables = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + + + + +var messageFormatterFn = function( formatter ) { + return function messageFormatter( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = [].slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + + + + +Globalize._messageFormatterFn = messageFormatterFn; +/* jshint ignore:start */ +Globalize._messageFormat = (function() { +var number = function (value, offset) { + if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + return value - (offset || 0); +}; +var plural = function (value, offset, lcfunc, data, isOrdinal) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + if (offset) value -= offset; + var key = lcfunc(value, isOrdinal); + if (key in data) return data[key](); + return data.other(); +}; +var select = function (value, data) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + return data.other() +}; + +return {number: number, plural: plural, select: select}; +}()); +/* jshint ignore:end */ +Globalize._validateParameterTypeMessageVariables = validateParameterTypeMessageVariables; + +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( /* path */ ) { + return Globalize[ + runtimeKey( "messageFormatter", this._locale, [].slice.call( arguments, 0 ) ) + ]; +}; + +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, [].slice.call( arguments, 1 ) ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/number.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/number.js new file mode 100644 index 0000000..8ff668b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/number.js @@ -0,0 +1,682 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createError = Globalize._createError, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterType = Globalize._validateParameterType, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +var numberFormatterFn = function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +var numberParserFn = function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberFormat = numberFormat; +Globalize._numberFormatterFn = numberFormatterFn; +Globalize._numberParse = numberParse; +Globalize._numberParserFn = numberParserFn; +Globalize._numberRound = numberRound; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/plural.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/plural.js new file mode 100644 index 0000000..146142a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/plural.js @@ -0,0 +1,86 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType; + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var pluralGeneratorFn = function( plural ) { + return function pluralGenerator( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return plural( value ); + }; +}; + + + + +Globalize._pluralGeneratorFn = pluralGeneratorFn; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; + +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "pluralGenerator", this._locale, [ options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/relative-time.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/relative-time.js new file mode 100644 index 0000000..41e6ec5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/relative-time.js @@ -0,0 +1,116 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, properties ) + * + * @value [Number] The number to format + * + * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter + * + * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator + * + * @properties [Object] containing relative time plural message. + * + * Format relative time. + */ +var relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) { + + var relativeTime, + message = properties[ "relative-type-" + value ]; + + if ( message ) { + return message; + } + + relativeTime = value <= 0 ? properties[ "relativeTime-type-past" ] + : properties[ "relativeTime-type-future" ]; + + value = Math.abs( value ); + + message = relativeTime[ "relativeTimePattern-count-" + pluralGenerator( value ) ]; + return formatMessage( message, [ numberFormatter( value ) ] ); +}; + + + + +var relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + return function relativeTimeFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return relativeTimeFormat( value, numberFormatter, pluralGenerator, properties ); + }; + +}; + + + + +Globalize._relativeTimeFormatterFn = relativeTimeFormatterFn; + +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "relativeTimeFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/unit.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/unit.js new file mode 100644 index 0000000..5b5f3e9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize-runtime/unit.js @@ -0,0 +1,127 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, unitProperies ) + * + * @value [Number] + * + * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter. + * + * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator. + * + * @unitProperies [Object]: localized unit data from cldr. + * + * Format units such as seconds, minutes, days, weeks, etc. + * + * OBS: + * + * Unit Sequences are not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences + * + * Duration Unit (for composed time unit durations) is not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit + */ +var unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) { + var compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties, + formattedValue, divisor, divisorProperties, message, pluralValue; + + unitProperties = unitProperties.unitProperties; + formattedValue = numberFormatter( value ); + pluralValue = pluralGenerator( value ); + + // computed compound unit, eg. "megabyte-per-second". + if ( unitProperties instanceof Array ) { + dividendProperties = unitProperties[ 0 ]; + divisorProperties = unitProperties[ 1 ]; + + dividend = formatMessage( dividendProperties[ pluralValue ], [ value ] ); + divisor = formatMessage( divisorProperties.one, [ "" ] ).trim(); + + return formatMessage( compoundUnitPattern, [ dividend, divisor ] ); + } + + message = unitProperties[ pluralValue ]; + + return formatMessage( message, [ formattedValue ] ); +}; + + + + +var unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) { + return function unitFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return unitFormat( value, numberFormatter, pluralGenerator, unitProperties ); + }; + +}; + + + + +Globalize._unitFormatterFn = unitFormatterFn; + +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + return this.unitFormatter( unit, options )( value ); +}; + +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "unitFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize.js new file mode 100644 index 0000000..1426c4f --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize.js @@ -0,0 +1,421 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ) ); + } else { + + // Global + root.Globalize = factory( root.Cldr ); + } +}( this, function( Cldr ) { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +var stringHash = function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + + + + +var runtimeKey = function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + + + + +var functionName = function( fn ) { + if ( fn.name !== undefined ) { + return fn.name; + } + + // fn.name is not supported by IE. + var matches = /^function\s+([\w\$]+)\s*\(/.exec( fn.toString() ); + + if ( matches && matches.length > 0 ) { + return matches[ 1 ]; + } +}; + + + + +var runtimeBind = function( args, cldr, fn, runtimeArgs ) { + + var argsStr = JSON.stringify( args ), + fnName = functionName( fn ), + locale = cldr.locale; + + // If name of the function is not available, this is most likely due uglification, + // which most likely means we are in production, and runtimeBind here is not necessary. + if ( !fnName ) { + return fn; + } + + fn.runtimeKey = runtimeKey( fnName, locale, null, argsStr ); + + fn.generatorString = function() { + return "Globalize(\"" + locale + "\")." + fnName + "(" + argsStr.slice( 1, -1 ) + ")"; + }; + + fn.runtimeArgs = runtimeArgs; + + return fn; +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var alwaysArray = function( stringOrArray ) { + return Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : []; +}; + + + + +var validateCldr = function( path, value, options ) { + var skipBoolean; + options = options || {}; + + skipBoolean = alwaysArray( options.skip ).some(function( pathRe ) { + return pathRe.test( path ); + }); + + validate( "E_MISSING_CLDR", "Missing required CLDR content `{path}`.", value || skipBoolean, { + path: path + }); +}; + + + + +var validateDefaultLocale = function( value ) { + validate( "E_DEFAULT_LOCALE_NOT_DEFINED", "Default locale has not been defined.", + value !== undefined, {} ); +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +/** + * range( value, name, minimum, maximum ) + * + * @value [Number]. + * + * @name [String] name of variable. + * + * @minimum [Number]. The lowest valid value, inclusive. + * + * @maximum [Number]. The greatest valid value, inclusive. + */ +var validateParameterRange = function( value, name, minimum, maximum ) { + validate( + "E_PAR_OUT_OF_RANGE", + "Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].", + value === undefined || value >= minimum && value <= maximum, + { + maximum: maximum, + minimum: minimum, + name: name, + value: value + } + ); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeLocale = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" || value instanceof Cldr, + "String or Cldr instance" + ); +}; + + + + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + + + + +var validateParameterTypePlainObject = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ), + "Plain Object" + ); +}; + + + + +var alwaysCldr = function( localeOrCldr ) { + return localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function validateLikelySubtags( cldr ) { + cldr.once( "get", validateCldr ); + cldr.get( "supplemental/likelySubtags" ); +} + +/** + * [new] Globalize( locale|cldr ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Create a Globalize instance. + */ +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeLocale( locale, "locale" ); + + this.cldr = alwaysCldr( locale ); + + validateLikelySubtags( this.cldr ); +} + +/** + * Globalize.load( json, ... ) + * + * @json [JSON] + * + * Load resolved or unresolved cldr data. + * Somewhat equivalent to previous Globalize.addCultureInfo(...). + */ +Globalize.load = function() { + + // validations are delegated to Cldr.load(). + Cldr.load.apply( Cldr, arguments ); +}; + +/** + * Globalize.locale( [locale|cldr] ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Set default Cldr instance if locale or cldr argument is passed. + * + * Return the default Cldr instance. + */ +Globalize.locale = function( locale ) { + validateParameterTypeLocale( locale, "locale" ); + + if ( arguments.length ) { + this.cldr = alwaysCldr( locale ); + validateLikelySubtags( this.cldr ); + } + return this.cldr; +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._alwaysArray = alwaysArray; +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._isPlainObject = isPlainObject; +Globalize._objectExtend = objectExtend; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeBind = runtimeBind; +Globalize._stringPad = stringPad; +Globalize._validate = validate; +Globalize._validateCldr = validateCldr; +Globalize._validateDefaultLocale = validateDefaultLocale; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterRange = validateParameterRange; +Globalize._validateParameterTypePlainObject = validateParameterTypePlainObject; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/currency.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/currency.js new file mode 100644 index 0000000..8b68100 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/currency.js @@ -0,0 +1,439 @@ +/*! + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + formatMessage = Globalize._formatMessage, + numberNumberingSystem = Globalize._numberNumberingSystem, + numberPattern = Globalize._numberPattern, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var validateParameterTypeCurrency = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" && ( /^[A-Za-z]{3}$/ ).test( value ), + "3-letter currency code string as defined by ISO 4217" + ); +}; + + + + +/** + * supplementalOverride( currency, pattern, cldr ) + * + * Return pattern with fraction digits overriden by supplemental currency data. + */ +var currencySupplementalOverride = function( currency, pattern, cldr ) { + var digits, + fraction = "", + fractionData = cldr.supplemental([ "currencyData/fractions", currency ]) || + cldr.supplemental( "currencyData/fractions/DEFAULT" ); + + digits = +fractionData._digits; + + if ( digits ) { + fraction = "." + stringPad( "0", digits ).slice( 0, -1 ) + fractionData._rounding; + } + + return pattern.replace( /\.(#+|0*[0-9]|0+[0-9]?)/g, fraction ); +}; + + + + +var objectFilter = function( object, testRe ) { + var key, + copy = {}; + + for ( key in object ) { + if ( testRe.test( key ) ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +var currencyUnitPatterns = function( cldr ) { + return objectFilter( cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ) + ]), /^unitPattern/ ); +}; + + + + +/** + * codeProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyCodeProperties = function( currency, cldr ) { + var pattern = numberPattern( "decimal", cldr ); + + // The number of decimal places and the rounding for each currency is not locale-specific. Those + // values overridden by Supplemental Currency Data. + pattern = currencySupplementalOverride( currency, pattern, cldr ); + + return { + currency: currency, + pattern: pattern, + unitPatterns: currencyUnitPatterns( cldr ) + }; +}; + + + + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +var currencyNameFormat = function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + + + + +var currencyFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + var fn; + + // Return formatter when style is "code" or "name". + if ( pluralGenerator && properties ) { + fn = function currencyFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( + numberFormatter( value ), + pluralGenerator( value ), + properties + ); + }; + + // Return formatter when style is "symbol" or "accounting". + } else { + fn = function currencyFormatter( value ) { + return numberFormatter( value ); + }; + } + + return fn; +}; + + + + +/** + * nameProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyNameProperties = function( currency, cldr ) { + var properties = currencyCodeProperties( currency, cldr ); + + properties.displayNames = objectFilter( cldr.main([ + "numbers/currencies", + currency + ]), /^displayName/ ); + + return properties; +}; + + + + +/** + * Unicode regular expression for: everything except math symbols, currency signs, dingbats, and + * box-drawing characters. + * + * Generated by: + * + * regenerate() + * .addRange( 0x0, 0x10FFFF ) + * .remove( require( "unicode-7.0.0/categories/S/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpNotS = /[\0-#%-\*,-;\?-\]_a-\{\}\x7F-\xA1\xA7\xAA\xAB\xAD\xB2\xB3\xB5-\xB7\xB9-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0383\u0386-\u03F5\u03F7-\u0481\u0483-\u058C\u0590-\u0605\u0609\u060A\u060C\u060D\u0610-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF-\u07F5\u07F7-\u09F1\u09F4-\u09F9\u09FC-\u0AF0\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C7E\u0C80-\u0D78\u0D7A-\u0E3E\u0E40-\u0F00\u0F04-\u0F12\u0F14\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39-\u0FBD\u0FC6\u0FCD\u0FD0-\u0FD4\u0FD9-\u109D\u10A0-\u138F\u139A-\u17DA\u17DC-\u193F\u1941-\u19DD\u1A00-\u1B60\u1B6B-\u1B73\u1B7D-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF-\u2043\u2045-\u2051\u2053-\u2079\u207D-\u2089\u208D-\u209F\u20BE-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u218F\u2308-\u230B\u2329\u232A\u23FB-\u23FF\u2427-\u243F\u244B-\u249B\u24EA-\u24FF\u2768-\u2793\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2CE4\u2CEB-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u3003\u3005-\u3011\u3014-\u301F\u3021-\u3035\u3038-\u303D\u3040-\u309A\u309D-\u318F\u3192-\u3195\u31A0-\u31BF\u31E4-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u32FF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uAA76\uAA7A-\uAB5A\uAB5C-\uD7FF\uDC00-\uFB28\uFB2A-\uFBB1\uFBC2-\uFDFB\uFDFE-\uFE61\uFE63\uFE67\uFE68\uFE6A-\uFF03\uFF05-\uFF0A\uFF0C-\uFF1B\uFF1F-\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5F-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8D-\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDFFF]|[\uD801\uD803-\uD819\uD81B-\uD82E\uD830-\uD833\uD836-\uD83A\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD802[\uDC00-\uDC76\uDC79-\uDEC7\uDEC9-\uDFFF]|\uD81A[\uDC00-\uDF3B\uDF40-\uDF44\uDF46-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDDE-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD83B[\uDC00-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0F\uDD2F\uDD6C-\uDD6F\uDD9B-\uDDE5\uDE03-\uDE0F\uDE3B-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF\uDF2D-\uDF2F\uDF7E\uDF7F\uDFCF-\uDFD3\uDFF8-\uDFFF]|\uD83D[\uDCFF\uDD4B-\uDD4F\uDD7A\uDDA4\uDE43\uDE44\uDED0-\uDEDF\uDEED-\uDEEF\uDEF4-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDFFF]|[\uD800-\uDBFF]/; + + + + +/** + * symbolProperties( currency, cldr ) + * + * Return pattern replacing `¤` with the appropriate currency symbol literal. + */ +var currencySymbolProperties = function( currency, cldr, options ) { + var currencySpacing, pattern, + regexp = { + "[:digit:]": /\d/, + "[:^S:]": regexpNotS + }, + symbol = cldr.main([ + "numbers/currencies", + currency, + "symbol" + ]); + + currencySpacing = [ "beforeCurrency", "afterCurrency" ].map(function( position ) { + return cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + "currencySpacing", + position + ]); + }); + + pattern = cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + options.style === "accounting" ? "accounting" : "standard" + ]); + + pattern = + + // The number of decimal places and the rounding for each currency is not locale-specific. + // Those values are overridden by Supplemental Currency Data. + currencySupplementalOverride( currency, pattern, cldr ) + + // Replace "¤" (\u00A4) with the appropriate symbol literal. + .split( ";" ).map(function( pattern ) { + + return pattern.split( "\u00A4" ).map(function( part, i ) { + var currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ], + surroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ], + insertBetween = ""; + + // For currencyMatch and surroundingMatch definitions, read [1]. + // When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency. + // 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies + currencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) ); + surroundingMatch = surroundingMatch.test( + part.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, "0" ) + ); + + if ( currencyMatch && part && surroundingMatch ) { + insertBetween = currencySpacing[ i ].insertBetween; + } + + return ( i ? insertBetween : "" ) + part + ( i ? "" : insertBetween ); + }).join( "'" + symbol + "'" ); + }).join( ";" ); + + return { + pattern: pattern + }; +}; + + + + +/** + * objectOmit( object, keys ) + * + * Return a copy of the object, filtered to omit the blacklisted key or array of keys. + */ +var objectOmit = function( object, keys ) { + var key, + copy = {}; + + keys = alwaysArray( keys ); + + for ( key in object ) { + if ( keys.indexOf( key ) === -1 ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ /supplemental\/currencyData\/fractions\/[A-Za-z]{3}$/ ] + }); +} + +/** + * .currencyFormatter( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: + * - style: [String] "symbol" (default), "accounting", "code" or "name". + * - see also number/format options. + * + * Return a function that formats a currency according to the given options and default/instance + * locale. + */ +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn, style; + + validateParameterPresence( currency, "currency" ); + validateParameterTypeCurrency( currency, "currency" ); + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || {}; + + args = [ currency, options ]; + style = options.style || "symbol"; + + validateDefaultLocale( cldr ); + + // Get properties given style ("symbol" default, "code" or "name"). + cldr.on( "get", validateRequiredCldr ); + properties = ({ + accounting: currencySymbolProperties, + code: currencyCodeProperties, + name: currencyNameProperties, + symbol: currencySymbolProperties + }[ style ] )( currency, cldr, options ); + cldr.off( "get", validateRequiredCldr ); + + // options = options minus style, plus raw pattern. + options = objectOmit( options, "style" ); + options.raw = properties.pattern; + + // Return formatter when style is "symbol" or "accounting". + if ( style === "symbol" || style === "accounting" ) { + numberFormatter = this.numberFormatter( options ); + + returnFn = currencyFormatterFn( numberFormatter ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter ] ); + + // Return formatter when style is "code" or "name". + } else { + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = currencyFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + } + + return returnFn; +}; + +/** + * .currencyParser( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Return the currency parser according to the given options and the default/instance locale. + */ +Globalize.currencyParser = +Globalize.prototype.currencyParser = function( /* currency, options */ ) { + + // TODO implement parser. + +}; + +/** + * .formatCurrency( value, currency [, options] ) + * + * @value [Number] number to be formatted. + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Format a currency according to the given options and the default/instance locale. + */ +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +/** + * .parseCurrency( value, currency [, options] ) + * + * @value [String] + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: See currencyFormatter. + * + * Return the parsed currency or NaN when value is invalid. + */ +Globalize.parseCurrency = +Globalize.prototype.parseCurrency = function( /* value, currency, options */ ) { +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/date.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/date.js new file mode 100644 index 0000000..4fa68ce --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/date.js @@ -0,0 +1,1923 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + formatMessage = Globalize._formatMessage, + numberSymbol = Globalize._numberSymbol, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var validateParameterTypeDate = function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + + + + +var createErrorInvalidParameterValue = function( name, value ) { + return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", { + name: name, + value: value + }); +}; + + + + +/** + * expandPattern( options, cldr ) + * + * @options [Object] if String, it's considered a skeleton. Object accepts: + * - skeleton: [String] lookup availableFormat; + * - date: [String] ( "full" | "long" | "medium" | "short" ); + * - time: [String] ( "full" | "long" | "medium" | "short" ); + * - datetime: [String] ( "full" | "long" | "medium" | "short" ); + * - raw: [String] For more info see datetime/format.js. + * + * @cldr [Cldr instance]. + * + * Return the corresponding pattern. + * Eg for "en": + * - "GyMMMd" returns "MMM d, y G"; + * - { skeleton: "GyMMMd" } returns "MMM d, y G"; + * - { date: "full" } returns "EEEE, MMMM d, y"; + * - { time: "full" } returns "h:mm:ss a zzzz"; + * - { datetime: "full" } returns "EEEE, MMMM d, y 'at' h:mm:ss a zzzz"; + * - { raw: "dd/mm" } returns "dd/mm"; + */ + +var dateExpandPattern = function( options, cldr ) { + var dateSkeleton, result, skeleton, timeSkeleton, type; + + function combineDateTime( type, datePattern, timePattern ) { + return formatMessage( + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats", + type + ]), + [ timePattern, datePattern ] + ); + } + + switch ( true ) { + case "skeleton" in options: + skeleton = options.skeleton; + result = cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + skeleton + ]); + if ( !result ) { + timeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ]; + dateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ]; + if ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) { + type = "full"; + } else if ( /MMMM/g.test( dateSkeleton ) ) { + type = "long"; + } else if ( /MMM/g.test( dateSkeleton ) || /LLL/g.test( dateSkeleton ) ) { + type = "medium"; + } else { + type = "short"; + } + result = combineDateTime( type, + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + dateSkeleton + ]), + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + timeSkeleton + ]) + ); + } + break; + + case "date" in options: + case "time" in options: + result = cldr.main([ + "dates/calendars/gregorian", + "date" in options ? "dateFormats" : "timeFormats", + ( options.date || options.time ) + ]); + break; + + case "datetime" in options: + result = combineDateTime( options.datetime, + cldr.main([ "dates/calendars/gregorian/dateFormats", options.datetime ]), + cldr.main([ "dates/calendars/gregorian/timeFormats", options.datetime ]) + ); + break; + + case "raw" in options: + result = options.raw; + break; + + default: + throw createErrorInvalidParameterValue({ + name: "options", + value: options + }); + } + + return result; +}; + + + + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +var dateDayOfWeek = function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + + + + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +var dateDistanceInDays = function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + + + + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +var dateStartOf = function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + + + + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +var dateDayOfYear = function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + + + + +/** + * millisecondsInDay + */ +var dateMillisecondsInDay = function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + + + + +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + + + + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + + + + +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +var dateFormat = function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + + + + +var dateFormatterFn = function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return dateFormat( value, numberFormatters, properties ); + }; + +}; + + + + +/** + * firstDayOfWeek + */ +var dateFirstDayOfWeek = function( cldr ) { + return dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() ); +}; + + + + +/** + * properties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + * + * @cldr [Cldr instance]. + * + * Return the properties given the pattern and cldr. + * + * TODO Support other calendar types. + */ +var dateFormatProperties = function( pattern, cldr ) { + var properties = { + numberFormatters: {}, + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function setNumberFormatterPattern( pad ) { + properties.numberFormatters[ pad ] = stringPad( "", pad ); + } + + pattern.replace( datePatternRe, function( current ) { + var formatNumber, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + properties.preferredTime = chr = cldr.supplemental.timeData.preferred(); + } + + // ZZZZ: same as "OOOO". + if ( chr === "Z" && length === 4 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + properties.eras = cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + + // Plain year. + formatNumber = true; + break; + + case "Y": + + // Year in "Week of Year" + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + if ( !properties.quarters ) { + properties.quarters = {}; + } + if ( !properties.quarters[ chr ] ) { + properties.quarters[ chr ] = {}; + } + properties.quarters[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Month + case "M": + case "L": + if ( length > 2 ) { + if ( !properties.months ) { + properties.months = {}; + } + if ( !properties.months[ chr ] ) { + properties.months[ chr ] = {}; + } + properties.months[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Week - Week of Year (w) or Week of Month (W). + case "w": + case "W": + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + // Day + case "d": + case "D": + case "F": + formatNumber = true; + break; + + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + properties.firstDay = dateFirstDayOfWeek( cldr ); + formatNumber = true; + break; + } + + /* falls through */ + case "E": + if ( !properties.days ) { + properties.days = {}; + } + if ( !properties.days[ chr ] ) { + properties.days[ chr ] = {}; + } + if ( length === 6 ) { + + // If short day names are not explicitly specified, abbreviated day names are + // used instead. + // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + // http://unicode.org/cldr/trac/ticket/6790 + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "abbreviated" + ]); + } else { + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + properties.dayPeriods = cldr.main( + "dates/calendars/gregorian/dayPeriods/format/wide" + ); + break; + + // Hour + case "h": // 1-12 + case "H": // 0-23 + case "K": // 0-11 + case "k": // 1-24 + + // Minute + case "m": + + // Second + case "s": + case "S": + case "A": + formatNumber = true; + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + properties.gmtFormat = cldr.main( "dates/timeZoneNames/gmtFormat" ); + properties.gmtZeroFormat = cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" ); + + /* falls through */ + case "Z": + case "X": + case "x": + setNumberFormatterPattern( 1 ); + setNumberFormatterPattern( 2 ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + + if ( formatNumber ) { + setNumberFormatterPattern( length ); + } + }); + + return properties; +}; + + + + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +var dateIsLeapYear = function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + + + + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +var dateLastDayOfMonth = function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + + + + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +var dateSetDate = function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + + + + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +var dateSetMonth = function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + + + + +var outOfRange = function( value, low, high ) { + return value < low || value > high; +}; + + + + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +var dateParse = function( value, tokens, properties ) { + var amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + + // Setting the month later so that we have the correct year and can determine + // the correct last day of February in case of leap year. + month = value; + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( month !== undefined ) { + dateSetMonth( date, month - 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + + + + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + + + + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +var dateTokenizer = function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + + + + +var dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + + + + +/** + * parseProperties( cldr ) + * + * @cldr [Cldr instance]. + * + * Return parser properties. + */ +var dateParseProperties = function( cldr ) { + return { + preferredTimeData: cldr.supplemental.timeData.preferred() + }; +}; + + + + +/** + * tokenizerProperties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * + * @cldr [Cldr instance]. + * + * Return Object with data that will be used by tokenizer. + */ +var dateTokenizerProperties = function( pattern, cldr ) { + var properties = { + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function populateProperties( path, value ) { + + // The `dates` and `calendars` trim's purpose is to reduce properties' key size only. + properties[ path.replace( /^.*\/dates\//, "" ).replace( /calendars\//, "" ) ] = value; + } + + cldr.on( "get", populateProperties ); + + pattern.match( datePatternRe ).forEach(function( current ) { + var chr, length; + + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" && length < 5 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Day + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + + // lookup for length >=3. + if ( length <= 2 ) { + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + cldr.main([ + "dates/calendars/gregorian/dayPeriods/format/wide" + ]); + break; + + // Zone + case "z": + case "O": + cldr.main( "dates/timeZoneNames/gmtFormat" ); + cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + cldr.main( "dates/timeZoneNames/hourFormat" ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + }); + + cldr.off( "get", populateProperties ); + + return properties; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ + /dates\/calendars\/gregorian\/dateTimeFormats\/availableFormats/, + /dates\/calendars\/gregorian\/days\/.*\/short/, + /supplemental\/timeData\/(?!001)/, + /supplemental\/weekData\/(?!001)/ + ] + }); +} + +/** + * .dateFormatter( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a date formatter function (of the form below) according to the given options and the + * default/instance locale. + * + * fn( value ) + * + * @value [Date] + * + * Return a function that formats a date according to the given `format` and the default/instance + * locale. + */ +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + var args, cldr, numberFormatters, pad, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + properties = dateFormatProperties( pattern, cldr ); + cldr.off( "get", validateRequiredCldr ); + + // Create needed number formatters. + numberFormatters = properties.numberFormatters; + delete properties.numberFormatters; + for ( pad in numberFormatters ) { + numberFormatters[ pad ] = this.numberFormatter({ + raw: numberFormatters[ pad ] + }); + } + + returnFn = dateFormatterFn( numberFormatters, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatters, properties ] ); + + return returnFn; +}; + +/** + * .dateParser( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a function that parses a string date according to the given `formats` and the + * default/instance locale. + */ +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + var args, cldr, numberParser, parseProperties, pattern, tokenizerProperties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + tokenizerProperties = dateTokenizerProperties( pattern, cldr ); + parseProperties = dateParseProperties( cldr ); + cldr.off( "get", validateRequiredCldr ); + + numberParser = this.numberParser({ raw: "0" }); + + returnFn = dateParserFn( numberParser, parseProperties, tokenizerProperties ); + + runtimeBind( args, cldr, returnFn, [ numberParser, parseProperties, tokenizerProperties ] ); + + return returnFn; +}; + +/** + * .formatDate( value, options ) + * + * @value [Date] + * + * @options [Object] see date/expand_pattern for more info. + * + * Formats a date or number according to the given options string and the default/instance locale. + */ +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +/** + * .parseDate( value, options ) + * + * @value [String] + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a Date instance or null. + */ +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/message.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/message.js new file mode 100644 index 0000000..5de252b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/message.js @@ -0,0 +1,2076 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + createError = Globalize._createError, + isPlainObject = Globalize._isPlainObject, + runtimeBind = Globalize._runtimeBind, + validateDefaultLocale = Globalize._validateDefaultLocale, + validate = Globalize._validate, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; +var MessageFormat; +/* jshint ignore:start */ +MessageFormat = (function() { +MessageFormat._parse = (function() { + + /* + * Generated by PEG.js 0.8.0. + * + * http://pegjs.majda.cz/ + */ + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function SyntaxError(message, expected, found, offset, line, column) { + this.message = message; + this.expected = expected; + this.found = found; + this.offset = offset; + this.line = line; + this.column = column; + + this.name = "SyntaxError"; + } + + peg$subclass(SyntaxError, Error); + + function parse(input) { + var options = arguments.length > 1 ? arguments[1] : {}, + + peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = [], + peg$c1 = function(st) { + return { type: 'messageFormatPattern', statements: st }; + }, + peg$c2 = peg$FAILED, + peg$c3 = "{", + peg$c4 = { type: "literal", value: "{", description: "\"{\"" }, + peg$c5 = null, + peg$c6 = ",", + peg$c7 = { type: "literal", value: ",", description: "\",\"" }, + peg$c8 = "}", + peg$c9 = { type: "literal", value: "}", description: "\"}\"" }, + peg$c10 = function(argIdx, efmt) { + var res = { + type: "messageFormatElement", + argumentIndex: argIdx + }; + if (efmt && efmt.length) { + res.elementFormat = efmt[1]; + } else { + res.output = true; + } + return res; + }, + peg$c11 = "plural", + peg$c12 = { type: "literal", value: "plural", description: "\"plural\"" }, + peg$c13 = function(t, s) { + return { type: "elementFormat", key: t, val: s }; + }, + peg$c14 = "selectordinal", + peg$c15 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, + peg$c16 = "select", + peg$c17 = { type: "literal", value: "select", description: "\"select\"" }, + peg$c18 = function(t, p) { + return { type: "elementFormat", key: t, val: p }; + }, + peg$c19 = function(op, pf) { + return { type: "pluralFormatPattern", pluralForms: pf, offset: op || 0 }; + }, + peg$c20 = "offset", + peg$c21 = { type: "literal", value: "offset", description: "\"offset\"" }, + peg$c22 = ":", + peg$c23 = { type: "literal", value: ":", description: "\":\"" }, + peg$c24 = function(d) { return d; }, + peg$c25 = function(k, mfp) { + return { key: k, val: mfp }; + }, + peg$c26 = function(i) { return i; }, + peg$c27 = "=", + peg$c28 = { type: "literal", value: "=", description: "\"=\"" }, + peg$c29 = function(pf) { return { type: "selectFormatPattern", pluralForms: pf }; }, + peg$c30 = function(p) { return p; }, + peg$c31 = "#", + peg$c32 = { type: "literal", value: "#", description: "\"#\"" }, + peg$c33 = function() { return {type: 'octothorpe'}; }, + peg$c34 = function(s) { return { type: "string", val: s.join('') }; }, + peg$c35 = { type: "other", description: "identifier" }, + peg$c36 = /^[0-9a-zA-Z$_]/, + peg$c37 = { type: "class", value: "[0-9a-zA-Z$_]", description: "[0-9a-zA-Z$_]" }, + peg$c38 = /^[^ \t\n\r,.+={}]/, + peg$c39 = { type: "class", value: "[^ \\t\\n\\r,.+={}]", description: "[^ \\t\\n\\r,.+={}]" }, + peg$c40 = function(s) { return s; }, + peg$c41 = function(chars) { return chars.join(''); }, + peg$c42 = /^[^{}#\\\0-\x1F \t\n\r]/, + peg$c43 = { type: "class", value: "[^{}#\\\\\\0-\\x1F \\t\\n\\r]", description: "[^{}#\\\\\\0-\\x1F \\t\\n\\r]" }, + peg$c44 = function(x) { return x; }, + peg$c45 = "\\\\", + peg$c46 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" }, + peg$c47 = function() { return "\\"; }, + peg$c48 = "\\#", + peg$c49 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, + peg$c50 = function() { return "#"; }, + peg$c51 = "\\{", + peg$c52 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, + peg$c53 = function() { return "\u007B"; }, + peg$c54 = "\\}", + peg$c55 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, + peg$c56 = function() { return "\u007D"; }, + peg$c57 = "\\u", + peg$c58 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, + peg$c59 = function(h1, h2, h3, h4) { + return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); + }, + peg$c60 = /^[0-9]/, + peg$c61 = { type: "class", value: "[0-9]", description: "[0-9]" }, + peg$c62 = function(ds) { + //the number might start with 0 but must not be interpreted as an octal number + //Hence, the base is passed to parseInt explicitely + return parseInt((ds.join('')), 10); + }, + peg$c63 = /^[0-9a-fA-F]/, + peg$c64 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" }, + peg$c65 = { type: "other", description: "whitespace" }, + peg$c66 = function(w) { return w.join(''); }, + peg$c67 = /^[ \t\n\r]/, + peg$c68 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, + + peg$currPos = 0, + peg$reportedPos = 0, + peg$cachedPos = 0, + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }, + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$reportedPos, peg$currPos); + } + + function offset() { + return peg$reportedPos; + } + + function line() { + return peg$computePosDetails(peg$reportedPos).line; + } + + function column() { + return peg$computePosDetails(peg$reportedPos).column; + } + + function expected(description) { + throw peg$buildException( + null, + [{ type: "other", description: description }], + peg$reportedPos + ); + } + + function error(message) { + throw peg$buildException(message, null, peg$reportedPos); + } + + function peg$computePosDetails(pos) { + function advance(details, startPos, endPos) { + var p, ch; + + for (p = startPos; p < endPos; p++) { + ch = input.charAt(p); + if (ch === "\n") { + if (!details.seenCR) { details.line++; } + details.column = 1; + details.seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + details.line++; + details.column = 1; + details.seenCR = true; + } else { + details.column++; + details.seenCR = false; + } + } + } + + if (peg$cachedPos !== pos) { + if (peg$cachedPos > pos) { + peg$cachedPos = 0; + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }; + } + advance(peg$cachedPosDetails, peg$cachedPos, pos); + peg$cachedPos = pos; + } + + return peg$cachedPosDetails; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildException(message, expected, pos) { + function cleanupExpected(expected) { + var i = 1; + + expected.sort(function(a, b) { + if (a.description < b.description) { + return -1; + } else if (a.description > b.description) { + return 1; + } else { + return 0; + } + }); + + while (i < expected.length) { + if (expected[i - 1] === expected[i]) { + expected.splice(i, 1); + } else { + i++; + } + } + } + + function buildMessage(expected, found) { + function stringEscape(s) { + function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } + + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\x08/g, '\\b') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\f/g, '\\f') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) + .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) + .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); + } + + var expectedDescs = new Array(expected.length), + expectedDesc, foundDesc, i; + + for (i = 0; i < expected.length; i++) { + expectedDescs[i] = expected[i].description; + } + + expectedDesc = expected.length > 1 + ? expectedDescs.slice(0, -1).join(", ") + + " or " + + expectedDescs[expected.length - 1] + : expectedDescs[0]; + + foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; + + return "Expected " + expectedDesc + " but " + foundDesc + " found."; + } + + var posDetails = peg$computePosDetails(pos), + found = pos < input.length ? input.charAt(pos) : null; + + if (expected !== null) { + cleanupExpected(expected); + } + + return new SyntaxError( + message !== null ? message : buildMessage(expected, found), + expected, + found, + pos, + posDetails.line, + posDetails.column + ); + } + + function peg$parsestart() { + var s0; + + s0 = peg$parsemessageFormatPattern(); + + return s0; + } + + function peg$parsemessageFormatPattern() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsemessageFormatElement(); + if (s2 === peg$FAILED) { + s2 = peg$parsestring(); + if (s2 === peg$FAILED) { + s2 = peg$parseoctothorpe(); + } + } + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsemessageFormatElement(); + if (s2 === peg$FAILED) { + s2 = peg$parsestring(); + if (s2 === peg$FAILED) { + s2 = peg$parseoctothorpe(); + } + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c1(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsemessageFormatElement() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c3; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse_(); + if (s2 !== peg$FAILED) { + s3 = peg$parseid(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s5 = peg$c6; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseelementFormat(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$c2; + } + } else { + peg$currPos = s4; + s4 = peg$c2; + } + if (s4 === peg$FAILED) { + s4 = peg$c5; + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s6 = peg$c8; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s6 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c10(s3, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseelementFormat() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c11) { + s2 = peg$c11; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsepluralFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 13) === peg$c14) { + s2 = peg$c14; + peg$currPos += 13; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c15); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsepluralFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c16) { + s2 = peg$c16; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c17); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parseselectFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parseid(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseargStylePattern(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseargStylePattern(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c18(s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + } + + return s0; + } + + function peg$parsepluralFormatPattern() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseoffsetPattern(); + if (s1 === peg$FAILED) { + s1 = peg$c5; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsepluralForm(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsepluralForm(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c19(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseoffsetPattern() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c20) { + s2 = peg$c20; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c21); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c22; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsedigits(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c24(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parsepluralForm() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parsepluralKey(); + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c3; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsemessageFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s8 = peg$c8; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s8 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c25(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parsepluralKey() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 61) { + s1 = peg$c27; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsedigits(); + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c24(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + + return s0; + } + + function peg$parseselectFormatPattern() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parseselectForm(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseselectForm(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c29(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseselectForm() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parseid(); + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c3; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsemessageFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s8 = peg$c8; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s8 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c25(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseargStylePattern() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c6; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + s4 = peg$parseid(); + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c30(s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseoctothorpe() { + var s0, s1; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 35) { + s1 = peg$c31; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c33(); + } + s0 = s1; + + return s0; + } + + function peg$parsestring() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsechars(); + if (s2 === peg$FAILED) { + s2 = peg$parsewhitespace(); + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsechars(); + if (s2 === peg$FAILED) { + s2 = peg$parsewhitespace(); + } + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c34(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseid() { + var s0, s1, s2, s3, s4, s5, s6; + + peg$silentFails++; + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$currPos; + if (peg$c36.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c37); } + } + if (s4 !== peg$FAILED) { + s5 = []; + if (peg$c38.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c38.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + } else { + peg$currPos = s3; + s3 = peg$c2; + } + if (s3 !== peg$FAILED) { + s3 = input.substring(s2, peg$currPos); + } + s2 = s3; + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c40(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c35); } + } + + return s0; + } + + function peg$parsechars() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsechar(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsechar(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c41(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsechar() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (peg$c42.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c44(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c45) { + s1 = peg$c45; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c47(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c48) { + s1 = peg$c48; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c50(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c51) { + s1 = peg$c51; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c53(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c54) { + s1 = peg$c54; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c55); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c56(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c57) { + s1 = peg$c57; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsehexDigit(); + if (s2 !== peg$FAILED) { + s3 = peg$parsehexDigit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsehexDigit(); + if (s4 !== peg$FAILED) { + s5 = peg$parsehexDigit(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c59(s2, s3, s4, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + } + } + } + + return s0; + } + + function peg$parsedigits() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c60.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c60.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c62(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsehexDigit() { + var s0; + + if (peg$c63.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + + return s0; + } + + function peg$parse_() { + var s0, s1, s2; + + peg$silentFails++; + s0 = peg$currPos; + s1 = []; + s2 = peg$parsewhitespace(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsewhitespace(); + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c66(s1); + } + s0 = s1; + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + + return s0; + } + + function peg$parsewhitespace() { + var s0; + + if (peg$c67.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + + return s0; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail({ type: "end", description: "end of input" }); + } + + throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos); + } + } + + return { + SyntaxError: SyntaxError, + parse: parse + }; +}()).parse; + + +/** @file messageformat.js - ICU PluralFormat + SelectFormat for JavaScript + * @author Alex Sexton - @SlexAxton + * @version 0.3.0-1 + * @copyright 2012-2015 Alex Sexton, Eemeli Aro, and Contributors + * @license To use or fork, MIT. To contribute back, Dojo CLA */ + + +/** Utility function for quoting an Object's key value iff required + * @private */ +function propname(key, obj) { + if (/^[A-Z_$][0-9A-Z_$]*$/i.test(key)) { + return obj ? obj + '.' + key : key; + } else { + var jkey = JSON.stringify(key); + return obj ? obj + '[' + jkey + ']' : jkey; + } +}; + + +/** Create a new message formatter + * + * @class + * @global + * @param {string|string[]} [locale="en"] - The locale to use, with fallbacks + * @param {function} [pluralFunc] - Optional custom pluralization function + * @param {function[]} [formatters] - Optional custom formatting functions */ +function MessageFormat(locale, pluralFunc, formatters) { + this.lc = [locale]; + this.runtime.pluralFuncs = {}; + this.runtime.pluralFuncs[this.lc[0]] = pluralFunc; + this.runtime.fmt = {}; + if (formatters) for (var f in formatters) { + this.runtime.fmt[f] = formatters[f]; + } +} + + + + +/** Parse an input string to its AST + * + * Precompiled from `lib/messageformat-parser.pegjs` by + * {@link http://pegjs.org/ PEG.js}. Included in MessageFormat object + * to enable testing. + * + * @private */ + + + +/** Pluralization functions from + * {@link http://github.com/eemeli/make-plural.js make-plural} + * + * @memberof MessageFormat + * @type Object. */ +MessageFormat.plurals = {}; + + +/** Default number formatting functions in the style of ICU's + * {@link http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html simpleArg syntax} + * implemented using the + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl} + * object defined by ECMA-402. + * + * **Note**: Intl is not defined in default Node until 0.11.15 / 0.12.0, so + * earlier versions require a {@link https://www.npmjs.com/package/intl polyfill}. + * Therefore {@link MessageFormat.withIntlSupport} needs to be true for these + * functions to be available for inclusion in the output. + * + * @see MessageFormat#setIntlSupport + * + * @namespace + * @memberof MessageFormat + * @property {function} number - Represent a number as an integer, percent or currency value + * @property {function} date - Represent a date as a full/long/default/short string + * @property {function} time - Represent a time as a full/long/default/short string + * + * @example + * > var MessageFormat = require('messageformat'); + * > var mf = (new MessageFormat('en')).setIntlSupport(true); + * > mf.currency = 'EUR'; + * > var mfunc = mf.compile("The total is {V,number,currency}."); + * > mfunc({V:5.5}) + * "The total is €5.50." + * + * @example + * > var MessageFormat = require('messageformat'); + * > var mf = new MessageFormat('en', null, {number: MessageFormat.number}); + * > mf.currency = 'EUR'; + * > var mfunc = mf.compile("The total is {V,number,currency}."); + * > mfunc({V:5.5}) + * "The total is €5.50." */ +MessageFormat.formatters = {}; + +/** Enable or disable support for the default formatters, which require the + * `Intl` object. Note that this can't be autodetected, as the environment + * in which the formatted text is compiled into Javascript functions is not + * necessarily the same environment in which they will get executed. + * + * @see MessageFormat.formatters + * + * @memberof MessageFormat + * @param {boolean} [enable=true] + * @returns {Object} The MessageFormat instance, to allow for chaining + * @example + * > var Intl = require('intl'); + * > var MessageFormat = require('messageformat'); + * > var mf = (new MessageFormat('en')).setIntlSupport(true); + * > mf.currency = 'EUR'; + * > mf.compile("The total is {V,number,currency}.")({V:5.5}); + * "The total is €5.50." */ + + + +/** A set of utility functions that are called by the compiled Javascript + * functions, these are included locally in the output of {@link + * MessageFormat#compile compile()}. + * + * @namespace + * @memberof MessageFormat */ +MessageFormat.prototype.runtime = { + + /** Utility function for `#` in plural rules + * + * @param {number} value - The value to operate on + * @param {number} [offset=0] - An optional offset, set by the surrounding context */ + number: function(value, offset) { + if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + return value - (offset || 0); + }, + + /** Utility function for `{N, plural|selectordinal, ...}` + * + * @param {number} value - The key to use to find a pluralization rule + * @param {number} offset - An offset to apply to `value` + * @param {function} lcfunc - A locale function from `pluralFuncs` + * @param {Object.} data - The object from which results are looked up + * @param {?boolean} isOrdinal - If true, use ordinal rather than cardinal rules + * @returns {string} The result of the pluralization */ + plural: function(value, offset, lcfunc, data, isOrdinal) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + if (offset) value -= offset; + var key = lcfunc(value, isOrdinal); + if (key in data) return data[key](); + return data.other(); + }, + + /** Utility function for `{N, select, ...}` + * + * @param {number} value - The key to use to find a selection + * @param {Object.} data - The object from which results are looked up + * @returns {string} The result of the select statement */ + select: function(value, data) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + return data.other() + }, + + /** Pluralization functions included in compiled output + * @instance + * @type Object. */ + pluralFuncs: {}, + + /** Custom formatting functions called by `{var, fn[, args]*}` syntax + * + * For examples, see {@link MessageFormat.formatters} + * + * @instance + * @see MessageFormat.formatters + * @type Object. */ + fmt: {}, + + /** Custom stringifier to clean up browser inconsistencies + * @instance */ + toString: function () { + var _stringify = function(o, level) { + if (typeof o != 'object') { + var funcStr = o.toString().replace(/^(function )\w*/, '$1'); + var indent = /([ \t]*)\S.*$/.exec(funcStr); + return indent ? funcStr.replace(new RegExp('^' + indent[1], 'mg'), '') : funcStr; + } + var s = []; + for (var i in o) if (i != 'toString') { + if (level == 0) s.push('var ' + i + ' = ' + _stringify(o[i], level + 1) + ';\n'); + else s.push(propname(i) + ': ' + _stringify(o[i], level + 1)); + } + if (level == 0) return s.join(''); + if (s.length == 0) return '{}'; + var indent = ' '; while (--level) indent += ' '; + return '{\n' + s.join(',\n').replace(/^/gm, indent) + '\n}'; + }; + return _stringify(this, 0); + } +}; + + +/** Recursively map an AST to its resulting string + * + * @memberof MessageFormat + * + * @param ast - the Ast node for which the JS code should be generated + * + * @private */ +MessageFormat.prototype._precompile = function(ast, data) { + data = data || { keys: {}, offset: {} }; + var r = [], i, tmp, args = []; + + switch ( ast.type ) { + case 'messageFormatPattern': + for ( i = 0; i < ast.statements.length; ++i ) { + r.push(this._precompile( ast.statements[i], data )); + } + tmp = r.join(' + ') || '""'; + return data.pf_count ? tmp : 'function(d) { return ' + tmp + '; }'; + + case 'messageFormatElement': + data.pf_count = data.pf_count || 0; + if ( ast.output ) { + return propname(ast.argumentIndex, 'd'); + } + else { + data.keys[data.pf_count] = ast.argumentIndex; + return this._precompile( ast.elementFormat, data ); + } + return ''; + + case 'elementFormat': + args = [ propname(data.keys[data.pf_count], 'd') ]; + switch (ast.key) { + case 'select': + args.push(this._precompile(ast.val, data)); + return 'select(' + args.join(', ') + ')'; + case 'selectordinal': + args = args.concat([ 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data), 1 ]); + return 'plural(' + args.join(', ') + ')'; + case 'plural': + data.offset[data.pf_count || 0] = ast.val.offset || 0; + args = args.concat([ data.offset[data.pf_count] || 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data) ]); + return 'plural(' + args.join(', ') + ')'; + default: + if (this.withIntlSupport && !(ast.key in this.runtime.fmt) && (ast.key in MessageFormat.formatters)) { + tmp = MessageFormat.formatters[ast.key]; + this.runtime.fmt[ast.key] = (typeof tmp(this) == 'function') ? tmp(this) : tmp; + } + args.push(JSON.stringify(this.lc)); + if (ast.val && ast.val.length) args.push(JSON.stringify(ast.val.length == 1 ? ast.val[0] : ast.val)); + return 'fmt.' + ast.key + '(' + args.join(', ') + ')'; + } + + case 'pluralFormatPattern': + case 'selectFormatPattern': + data.pf_count = data.pf_count || 0; + if (ast.type == 'selectFormatPattern') data.offset[data.pf_count] = 0; + var needOther = true; + for (i = 0; i < ast.pluralForms.length; ++i) { + var key = ast.pluralForms[i].key; + if (key === 'other') needOther = false; + var data_copy = JSON.parse(JSON.stringify(data)); + data_copy.pf_count++; + r.push(propname(key) + ': function() { return ' + this._precompile(ast.pluralForms[i].val, data_copy) + ';}'); + } + if (needOther) throw new Error("No 'other' form found in " + ast.type + " " + data.pf_count); + return '{ ' + r.join(', ') + ' }'; + + case 'string': + return JSON.stringify(ast.val || ""); + + case 'octothorpe': + if (!data.pf_count) return '"#"'; + args = [ propname(data.keys[data.pf_count-1], 'd') ]; + if (data.offset[data.pf_count-1]) args.push(data.offset[data.pf_count-1]); + return 'number(' + args.join(', ') + ')'; + + default: + throw new Error( 'Bad AST type: ' + ast.type ); + } +}; + +/** Compile messages into an executable function with clean string + * representation. + * + * If `messages` is a single string including ICU MessageFormat declarations, + * `opt` is ignored and the returned function takes a single Object parameter + * `d` representing each of the input's defined variables. The returned + * function will be defined in a local scope that includes all the required + * runtime variables. + * + * If `messages` is a map of keys to strings, or a map of namespace keys to + * such key/string maps, the returned function will fill the specified global + * with javascript functions matching the structure of the input. In such use, + * the output of `compile()` is expected to be serialized using `.toString()`, + * and will include definitions of the runtime functions. If `opt.global` is + * null, calling the output function will return the object itself. + * + * Together, the input parameters should match the following patterns: + * ```js + * messages = "string" || { key0: "string0", key1: "string1", ... } || { + * ns0: { key0: "string0", key1: "string1", ... }, + * ns1: { key0: "string0", key1: "string1", ... }, + * ... + * } + * + * opt = null || { + * locale: null || { + * ns0: "lc0" || [ "lc0", ... ], + * ns1: "lc1" || [ "lc1", ... ], + * ... + * }, + * global: null || "module.exports" || "exports" || "i18n" || ... + * } + * ``` + * + * @memberof MessageFormat + * @param {string|Object} + * messages - The input message(s) to be compiled, in ICU MessageFormat + * @param {Object} [opt={}] - Options controlling output for non-simple intput + * @param {Object} [opt.locale] - The locales to use for the messages, with a + * structure matching that of `messages` + * @param {string} [opt.global=""] - The global variable that the output + * function should use, or a null string for none. "exports" and + * "module.exports" are recognised as special cases. + * @returns {function} The first match found for the given locale(s) + * + * @example + * > var MessageFormat = require('messageformat'), + * ... mf = new MessageFormat('en'), + * ... mfunc0 = mf.compile('A {TYPE} example.'); + * > mfunc0({TYPE:'simple'}) + * 'A simple example.' + * > mfunc0.toString() + * 'function (d) { return "A " + d.TYPE + " example."; }' + * + * @example + * > var msgSet = { a: 'A {TYPE} example.', + * ... b: 'This has {COUNT, plural, one{one member} other{# members}}.' }, + * ... mfuncSet = mf.compile(msgSet); + * > mfuncSet().a({TYPE:'more complex'}) + * 'A more complex example.' + * > mfuncSet().b({COUNT:2}) + * 'This has 2 members.' + * + * > console.log(mfuncSet.toString()) + * function anonymous() { + * var number = function (value, offset) { + * if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + * return value - (offset || 0); + * }; + * var plural = function (value, offset, lcfunc, data, isOrdinal) { + * if ({}.hasOwnProperty.call(data, value)) return data[value](); + * if (offset) value -= offset; + * var key = lcfunc(value, isOrdinal); + * if (key in data) return data[key](); + * return data.other(); + * }; + * var select = function (value, data) { + * if ({}.hasOwnProperty.call(data, value)) return data[value](); + * return data.other() + * }; + * var pluralFuncs = { + * en: function (n, ord) { + * var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, + * n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2); + * if (ord) return (n10 == 1 && n100 != 11) ? 'one' + * : (n10 == 2 && n100 != 12) ? 'two' + * : (n10 == 3 && n100 != 13) ? 'few' + * : 'other'; + * return (n == 1 && v0) ? 'one' : 'other'; + * } + * }; + * var fmt = {}; + * + * return { + * a: function(d) { return "A " + d.TYPE + " example."; }, + * b: function(d) { return "This has " + plural(d.COUNT, 0, pluralFuncs.en, { one: function() { return "one member";}, other: function() { return number(d.COUNT)+" members";} }) + "."; } + * } + * } + * + * @example + * > mf.runtime.pluralFuncs.fi = MessageFormat.plurals.fi; + * > var multiSet = { en: { a: 'A {TYPE} example.', + * ... b: 'This is the {COUNT, selectordinal, one{#st} two{#nd} few{#rd} other{#th}} example.' }, + * ... fi: { a: '{TYPE} esimerkki.', + * ... b: 'Tämä on {COUNT, selectordinal, other{#.}} esimerkki.' } }, + * ... multiSetLocales = { en: 'en', fi: 'fi' }, + * ... mfuncSet = mf.compile(multiSet, { locale: multiSetLocales, global: 'i18n' }); + * > mfuncSet(this); + * > i18n.en.b({COUNT:3}) + * 'This is the 3rd example.' + * > i18n.fi.b({COUNT:3}) + * 'Tämä on 3. esimerkki.' */ +MessageFormat.prototype.compile = function ( messages, opt ) { + var r = {}, lc0 = this.lc, + compileMsg = function(self, msg) { + try { + var ast = MessageFormat._parse(msg); + return self._precompile(ast); + } catch (e) { + throw new Error((ast ? 'Precompiler' : 'Parser') + ' error: ' + e.toString()); + } + }, + stringify = function(r, level) { + if (!level) level = 0; + if (typeof r != 'object') return r; + var o = [], indent = ''; + for (var i = 0; i < level; ++i) indent += ' '; + for (var k in r) o.push('\n' + indent + ' ' + propname(k) + ': ' + stringify(r[k], level + 1)); + return '{' + o.join(',') + '\n' + indent + '}'; + }; + + if (typeof messages == 'string') { + var f = new Function( + 'number, plural, select, pluralFuncs, fmt', + 'return ' + compileMsg(this, messages)); + return f(this.runtime.number, this.runtime.plural, this.runtime.select, + this.runtime.pluralFuncs, this.runtime.fmt); + } + + opt = opt || {}; + + for (var ns in messages) { + if (opt.locale) this.lc = opt.locale[ns] && [].concat(opt.locale[ns]) || lc0; + if (typeof messages[ns] == 'string') { + try { r[ns] = compileMsg(this, messages[ns]); } + catch (e) { e.message = e.message.replace(':', ' with `' + ns + '`:'); throw e; } + } else { + r[ns] = {}; + for (var key in messages[ns]) { + try { r[ns][key] = compileMsg(this, messages[ns][key]); } + catch (e) { e.message = e.message.replace(':', ' with `' + key + '` in `' + ns + '`:'); throw e; } + } + } + } + + this.lc = lc0; + var s = this.runtime.toString() + '\n'; + switch (opt.global || '') { + case 'exports': + var o = []; + for (var k in r) o.push(propname(k, 'exports') + ' = ' + stringify(r[k])); + return new Function(s + o.join(';\n')); + case 'module.exports': + return new Function(s + 'module.exports = ' + stringify(r)); + case '': + return new Function(s + 'return ' + stringify(r)); + default: + return new Function('G', s + propname(opt.global, 'G') + ' = ' + stringify(r)); + } +}; + + +return MessageFormat; +}()); +/* jshint ignore:end */ + + +var createErrorPluralModulePresence = function() { + return createError( "E_MISSING_PLURAL_MODULE", "Plural module not loaded." ); +}; + + + + +var validateMessageBundle = function( cldr ) { + validate( + "E_MISSING_MESSAGE_BUNDLE", + "Missing message bundle for locale `{locale}`.", + cldr.attributes.bundle && cldr.get( "globalize-messages/{bundle}" ) !== undefined, + { + locale: cldr.locale + } + ); +}; + + + + +var validateMessagePresence = function( path, value ) { + path = path.join( "/" ); + validate( "E_MISSING_MESSAGE", "Missing required message content `{path}`.", + value !== undefined, { path: path } ); +}; + + + + +var validateMessageType = function( path, value ) { + path = path.join( "/" ); + validate( + "E_INVALID_MESSAGE", + "Invalid message content `{path}`. {expected} expected.", + typeof value === "string", + { + expected: "a string", + path: path + } + ); +}; + + + + +var validateParameterTypeMessageVariables = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + + + + +var messageFormatterFn = function( formatter ) { + return function messageFormatter( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = [].slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + + + + +var messageFormatterRuntimeBind = function( cldr, messageformatter ) { + var locale = cldr.locale, + origToString = messageformatter.toString; + + messageformatter.toString = function() { + var argNames, argValues, output, + args = {}; + + // Properly adjust SlexAxton/messageformat.js compiled variables with Globalize variables: + output = origToString.call( messageformatter ); + + if ( /number\(/.test( output ) ) { + args.number = "messageFormat.number"; + } + + if ( /plural\(/.test( output ) ) { + args.plural = "messageFormat.plural"; + } + + if ( /select\(/.test( output ) ) { + args.select = "messageFormat.select"; + } + + output.replace( /pluralFuncs(\[([^\]]+)\]|\.([a-zA-Z]+))/, function( match ) { + args.pluralFuncs = "{" + + "\"" + locale + "\": Globalize(\"" + locale + "\").pluralGenerator()" + + "}"; + return match; + }); + + argNames = Object.keys( args ).join( ", " ); + argValues = Object.keys( args ).map(function( key ) { + return args[ key ]; + }).join( ", " ); + + return "(function( " + argNames + " ) {\n" + + " return " + output + "\n" + + "})(" + argValues + ")"; + }; + + return messageformatter; +}; + + + + +var slice = [].slice; + +/** + * .loadMessages( json ) + * + * @json [JSON] + * + * Load translation data. + */ +Globalize.loadMessages = function( json ) { + var locale, + customData = { + "globalize-messages": json, + "main": {} + }; + + validateParameterPresence( json, "json" ); + validateParameterTypePlainObject( json, "json" ); + + // Set available bundles by populating customData main dataset. + for ( locale in json ) { + if ( json.hasOwnProperty( locale ) ) { + customData.main[ locale ] = {}; + } + } + + Cldr.load( customData ); +}; + +/** + * .messageFormatter( path ) + * + * @path [String or Array] + * + * Format a message given its path. + */ +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( path ) { + var cldr, formatter, message, pluralGenerator, returnFn, + args = slice.call( arguments, 0 ); + + validateParameterPresence( path, "path" ); + validateParameterType( path, "path", typeof path === "string" || Array.isArray( path ), + "a String nor an Array" ); + + path = alwaysArray( path ); + cldr = this.cldr; + + validateDefaultLocale( cldr ); + validateMessageBundle( cldr ); + + message = cldr.get( [ "globalize-messages/{bundle}" ].concat( path ) ); + validateMessagePresence( path, message ); + + // If message is an Array, concatenate it. + if ( Array.isArray( message ) ) { + message = message.join( " " ); + } + validateMessageType( path, message ); + + // Is plural module present? Yes, use its generator. Nope, use an error generator. + pluralGenerator = this.plural !== undefined ? + this.pluralGenerator() : + createErrorPluralModulePresence; + + formatter = new MessageFormat( cldr.locale, pluralGenerator ).compile( message ); + + returnFn = messageFormatterFn( formatter ); + + runtimeBind( args, cldr, returnFn, + [ messageFormatterRuntimeBind( cldr, formatter ), pluralGenerator ] ); + + return returnFn; +}; + +/** + * .formatMessage( path [, variables] ) + * + * @path [String or Array] + * + * @variables [Number, String, Array or Object] + * + * Format a message given its path. + */ +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/number.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/number.js new file mode 100644 index 0000000..c2a859c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/number.js @@ -0,0 +1,1311 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + objectExtend = Globalize._objectExtend, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterRange = Globalize._validateParameterRange, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +var numberFormatterFn = function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + + + + +/** + * NumberingSystem( cldr ) + * + * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems + * - http://cldr.unicode.org/index/bcp47-extension + * - http://www.unicode.org/reports/tr35/#u_Extension + */ +var numberNumberingSystem = function( cldr ) { + var nu = cldr.attributes[ "u-nu" ]; + + if ( nu ) { + if ( nu === "traditio" ) { + nu = "traditional"; + } + if ( [ "native", "traditional", "finance" ].indexOf( nu ) !== -1 ) { + + // Unicode locale extension `u-nu` is set using either (native, traditional or + // finance). So, lookup the respective locale's numberingSystem and return it. + return cldr.main([ "numbers/otherNumberingSystems", nu ]); + } + + // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it. + return nu; + } + + // Return the default numberingSystem. + return cldr.main( "numbers/defaultNumberingSystem" ); +}; + + + + +/** + * nuMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return digits map if numbering system is different than `latn`. + */ +var numberNumberingSystemDigitsMap = function( cldr ) { + var aux, + nu = numberNumberingSystem( cldr ); + + if ( nu === "latn" ) { + return; + } + + aux = cldr.supplemental([ "numberingSystems", nu ]); + + if ( aux._type !== "numeric" ) { + throw createErrorUnsupportedFeature( "`" + aux._type + "` numbering system" ); + } + + return aux._digits; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix? + * padding? + * (integer_fraction_pattern | significant_pattern) + * scientific_notation? + * suffix? + * + * prefix = non_number_stuff + * + * padding = "*" regexp(.) + * + * integer_fraction_pattern = integer_pattern + * fraction_pattern? + * + * integer_pattern = regexp([#,]*[0,]*0+) + * + * fraction_pattern = "." regexp(0*[0-9]*#*) + * + * significant_pattern = regexp([#,]*@+#*) + * + * scientific_notation = regexp(E\+?0+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: - + * 3: padding + * 4: (integer_fraction_pattern | significant_pattern) + * 5: integer_fraction_pattern + * 6: integer_pattern + * 7: fraction_pattern + * 8: significant_pattern + * 9: scientific_notation + * 10: suffix + * 11: - + */ +var numberPatternRe = ( /^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ ); + + + + +/** + * format( number, pattern ) + * + * @number [Number]. + * + * @pattern [String] raw pattern for numbers. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberPatternProperties = function( pattern ) { + var aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern, + maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize, + roundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix; + + pattern = pattern.match( numberPatternRe ); + if ( !pattern ) { + throw new Error( "Invalid pattern: " + pattern ); + } + + prefix = pattern[ 1 ]; + padding = pattern[ 3 ]; + integerFractionOrSignificantPattern = pattern[ 4 ]; + significantPattern = pattern[ 8 ]; + scientificNotation = pattern[ 9 ]; + suffix = pattern[ 10 ]; + + // Significant digit format + if ( significantPattern ) { + significantPattern.replace( /(@+)(#*)/, function( match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) { + minimumSignificantDigits = minimumSignificantDigitsMatch.length; + maximumSignificantDigits = minimumSignificantDigits + + maximumSignificantDigitsMatch.length; + }); + + // Integer and fractional format + } else { + fractionPattern = pattern[ 7 ]; + integerPattern = pattern[ 6 ]; + + if ( fractionPattern ) { + + // Minimum fraction digits, and rounding. + fractionPattern.replace( /[0-9]+/, function( match ) { + minimumFractionDigits = match; + }); + if ( minimumFractionDigits ) { + roundIncrement = +( "0." + minimumFractionDigits ); + minimumFractionDigits = minimumFractionDigits.length; + } else { + minimumFractionDigits = 0; + } + + // Maximum fraction digits + // 1: ignore decimal character + maximumFractionDigits = fractionPattern.length - 1 /* 1 */; + } + + // Minimum integer digits + integerPattern.replace( /0+$/, function( match ) { + minimumIntegerDigits = match.length; + }); + } + + // Scientific notation + if ( scientificNotation ) { + throw createErrorUnsupportedFeature({ + feature: "scientific notation (not implemented)" + }); + } + + // Padding + if ( padding ) { + throw createErrorUnsupportedFeature({ + feature: "padding (not implemented)" + }); + } + + // Grouping + if ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( "," ) ) !== -1 ) { + + // Primary grouping size is the interval between the last group separator and the end of + // the integer (or the end of the significant pattern). + aux2 = integerFractionOrSignificantPattern.split( "." )[ 0 ]; + primaryGroupingSize = aux2.length - aux1 - 1; + + // Secondary grouping size is the interval between the last two group separators. + if ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( ",", aux1 - 1 ) ) !== -1 ) { + secondaryGroupingSize = aux1 - 1 - aux2; + } + } + + // Return: + // 0: @prefix String + // 1: @padding Array [ , ] TODO + // 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer + // digits to be used. Numbers will be padded with leading zeroes if necessary. + // 3: @minimumFractionDigits and + // 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and + // maximum fraction digits to be used. Numbers will be rounded or padded with trailing + // zeroes if necessary. + // 5: @minimumSignificantDigits and + // 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and + // maximum fraction digits to be shown. Either none or both of these properties are + // present; if they are, they override minimum and maximum integer and fraction digits + // – the formatter uses however many integer and fraction digits are required to display + // the specified number of significant digits. + // 7: @roundIncrement Decimal round increment or null + // 8: @primaryGroupingSize + // 9: @secondaryGroupingSize + // 10: @suffix String + return [ + prefix, + padding, + minimumIntegerDigits, + minimumFractionDigits, + maximumFractionDigits, + minimumSignificantDigits, + maximumSignificantDigits, + roundIncrement, + primaryGroupingSize, + secondaryGroupingSize, + suffix + ]; +}; + + + + +/** + * Symbol( name, cldr ) + * + * @name [String] Symbol name. + * + * @cldr [Cldr instance]. + * + * Return the localized symbol given its name. + */ +var numberSymbol = function( name, cldr ) { + return cldr.main([ + "numbers/symbols-numberSystem-" + numberNumberingSystem( cldr ), + name + ]); +}; + + + + +var numberSymbolName = { + ".": "decimal", + ",": "group", + "%": "percentSign", + "+": "plusSign", + "-": "minusSign", + "E": "exponential", + "\u2030": "perMille" +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * ".": "٫", + * ",": "٬", + * "%": "٪", + * ... + * }; + */ +var numberSymbolMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr ); + } + + return symbolMap; +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +/** + * formatProperties( pattern, cldr [, options] ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * @options [Object]: + * - minimumIntegerDigits [Number] + * - minimumFractionDigits, maximumFractionDigits [Number] + * - minimumSignificantDigits, maximumSignificantDigits [Number] + * - round [String] "ceil", "floor", "round" (default), or "truncate". + * - useGrouping [Boolean] default true. + * + * Return the processed properties that will be used in number/format. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormatProperties = function( pattern, cldr, options ) { + var negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern, + roundFn, properties; + + function getOptions( attribute, propertyIndex ) { + if ( attribute in options ) { + properties[ propertyIndex ] = options[ attribute ]; + } + } + + options = options || {}; + pattern = pattern.split( ";" ); + + positivePattern = pattern[ 0 ]; + + negativePattern = pattern[ 1 ] || "-" + positivePattern; + negativeProperties = numberPatternProperties( negativePattern ); + negativePrefix = negativeProperties[ 0 ]; + negativeSuffix = negativeProperties[ 10 ]; + + // Have runtime code to refer to numberRound() instead of including it explicitly. + roundFn = numberRound( options.round ); + roundFn.generatorString = function() { + return "numberRound(" + ( options.round ? "\"" + options.round + "\"" : "" ) + ")"; + }; + + properties = numberPatternProperties( positivePattern ).concat([ + positivePattern, + negativePrefix + positivePattern + negativeSuffix, + negativePrefix, + negativeSuffix, + roundFn, + numberSymbol( "infinity", cldr ), + numberSymbol( "nan", cldr ), + numberSymbolMap( cldr ), + numberNumberingSystemDigitsMap( cldr ) + ]); + + getOptions( "minimumIntegerDigits", 2 ); + getOptions( "minimumFractionDigits", 3 ); + getOptions( "maximumFractionDigits", 4 ); + getOptions( "minimumSignificantDigits", 5 ); + getOptions( "maximumSignificantDigits", 6 ); + + // Grouping separators + if ( options.useGrouping === false ) { + properties[ 8 ] = null; + } + + // Normalize number of digits if only one of either minimumFractionDigits or + // maximumFractionDigits is passed in as an option + if ( "minimumFractionDigits" in options && !( "maximumFractionDigits" in options ) ) { + + // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits ); + properties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] ); + } else if ( !( "minimumFractionDigits" in options ) && + "maximumFractionDigits" in options ) { + + // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits ); + properties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] ); + } + + // Return: + // 0-10: see number/pattern-properties. + // 11: @positivePattern [String] Positive pattern. + // 12: @negativePattern [String] Negative pattern. + // 13: @negativePrefix [String] Negative prefix. + // 14: @negativeSuffix [String] Negative suffix. + // 15: @round [Function] Round function. + // 16: @infinitySymbol [String] Infinity symbol. + // 17: @nanSymbol [String] NaN symbol. + // 18: @symbolMap [Object] A bunch of other symbols. + // 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`. + return properties; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +var numberParserFn = function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * "٫": ".", + * "٬": ",", + * "٪": "%", + * ... + * }; + */ +var numberSymbolInvertedMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol; + } + + return symbolMap; +}; + + + + +/** + * parseProperties( pattern, cldr ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * Return parser properties, used to feed parser function. + */ +var numberParseProperties = function( pattern, cldr ) { + var invertedNuDigitsMap, invertedNuDigitsMapSanityCheck, negativePattern, negativeProperties, + nuDigitsMap = numberNumberingSystemDigitsMap( cldr ); + + pattern = pattern.split( ";" ); + negativePattern = pattern[ 1 ] || "-" + pattern[ 0 ]; + negativeProperties = numberPatternProperties( negativePattern ); + if ( nuDigitsMap ) { + invertedNuDigitsMap = nuDigitsMap.split( "" ).reduce(function( object, localizedDigit, i ) { + object[ localizedDigit ] = String( i ); + return object; + }, {} ); + invertedNuDigitsMapSanityCheck = "0123456789".split( "" ).reduce(function( object, digit ) { + object[ digit ] = "invalid"; + return object; + }, {} ); + invertedNuDigitsMap = objectExtend( + invertedNuDigitsMapSanityCheck, + invertedNuDigitsMap + ); + } + + // 0: @infinitySymbol [String] Infinity symbol. + // 1: @invertedSymbolMap [Object] Inverted symbol map augmented with sanity check. + // The sanity check prevents permissive parsing, i.e., it prevents symbols that doesn't + // belong to the localized set to pass through. This is obtained with the result of the + // inverted map object overloading symbol name map object (the remaining symbol name + // mappings will invalidate parsing, working as the sanity check). + // 2: @negativePrefix [String] Negative prefix. + // 3: @negativeSuffix [String] Negative suffix with percent or per mille stripped out. + // 4: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than + // `latn` augmented with sanity check (similar to invertedSymbolMap). + return [ + numberSymbol( "infinity", cldr ), + objectExtend( {}, numberSymbolName, numberSymbolInvertedMap( cldr ) ), + negativeProperties[ 0 ], + negativeProperties[ 10 ].replace( "%", "" ).replace( "\u2030", "" ), + invertedNuDigitsMap + ]; +}; + + + + +/** + * Pattern( style ) + * + * @style [String] "decimal" (default) or "percent". + * + * @cldr [Cldr instance]. + */ +var numberPattern = function( style, cldr ) { + if ( style !== "decimal" && style !== "percent" ) { + throw new Error( "Invalid style" ); + } + + return cldr.main([ + "numbers", + style + "Formats-numberSystem-" + numberNumberingSystem( cldr ), + "standard" + ]); +}; + + + + +function validateDigits( properties ) { + var minimumIntegerDigits = properties[ 2 ], + minimumFractionDigits = properties[ 3 ], + maximumFractionDigits = properties[ 4 ], + minimumSignificantDigits = properties[ 5 ], + maximumSignificantDigits = properties[ 6 ]; + + // Validate significant digit format properties + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + validateParameterRange( minimumSignificantDigits, "minimumSignificantDigits", 1, 21 ); + validateParameterRange( maximumSignificantDigits, "maximumSignificantDigits", + minimumSignificantDigits, 21 ); + + } else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) { + throw new Error( "Neither or both the minimum and maximum significant digits must be " + + "present" ); + + // Validate integer and fractional format + } else { + validateParameterRange( minimumIntegerDigits, "minimumIntegerDigits", 1, 21 ); + validateParameterRange( minimumFractionDigits, "minimumFractionDigits", 0, 20 ); + validateParameterRange( maximumFractionDigits, "maximumFractionDigits", + minimumFractionDigits, 20 ); + } +} + +/** + * .numberFormatter( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * - see also number/format options. + * + * Return a function that formats a number according to the given options and default/instance + * locale. + */ +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberFormatProperties( pattern, cldr, options ); + + cldr.off( "get", validateCldr ); + + validateDigits( properties ); + + returnFn = numberFormatterFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .numberParser( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * + * Return the number parser according to the default/instance locale. + */ +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberParseProperties( pattern, cldr ); + + cldr.off( "get", validateCldr ); + + returnFn = numberParserFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .formatNumber( value [, options] ) + * + * @value [Number] number to be formatted. + * + * @options [Object]: see number/format-properties. + * + * Format a number according to the given options and default/instance locale. + */ +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +/** + * .parseNumber( value [, options] ) + * + * @value [String] + * + * @options [Object]: See numberParser(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + */ +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberNumberingSystem = numberNumberingSystem; +Globalize._numberPattern = numberPattern; +Globalize._numberSymbol = numberSymbol; +Globalize._stringPad = stringPad; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/plural.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/plural.js new file mode 100644 index 0000000..1fe38f2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/plural.js @@ -0,0 +1,373 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; +var MakePlural; +/* jshint ignore:start */ +MakePlural = (function() { +'use strict'; + +var _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); }; + +var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }; + +var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + +/** + * make-plural.js -- https://github.com/eemeli/make-plural.js/ + * Copyright (c) 2014-2015 by Eemeli Aro + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * The software is provided "as is" and the author disclaims all warranties + * with regard to this software including all implied warranties of + * merchantability and fitness. In no event shall the author be liable for + * any special, direct, indirect, or consequential damages or any damages + * whatsoever resulting from loss of use, data or profits, whether in an + * action of contract, negligence or other tortious action, arising out of + * or in connection with the use or performance of this software. + */ + +var Parser = (function () { + function Parser() { + _classCallCheck(this, Parser); + } + + _createClass(Parser, [{ + key: 'parse', + value: function parse(cond) { + var _this = this; + + if (cond === 'i = 0 or n = 1') { + return 'n >= 0 && n <= 1'; + }if (cond === 'i = 0,1') { + return 'n >= 0 && n < 2'; + }if (cond === 'i = 1 and v = 0') { + this.v0 = 1; + return 'n == 1 && v0'; + } + return cond.replace(/([tv]) (!?)= 0/g, function (m, sym, noteq) { + var sn = sym + '0'; + _this[sn] = 1; + return noteq ? '!' + sn : sn; + }).replace(/\b[fintv]\b/g, function (m) { + _this[m] = 1; + return m; + }).replace(/([fin]) % (10+)/g, function (m, sym, num) { + var sn = sym + num; + _this[sn] = 1; + return sn; + }).replace(/n10+ = 0/g, 't0 && $&').replace(/(\w+ (!?)= )([0-9.]+,[0-9.,]+)/g, function (m, se, noteq, x) { + if (m === 'n = 0,1') return '(n == 0 || n == 1)'; + if (noteq) return se + x.split(',').join(' && ' + se); + return '(' + se + x.split(',').join(' || ' + se) + ')'; + }).replace(/(\w+) (!?)= ([0-9]+)\.\.([0-9]+)/g, function (m, sym, noteq, x0, x1) { + if (Number(x0) + 1 === Number(x1)) { + if (noteq) return '' + sym + ' != ' + x0 + ' && ' + sym + ' != ' + x1; + return '(' + sym + ' == ' + x0 + ' || ' + sym + ' == ' + x1 + ')'; + } + if (noteq) return '(' + sym + ' < ' + x0 + ' || ' + sym + ' > ' + x1 + ')'; + if (sym === 'n') { + _this.t0 = 1;return '(t0 && n >= ' + x0 + ' && n <= ' + x1 + ')'; + } + return '(' + sym + ' >= ' + x0 + ' && ' + sym + ' <= ' + x1 + ')'; + }).replace(/ and /g, ' && ').replace(/ or /g, ' || ').replace(/ = /g, ' == '); + } + }, { + key: 'vars', + value: (function (_vars) { + function vars() { + return _vars.apply(this, arguments); + } + + vars.toString = function () { + return _vars.toString(); + }; + + return vars; + })(function () { + var vars = []; + if (this.i) vars.push('i = s[0]'); + if (this.f || this.v) vars.push('f = s[1] || \'\''); + if (this.t) vars.push('t = (s[1] || \'\').replace(/0+$/, \'\')'); + if (this.v) vars.push('v = f.length'); + if (this.v0) vars.push('v0 = !s[1]'); + if (this.t0 || this.n10 || this.n100) vars.push('t0 = Number(s[0]) == n'); + for (var k in this) { + if (/^.10+$/.test(k)) { + var k0 = k[0] === 'n' ? 't0 && s[0]' : k[0]; + vars.push('' + k + ' = ' + k0 + '.slice(-' + k.substr(2).length + ')'); + } + }if (!vars.length) return ''; + return 'var ' + ['s = String(n).split(\'.\')'].concat(vars).join(', '); + }) + }]); + + return Parser; +})(); + + + +var MakePlural = (function () { + function MakePlural(lc) { + var _ref = arguments[1] === undefined ? MakePlural : arguments[1]; + + var cardinals = _ref.cardinals; + var ordinals = _ref.ordinals; + + _classCallCheck(this, MakePlural); + + if (!cardinals && !ordinals) throw new Error('At least one type of plural is required'); + this.lc = lc; + this.categories = { cardinal: [], ordinal: [] }; + this.parser = new Parser(); + + this.fn = this.buildFunction(cardinals, ordinals); + this.fn._obj = this; + this.fn.categories = this.categories; + + this.fn.toString = this.fnToString.bind(this); + return this.fn; + } + + _createClass(MakePlural, [{ + key: 'compile', + value: function compile(type, req) { + var cases = []; + var rules = MakePlural.rules[type][this.lc]; + if (!rules) { + if (req) throw new Error('Locale "' + this.lc + '" ' + type + ' rules not found'); + this.categories[type] = ['other']; + return '\'other\''; + } + for (var r in rules) { + var _rules$r$trim$split = rules[r].trim().split(/\s*@\w*/); + + var _rules$r$trim$split2 = _toArray(_rules$r$trim$split); + + var cond = _rules$r$trim$split2[0]; + var examples = _rules$r$trim$split2.slice(1); + var cat = r.replace('pluralRule-count-', ''); + if (cond) cases.push([this.parser.parse(cond), cat]); + + } + this.categories[type] = cases.map(function (c) { + return c[1]; + }).concat('other'); + if (cases.length === 1) { + return '(' + cases[0][0] + ') ? \'' + cases[0][1] + '\' : \'other\''; + } else { + return [].concat(_toConsumableArray(cases.map(function (c) { + return '(' + c[0] + ') ? \'' + c[1] + '\''; + })), ['\'other\'']).join('\n : '); + } + } + }, { + key: 'buildFunction', + value: function buildFunction(cardinals, ordinals) { + var _this3 = this; + + var compile = function compile(c) { + return c ? (c[1] ? 'return ' : 'if (ord) return ') + _this3.compile.apply(_this3, _toConsumableArray(c)) : ''; + }, + fold = { vars: function vars(str) { + return (' ' + str + ';').replace(/(.{1,78})(,|$) ?/g, '$1$2\n '); + }, + cond: function cond(str) { + return (' ' + str + ';').replace(/(.{1,78}) (\|\| |$) ?/gm, '$1\n $2'); + } }, + cond = [ordinals && ['ordinal', !cardinals], cardinals && ['cardinal', true]].map(compile).map(fold.cond), + body = [fold.vars(this.parser.vars())].concat(_toConsumableArray(cond)).join('\n').replace(/\s+$/gm, '').replace(/^[\s;]*[\r\n]+/gm, ''), + args = ordinals && cardinals ? 'n, ord' : 'n'; + return new Function(args, body); + } + }, { + key: 'fnToString', + value: function fnToString(name) { + return Function.prototype.toString.call(this.fn).replace(/^function( \w+)?/, name ? 'function ' + name : 'function').replace('\n/**/', ''); + } + }], [{ + key: 'load', + value: function load() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + args.forEach(function (cldr) { + var data = cldr && cldr.supplemental || null; + if (!data) throw new Error('Data does not appear to be CLDR data'); + MakePlural.rules = { + cardinal: data['plurals-type-cardinal'] || MakePlural.rules.cardinal, + ordinal: data['plurals-type-ordinal'] || MakePlural.rules.ordinal + }; + }); + return MakePlural; + } + }]); + + return MakePlural; +})(); + + + +MakePlural.cardinals = true; +MakePlural.ordinals = false; +MakePlural.rules = { cardinal: {}, ordinal: {} }; + + +return MakePlural; +}()); +/* jshint ignore:end */ + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var validateParameterTypePluralType = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || value === "cardinal" || value === "ordinal", + "String \"cardinal\" or \"ordinal\"" + ); +}; + + + + +var pluralGeneratorFn = function( plural ) { + return function pluralGenerator( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return plural( value ); + }; +}; + + + + +/** + * .plural( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a + * value given locale. + */ +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +/** + * .pluralGenerator( [options] ) + * + * Return a plural function (of the form below). + * + * fn( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a value given the + * default/instance locale. + */ +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + var args, cldr, isOrdinal, plural, returnFn, type; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + type = options.type || "cardinal"; + + validateParameterTypePluralType( options.type, "options.type" ); + + validateDefaultLocale( cldr ); + + isOrdinal = type === "ordinal"; + + cldr.on( "get", validateCldr ); + cldr.supplemental([ "plurals-type-" + type, "{language}" ]); + cldr.off( "get", validateCldr ); + + MakePlural.rules = {}; + MakePlural.rules[ type ] = cldr.supplemental( "plurals-type-" + type ); + + plural = new MakePlural( cldr.attributes.language, { + "ordinals": isOrdinal, + "cardinals": !isOrdinal + }); + + returnFn = pluralGeneratorFn( plural ); + + runtimeBind( args, cldr, returnFn, [ plural ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/relative-time.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/relative-time.js new file mode 100644 index 0000000..e179a80 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/relative-time.js @@ -0,0 +1,201 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, properties ) + * + * @value [Number] The number to format + * + * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter + * + * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator + * + * @properties [Object] containing relative time plural message. + * + * Format relative time. + */ +var relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) { + + var relativeTime, + message = properties[ "relative-type-" + value ]; + + if ( message ) { + return message; + } + + relativeTime = value <= 0 ? properties[ "relativeTime-type-past" ] + : properties[ "relativeTime-type-future" ]; + + value = Math.abs( value ); + + message = relativeTime[ "relativeTimePattern-count-" + pluralGenerator( value ) ]; + return formatMessage( message, [ numberFormatter( value ) ] ); +}; + + + + +var relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + return function relativeTimeFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return relativeTimeFormat( value, numberFormatter, pluralGenerator, properties ); + }; + +}; + + + + +/** + * properties( unit, cldr, options ) + * + * @unit [String] eg. "day", "week", "month", etc. + * + * @cldr [Cldr instance]. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Return relative time properties. + */ +var relativeTimeProperties = function( unit, cldr, options ) { + + var form = options.form, + raw, properties, key, match; + + if ( form ) { + unit = unit + "-" + form; + } + + raw = cldr.main( [ "dates", "fields", unit ] ); + properties = { + "relativeTime-type-future": raw[ "relativeTime-type-future" ], + "relativeTime-type-past": raw[ "relativeTime-type-past" ] + }; + for ( key in raw ) { + if ( raw.hasOwnProperty( key ) ) { + match = /relative-type-(-?[0-9]+)/.exec( key ); + if ( match ) { + properties[ key ] = raw[ key ]; + } + } + } + + return properties; +}; + + + + +/** + * .formatRelativeTime( value, unit [, options] ) + * + * @value [Number] The number of unit to format. + * + * @unit [String] see .relativeTimeFormatter() for details. + * + * @options [Object] see .relativeTimeFormatter() for details. + * + * Formats a relative time according to the given unit, options, and the default/instance locale. + */ +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +/** + * .relativeTimeFormatter( unit [, options ]) + * + * @unit [String] String value indicating the unit to be formatted. eg. "day", "week", "month", etc. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Returns a function that formats a relative time according to the given unit, options, and the + * default/instance locale. + */ +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + cldr = this.cldr; + options = options || {}; + + args = [ unit, options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + properties = relativeTimeProperties( unit, cldr, options ); + cldr.off( "get", validateCldr ); + + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = relativeTimeFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/globalize/unit.js b/StockManMVC/.bin/bower_components/globalize/dist/globalize/unit.js new file mode 100644 index 0000000..a847a7d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/globalize/unit.js @@ -0,0 +1,300 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +/** + * format( value, numberFormatter, pluralGenerator, unitProperies ) + * + * @value [Number] + * + * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter. + * + * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator. + * + * @unitProperies [Object]: localized unit data from cldr. + * + * Format units such as seconds, minutes, days, weeks, etc. + * + * OBS: + * + * Unit Sequences are not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences + * + * Duration Unit (for composed time unit durations) is not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit + */ +var unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) { + var compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties, + formattedValue, divisor, divisorProperties, message, pluralValue; + + unitProperties = unitProperties.unitProperties; + formattedValue = numberFormatter( value ); + pluralValue = pluralGenerator( value ); + + // computed compound unit, eg. "megabyte-per-second". + if ( unitProperties instanceof Array ) { + dividendProperties = unitProperties[ 0 ]; + divisorProperties = unitProperties[ 1 ]; + + dividend = formatMessage( dividendProperties[ pluralValue ], [ value ] ); + divisor = formatMessage( divisorProperties.one, [ "" ] ).trim(); + + return formatMessage( compoundUnitPattern, [ dividend, divisor ] ); + } + + message = unitProperties[ pluralValue ]; + + return formatMessage( message, [ formattedValue ] ); +}; + + + + +var unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) { + return function unitFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return unitFormat( value, numberFormatter, pluralGenerator, unitProperties ); + }; + +}; + + + + +/** + * categories() + * + * Return all unit categories. + */ +var unitCategories = [ "acceleration", "angle", "area", "digital", "duration", "length", "mass", "power", +"pressure", "speed", "temperature", "volume" ]; + + + + +function stripPluralGarbage( data ) { + var aux, pluralCount; + + if ( data ) { + aux = {}; + for ( pluralCount in data ) { + aux[ pluralCount.replace( /unitPattern-count-/, "" ) ] = data[ pluralCount ]; + } + } + + return aux; +} + +/** + * get( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + * + * Return the plural map of a unit, eg: "second" + * { "one": "{0} second", + * "other": "{0} seconds" } + * } + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Uses the precomputed form of a compound-unit if available, eg: "mile-per-hour" + * { "displayName": "miles per hour", + * "unitPattern-count-one": "{0} mile per hour", + * "unitPattern-count-other": "{0} miles per hour" + * }, + * + * Also supports "/" instead of "-per-", eg. "foot/second", using the precomputed form if + * available. + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist. + */ +var get = function( unit, form, cldr ) { + var ret; + + // Ensure that we get the 'precomputed' form, if present. + unit = unit.replace( /\//, "-per-" ); + + // Get unit or -unit (eg. "duration-second"). + [ "" ].concat( unitCategories ).some(function( category ) { + return ret = cldr.main([ + "units", + form, + category.length ? category + "-" + unit : unit + ]); + }); + + // Rename keys s/unitPattern-count-//g. + ret = stripPluralGarbage( ret ); + + // Compound Unit, eg. "foot-per-second" or "foot/second". + if ( !ret && ( /-per-/ ).test( unit ) ) { + + // "Some units already have 'precomputed' forms, such as kilometer-per-hour; + // where such units exist, they should be used in preference" UTS#35. + // Note that precomputed form has already been handled above (!ret). + + // Get both recursively. + unit = unit.split( "-per-" ); + ret = unit.map(function( unit ) { + return get( unit, form, cldr ); + }); + if ( !ret[ 0 ] || !ret[ 1 ] ) { + return; + } + } + + return ret; +}; + +var unitGet = get; + + + + +/** + * properties( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + */ +var unitProperties = function( unit, form, cldr ) { + var compoundUnitPattern, unitProperties; + + compoundUnitPattern = cldr.main( [ "units", form, "per/compoundUnitPattern" ] ); + unitProperties = unitGet( unit, form, cldr ); + + return { + compoundUnitPattern: compoundUnitPattern, + unitProperties: unitProperties + }; +}; + + + + +/** + * Globalize.formatUnit( value, unit, options ) + * + * @value [Number] + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * Format units such as seconds, minutes, days, weeks, etc. + */ +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.unitFormatter( unit, options )( value ); +}; + +/** + * Globalize.unitFormatter( unit, options ) + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * - numberFormatter: [Function] a number formatter function. Defaults to Globalize + * `.numberFormatter()` for the current locale using the default options. + */ +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + var args, form, numberFormatter, pluralGenerator, returnFn, properties; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + + args = [ unit, options ]; + form = options.form || "long"; + properties = unitProperties( unit, form, this.cldr ); + + numberFormatter = options.numberFormatter || this.numberFormatter(); + pluralGenerator = this.pluralGenerator(); + returnFn = unitFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, this.cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/.bin/bower_components/globalize/dist/node-main.js b/StockManMVC/.bin/bower_components/globalize/dist/node-main.js new file mode 100644 index 0000000..1e8a16d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/dist/node-main.js @@ -0,0 +1,27 @@ +/*! + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ + +// Core +module.exports = require( "./globalize" ); + +// Extent core with the following modules +require( "./globalize/message" ); +require( "./globalize/number" ); +require( "./globalize/plural" ); + +// Load after globalize/number +require( "./globalize/currency" ); +require( "./globalize/date" ); + +// Load after globalize/number and globalize/plural +require( "./globalize/relative-time" ); +require( "./globalize/unit" ); diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/core/constructor.md b/StockManMVC/.bin/bower_components/globalize/doc/api/core/constructor.md new file mode 100644 index 0000000..364743a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/core/constructor.md @@ -0,0 +1,30 @@ +## [new] Globalize( locale|cldr ) + +Create a Globalize instance. + +**locale|cldr** + +Locale string or [Cldr instance](https://github.com/rxaviers/cldrjs) of the +instance. + +### Example + +Prior to creating any Globalize instance, you must load +`cldr/supplemental/likelySubtags.json`. Read [CLDR content][] if you need more +information. + +[CLDR content]: ../../../README.md#2-cldr-content + +```javascript +var en = new Globalize( "en" ); + +// You can optionally omit the `new` operator. +var pt = Globalize( "pt" ); + +en.formatNumber( 3.1415 ); +// > 3.142 + +pt.formatNumber( 3.1415 ); +// > 3,142 + +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/core/load.md b/StockManMVC/.bin/bower_components/globalize/doc/api/core/load.md new file mode 100644 index 0000000..ebabc0b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/core/load.md @@ -0,0 +1,99 @@ +## Globalize.load( cldrJSONData, ... ) + +This method allows you to load CLDR JSON locale data. `Globalize.load()` is a +proxy to `Cldr.load()`. + +This method can be called as many time as needed. All passed JSON objects are +deeply merged internally. + +For more information, see https://github.com/rxaviers/cldrjs#readme. + +### Parameters + +**cldrJSONData** + +A JSON object with CLDR data. See [Getting Started](#../../../README.md#2-cldr-content) +for more information. + +### Example + +```javascript +Globalize.load({ + "main": { + "en": { + "identity": { + "version": { + "_cldrVersion": "25", + "_number": "$Revision: 91 $" + }, + "generation": { + "_date": "$Date: 2014-03-13 22:27:12 -0500 (Thu, 13 Mar 2014) $" + }, + "language": "en" + }, + "dates": { + "calendars": { + "gregorian": { + "months": { + "format": { + "abbreviated": { + "1": "Jan", + "2": "Feb", + "3": "Mar", + "4": "Apr", + "5": "May", + "6": "Jun", + "7": "Jul", + "8": "Aug", + "9": "Sep", + "10": "Oct", + "11": "Nov", + "12": "Dec" + } + } + }, + "dayPeriods": { + "format": { + "wide": { + "am": "AM", + "am-alt-variant": "am", + "noon": "noon", + "pm": "PM", + "pm-alt-variant": "pm" + } + } + }, + "dateFormats": { + "medium": "MMM d, y" + }, + "timeFormats": { + "medium": "h:mm:ss a", + }, + "dateTimeFormats": { + "medium": "{1}, {0}" + } + } + } + }, + "numbers": { + "defaultNumberingSystem": "latn", + "symbols-numberSystem-latn": { + "group": "," + }, + "decimalFormats-numberSystem-latn": { + "standard": "#,##0.###" + } + } + } + }, + "supplemental": { + "version": { + "_cldrVersion": "25", + "_number": "$Revision: 91 $" + }, + "likelySubtags": { + "en": "en-Latn-US", + } + } +}); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/core/locale.md b/StockManMVC/.bin/bower_components/globalize/doc/api/core/locale.md new file mode 100644 index 0000000..eeaf8be --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/core/locale.md @@ -0,0 +1,54 @@ +## Globalize.locale( [locale|cldr] ) + +Set default locale, or get it if locale argument is omitted. + +Return the default [Cldr instance](https://github.com/rxaviers/cldrjs). + +An application that supports globalization and/or localization will need to +have a way to determine the user's preference. Attempting to automatically +determine the appropriate locale is useful, but it is good practice to always +offer the user a choice, by whatever means. + +Whatever your mechanism, it is likely that you will have to correlate the +user's preferences with the list of locale data supported in the app. This +method allows you to select the best match given the locale data that you +have included and to set the Globalize locale to the one which the user +prefers. + +LanguageMatching TBD (CLDR's spec http://www.unicode.org/reports/tr35/#LanguageMatching). + +### Parameters + +**locale|cldr** + +The locale string, eg. `en`, `pt-BR`, or `zh-Hant-TW`. Or, + +The [Cldr instance](https://github.com/rxaviers/cldrjs), eg. new +`Cldr( "en" )`. + +### Example + +Prior to using this function, you must load +`cldr/supplemental/likelySubtags.json`. Read [CLDR content][] if you need more +information. + +[CLDR content]: ../../../README.md#2-cldr-content + +```javascript +// Set "pt" as our default locale. +Globalize.locale( "pt" ); + +// Get default locale. +Globalize.locale(); +// > { +// attributes: { +// "languageId": "pt", +// "maxLanguageId": "pt_Latn_BR", +// "language": "pt", +// "script": "Latn", +// "territory": "BR", +// "region": "BR" +// }, +// some more stuff... +// } +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/currency/currency-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/currency/currency-formatter.md new file mode 100644 index 0000000..d6e4038 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/currency/currency-formatter.md @@ -0,0 +1,164 @@ +## .currencyFormatter( currency [, options] ) ➜ function( value ) + +Return a function that formats a `currency` according to the given `options` or +locale's defaults. + +The returned function is invoked with one argument: the Number `value` to be +formatted. + +### Parameters + +**currency** + +3-letter currency code as defined by ISO 4217, eg. `USD`. + +**options** Optional + +A JSON object including none or any of the following options. + +> **style** Optional +> +> String `symbol` (default), `accounting`, `code` or `name`. + +See [`.numberFormatter( [options] )`](../number/number-formatter.md) for more +options. + +**value** + +Number to be formatted, eg. `9.99`. + +### Example + +Prior to using any currency methods, you must load +`cldr/main/{locale}/currencies.json`, `cldr/supplemental/currencyData.json`, and +the CLDR content required by the number module. If using plural messages, you +also must load the CLDR content required by the plural module. Read [CLDR +content][] if you need more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.currencyFormatter()`, which uses the +default locale. + +```javascript +var formatter; + +Globalize.locale( "en" ); +formatter = Globalize.currencyFormatter( "USD" ); + +formatter( 9.99 ); +// > "$9.99" + +``` + +You can use the instance method `.currencyFormatter()`, which uses the instance +locale. + +```javascript +var deFormatter = Globalize( "de" ).currencyFormatter( "EUR" ), + zhFormatter = Globalize( "zh" ).currencyFormatter( "EUR" ); + +deFormatter( 9.99 ); +// > "9,99 €" + +zhFormatter( 9.99 ); +// > "€ 9.99" + +``` + +For comparison, follow the formatting output of different symbols in different +locales. + +| 3-letter currency code | en (English) | de (German) | zh (Chinese) | +| --- | --- | --- | --- | +| `.currencyFormatter( "USD" )( 1 )` | `$1.00` | `1,00 $` | `US$ 1.00` | +| `.currencyFormatter( "EUR" )( 1 )` | `€1.00` | `1,00 €` | `€ 1.00` | +| `.currencyFormatter( "CNY" )( 1 )` | `CN¥1.00` | `1,00 CN¥` | `¥ 1.00` | +| `.currencyFormatter( "JPY" )( 1 )` | `¥1` | `1 ¥` | `JP¥ 1` | +| `.currencyFormatter( "GBP" )( 1 )` | `£1.00` | `1,00 £` | `£ 1.00` | +| `.currencyFormatter( "BRL" )( 1 )` | `R$1.00` | `1,00 R$` | `R$ 1.00` | + +For the accounting variation of the symbol format, use `style: "accounting"`. + +```javascript +var formatter = Globalize( "en" ).currencyFormatter( "USD", { + style: "accounting" +}); + +formatter( -1 ); +// > "($1.00)" +``` + +For plural messages, use `style: "name"`. + +```javascript +var formatter = Globalize( "en" ).currencyFormatter( "USD", { + style: "name" +}); + +formatter( 0 ); +// > "0.00 US dollars" + +formatter( 1 ); +// > "1.00 US dollar" +``` + +For comparison, follow the formatting output of different symbols in different +locales using the plural messages `Globalize( locale ).currencyFormatter( currency, +{ style: "name" } )( 1 )`. + +| 3-letter currency code | en (English) | de (German) | zh (Chinese) | +| --- | --- | --- | --- | +| `USD` | `1.00 US dollar` | `1,00 US-Dollar` | `1.00美元` | +| `EUR` | `1.00 euro` | `1,00 Euro` | `1.00欧元` | +| `CNY` | `1.00 Chinese yuan` | `1,00 Chinesischer Yuan` | `1.00人民币` | +| `JPY` | `1 Japanese yen` | `1 Japanischer Yen` | `1日元` | +| `GBP` | `1.00 British pound sterling` | `1,00 Britisches Pfund Sterling` | `1.00英镑` | +| `BRL` | `1.00 Brazilian real` | `1,00 Brasilianischer Real` | `1.00巴西雷亚尔` | + +For the international currency code, use `style: "code"`. + +```javascript +var formatter = Globalize( "en" ).currencyFormatter( "USD", { + style: "code" +}); + +formatter( 9.99 ); +// > "9.99 USD" +``` + +Override the number of digits, grouping separators, rounding function or any +other [`.numberFormatter()` options](../number/number-formatter.md). + +```javascript +var formatter; + +Globalize.locale( "en" ); +formatter = Globalize.currencyFormatter( "USD", { + minimumFractionDigits: 0, + style: "name" +}); + +formatter( 1 ); +// > "1 US dollar" + +formatter = Globalize.currencyFormatter( "USD", { + round: "ceil" +}); + +formatter( 1.491 ); +// > "$1.50" +``` + +For improved performance on iterations, first create the formatter. Then, reuse +it on each loop. + +```javascript +var formatter = Globalize( "en" ).currencyFormatter( "USD" ); + +renderInvoice({ + prices: prices.map(function( price ) { + return formatter( price ); + }) +}); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-formatter.md new file mode 100644 index 0000000..8c3475c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-formatter.md @@ -0,0 +1,199 @@ +## .dateFormatter( [options] ) ➜ function( value ) + +Return a function that formats a date according to the given `options`. The +default formatting is numeric year, month, and day (i.e., `{ skeleton: "yMd" }`. + +The returned function is invoked with one argument: the Date instance `value` to +be formatted. + +### Parameters + +**options** + +A JSON object including one of the following. + +> **skeleton** +> +> String value indicating a skeleton (see description above), eg. +> `{ skeleton: "GyMMMd" }`. +> +> Skeleton provides a more flexible formatting mechanism than the predefined +> list `full`, `long`, `medium`, or `short` represented by date, time, or +> datetime. Instead, they are an open-ended list of patterns containing +> only date field information, and in a canonical order. For a complete list of +> skeleton patterns [check the unicode CLDR documentation](http://www.unicode.o +> rg/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). +> +> For example: +> +> | locale | `"GyMMMd"` skeleton | +> | --- | --- | +> | *en* | `"Apr 9, 2014 AD"` | +> | *zh* | `"公元2014年4月9日"` | +> | *es* | `"9 abr. de 2014 d. C."` | +> | *ar* | `"٩ أبريل، ٢٠١٤ م"` | +> | *pt* | `"9 de abr de 2014 d.C."` | + +> **date** +> +> One of the following String values: `full`, `long`, `medium`, or `short`, eg. +> `{ date: "full" }`. +> +> **time** +> +> One of the following String values: `full`, `long`, `medium`, or `short`, eg. +> `{ time: "full" }`. +> +> **datetime** +> +> One of the following String values: `full`, `long`, `medium`, or `short`, eg. +> `{ datetime: "full" }` +> +> **raw** +> +> String value indicating a machine +> [raw pattern (anything in the "Sym." column)](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) +> eg. `{ raw: "dd/mm" }`. Note this is NOT recommended for i18n in general. +> Use `skeleton` instead. + +**value** + +Date instance to be formatted, eg. `new Date()`; + +### Example + +Prior to using any date methods, you must load +`cldr/main/{locale}/ca-gregorian.json`, `cldr/main/{locale}/timeZoneNames.json`, +`cldr/supplemental/timeData.json`, `cldr/supplemental/weekData.json`, and the +CLDR content required by the number module. Read [CLDR content][] if you need +more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.dateFormatter()`, which uses the default +locale. + +```javascript +var formatter; + +Globalize.locale( "en" ); +formatter = Globalize.dateFormatter(); + +formatter( new Date( 2010, 10, 30, 17, 55 ) ); +// > "11/30/2010" +``` + +You can use the instance method `.dateFormatter()`, which uses the instance locale. + +```javascript +var enFormatter = Globalize( "en" ).dateFormatter(), + deFormatter = Globalize( "de" ).dateFormatter(); + +enFormatter( new Date( 2010, 10, 30, 17, 55 ) ); +// > "11/30/2010, 5:55 PM" + +deFormatter( new Date( 2010, 10, 30, 17, 55 ) ); +// > "30.11.2010" +``` + +Use convenient presets for `date`, `time`, or `datetime`. Their possible values +are: `full`, `long`, `medium`, and `short`. + +| `presetValue` | `Globalize( "en" ).dateFormatter( presetValue )( new Date( 2010, 10, 1, 17, 55 ) )` | +| --- | --- | +| `{ date: "short" }` | `"11/1/10"` | +| `{ date: "medium" }` | `"Nov 1, 2010"` | +| `{ date: "long" }` | `"November 1, 2010"` | +| `{ date: "full" }` | `"Monday, November 1, 2010"` | +| `{ time: "short" }` | `"5:55 PM"` | +| `{ time: "medium" }` | `"5:55:00 PM"` | +| `{ time: "long" }` | `"5:55:00 PM GMT-2"` | +| `{ time: "full" }` | `"5:55:00 PM GMT-02:00"` | +| `{ datetime: "short" }` | `"11/1/10, 5:55 PM"` | +| `{ datetime: "medium" }` | `"Nov 1, 2010, 5:55:00 PM"` | +| `{ datetime: "long" }` | `"November 1, 2010 at 5:55:00 PM GMT-2"` | +| `{ datetime: "full" }` | `"Monday, November 1, 2010 at 5:55:00 PM GMT-02:00"` | + +For comparison, follow the same formatter `{ datetime: "short" }` on different locales. + +| locale | `Globalize( locale ).dateFormatter({ datetime: "short" })( new Date( 2010, 10, 1, 17, 55 ) )` | +| --- | --- | +| *en* | `"11/1/10, 5:55 PM"` | +| *en_GB* | `"01/11/2010 17:55"` | +| *zh* | `"10/11/1 下午5:55"` | +| *zh-u-nu-native* | `"一〇/一一/一 下午五:五五"` | +| *es* | `"1/11/10 17:55"` | +| *de* | `"01.11.10 17:55"` | +| *pt* | `"01/11/10 17:55"` | +| *ar* | `"١‏/١١‏/٢٠١٠ ٥،٥٥ م"` | + +Use skeletons for more flexibility (see its description [above](#parameters)). + +| `skeleton` | `Globalize( "en" ).dateFormatter( skeleton )( new Date( 2010, 10, 1, 17, 55 ) )` | +| --- | --- | +| `{ skeleton: "E" }` | `"Tue"` | +| `{ skeleton: "EHm" }` | `"Tue 17:55"` | +| `{ skeleton: "EHms" }` | `"Tue 17:55:00"` | +| `{ skeleton: "Ed" }` | `"30 Tue"` | +| `{ skeleton: "Ehm" }` | `"Tue 5:55 PM"` | +| `{ skeleton: "Ehms" }` | `"Tue 5:55:00 PM"` | +| `{ skeleton: "Gy" }` | `"2010 AD"` | +| `{ skeleton: "GyMMM" }` | `"Nov 2010 AD"` | +| `{ skeleton: "GyMMMEd" }` | `"Tue, Nov 30, 2010 AD"` | +| `{ skeleton: "GyMMMd" }` | `"Nov 30, 2010 AD"` | +| `{ skeleton: "H" }` | `"17"` | +| `{ skeleton: "Hm" }` | `"17:55"` | +| `{ skeleton: "Hms" }` | `"17:55:00"` | +| `{ skeleton: "M" }` | `"11"` | +| `{ skeleton: "MEd" }` | `"Tue, 11/30"` | +| `{ skeleton: "MMM" }` | `"Nov"` | +| `{ skeleton: "MMMEd" }` | `"Tue, Nov 30"` | +| `{ skeleton: "MMMd" }` | `"Nov 30"` | +| `{ skeleton: "Md" }` | `"11/30"` | +| `{ skeleton: "d" }` | `"30"` | +| `{ skeleton: "h" }` | `"5 PM"` | +| `{ skeleton: "hm" }` | `"5:55 PM"` | +| `{ skeleton: "hms" }` | `"5:55:00 PM"` | +| `{ skeleton: "ms" }` | `"55:00"` | +| `{ skeleton: "y" }` | `"2010"` | +| `{ skeleton: "yM" }` | `"11/2010"` | +| `{ skeleton: "yMEd" }` | `"Tue, 11/30/2010"` | +| `{ skeleton: "yMMM" }` | `"Nov 2010"` | +| `{ skeleton: "yMMMEd" }` | `"Tue, Nov 30, 2010"` | +| `{ skeleton: "yMMMd" }` | `"Nov 30, 2010"` | +| `{ skeleton: "yMd" }` | `"11/30/2010"` | +| `{ skeleton: "yQQQ" }` | `"Q4 2010"` | +| `{ skeleton: "yQQQQ" }` | `"4th quarter 2010"` | +| `{ skeleton: "GyMMMEdhms" }` | `"Tue, Nov 30, 2010 AD, 5:55:00 PM"` | +| `{ skeleton: "Ehms" }` | `"Tue 5:55:00 PM"` | +| `{ skeleton: "yQQQHm" }` | `"Q4 2010, 17:55"` | +| `{ skeleton: "MMMEdhm" }` | `"Tue, Nov 30, 5:55 PM"` | +| `{ skeleton: "yMMMdhm" }` | `"Nov 30, 2010, 5:55 PM"` | + + +```javascript +var globalize = Globalize( "en" ), + date = new Date( 2010, 10, 30, 17, 55 ), + monthDayFormatter = globalize.dateFormatter({ skeleton: "MMMd" }), + hourMinuteSecondFormatter = globalize.dateFormatter({ skeleton: "Hms" }); + +monthDayFormatter( date ); +// > "Nov 30" + +hourMinuteSecondFormatter( date ); +// > "17:55:00" +``` + +For improved performance on iterations, first create the formatter. Then, reuse +it on each loop. + +```javascript +// In an application, this array could have a few hundred entries +var dates = [ new Date( 2010, 10, 30, 17, 55 ), new Date( 2015, 3, 18, 4, 25 ) ]; +var formatter = Globalize( "en" ).dateFormatter({ time: "short" }); + +var formattedDates = dates.map(function( date ) { + return formatter( date ); +}); +// > Array [ "5:55 PM", "4:25 AM" ] +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-parser.md b/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-parser.md new file mode 100644 index 0000000..579ec36 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/date/date-parser.md @@ -0,0 +1,68 @@ +## .dateParser( [options] ) ➜ function( value ) + +Return a function that parses a string representing a date into a JavaScript +Date object according to the given `options`. The default parsing assumes numeric year, month, and +day (i.e., `{ skeleton: "yMd" }`). + +The returned function is invoked with one argument: the String `value` to be +parsed. + +### Parameters + +**options** + +See [.dateFormatter( [options] )](./date-formatter.md). + +**value** + +String with date to be parsed, eg. `"11/1/10, 5:55 PM"`. + +### Example + +Prior to using any date methods, you must load +`cldr/main/{locale}/ca-gregorian.json`, `cldr/main/{locale}/timeZoneNames.json`, +`cldr/supplemental/timeData.json`, `cldr/supplemental/weekData.json`, and the +CLDR content required by the number module. Read [CLDR content][] if you need +more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.dateParser()`, which uses the default +locale. + +```javascript +var parser; + +Globalize.locale( "en" ); +parser = Globalize.dateParser(); + +parser( "1/2/2013" ); +// > Wed Jan 02 2013 00:00:00 + +Globalize.locale( "es" ); +parser = Globalize.dateParser(); + +parser( "1/2/2013" ); +// > Fri Feb 01 2013 00:00:00 +``` + +You can use the instance method `.dateParser()`, which uses the instance locale. + +```javascript +var esParser = Globalize( "es" ).dateParser({ date: short }); + +esParser( "1/2/13" ); +// > Fri Feb 01 2013 00:00:00 +``` + +For improved performance on iterations, first create the parser. Then, reuse it +on each loop. + +```javascript +var formattedDates = [ new Date( a ), new Date( b ), ... ]; +var parser = Globalize( "en" ).dateParser({ time: "short" }); + +dates = formattedDates.map(function( formattedDate ) { + return parser( formattedDate ); +}); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/message/load-messages.md b/StockManMVC/.bin/bower_components/globalize/doc/api/message/load-messages.md new file mode 100644 index 0000000..a7d4e87 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/message/load-messages.md @@ -0,0 +1,116 @@ +## .loadMessages( json ) + +Load messages data. + +The first level of keys must be locales. For example: + +``` +{ + en: { + hello: "Hello" + }, + pt: { + hello: "Olá" + } +} +``` + +ICU MessageFormat pattern is supported: variable replacement, gender and plural +inflections. For more information see [`.messageFormatter( path ) ➡ function([ +variables ])`](./message-formatter.md). + +The provided messages are stored along side other cldr data, under the +"globalize-messages" key. This allows Globalize to reuse the traversal methods +provided by cldrjs. You can inspect this data using +`cldrjs.get("globalize-messages")`. + +### Parameters + +**json** + +JSON object of messages data. Keys can use any character, except `/`, `{` and +`}`. Values (i.e., the message content itself) can contain any character. + +### Example + +```javascript +Globalize.loadMessages({ + pt: { + greetings: { + hello: "Olá", + bye: "Tchau" + } + } +}); + +Globalize( "pt" ).formatMessage( "greetings/hello" ); +// > Olá +``` + +#### Multiline strings + +Use Arrays as a convenience for multiline strings. The lines will be joined by a +space. + +```javascript +Globalize.loadMessages({ + en: { + longText: [ + "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eligendi non", + "quis exercitationem culpa nesciunt nihil aut nostrum explicabo", + "reprehenderit optio amet ab temporibus asperiores quasi cupiditate.", + "Voluptatum ducimus voluptates voluptas?" + ] + } +}); + +Globalize( "en" ).formatMessage( "longText" ); +// > "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eligendi non quis exercitationem culpa nesciunt nihil aut nostrum explicabo reprehenderit optio amet ab temporibus asperiores quasi cupiditate. Voluptatum ducimus voluptates voluptas?" +``` + +#### Messages inheritance + +It's possible to inherit messages, for example: + +```javascript +Globalize.loadMessages({ + root: { + amen: "Amen" + }, + de: {}, + en: {}, + "en-GB": {}, + fr: {}, + pt: { + amen: "Amém" + }, + "pt-PT": {} +}); + +Globalize( "de" ).formatMessage( "amen" ); +// > "Amen" + +Globalize( "en" ).formatMessage( "amen" ); +// > "Amen" + +Globalize( "en-GB" ).formatMessage( "amen" ); +// > "Amen" + +Globalize( "fr" ).formatMessage( "amen" ); +// > "Amen" + +Globalize( "pt-PT" ).formatMessage( "amen" ); +// > "Amém" +``` + +Note that `de`, `en`, `en-GB`, `fr`, and `pt-PT` are empty. `.formatMessage()` +inherits `pt-PT` messages from `pt` (`pt-PT` ➡ `pt`), and it inherits the other +messages from root, eg. `en-GB` ➡ `en-001` ➡ `en` ➡ `root`. Yes, `root` is the +last bundle of the parent lookup. + +Attention: On browsers, message inheritance only works if the optional +dependency `cldr/unresolved` is loaded. + +```html + +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/message/message-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/message/message-formatter.md new file mode 100644 index 0000000..2784c4a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/message/message-formatter.md @@ -0,0 +1,219 @@ +## .messageFormatter( path ) ➡ function([ variables ]) + +Return a function that formats a message (using ICU message format pattern) +given its path and a set of variables into a user-readable string. It supports +pluralization and gender inflections. + +Use [`Globalize.loadMessages( json )`](./load-messages.md) to load +messages data. + +### Parameters + +**path** + +String or Array containing the path of the message content, eg. +`"greetings/bye"`, or `[ "greetings", "bye" ]`. + +**variables** (optional) + +Variables can be Objects, where each property can be referenced by name inside a +message; or Arrays, where each entry of the Array can be used inside a message, +using numeric indices. When passing one or more arguments of other types, +they're converted to an Array and used as such. + +### Example + +You can use the static method `Globalize.messageFormatter()`, which uses the default +locale. + +```javascript +var formatter; + +Globalize.loadMessages({ + pt: { + greetings: { + bye: "Tchau" + } + } +}); + +Globalize.locale( "pt" ); +formatter = Globalize.messageFormatter( "greetings/bye" ); + +formatter(); +// > "Tchau" +``` + +You can use the instance method `.messageFormatter()`, which uses the instance locale. + +```javascript +var pt = new Globalize( "pt" ), + formatter = pt.messageFormatter( "greetings/bye" ); + +formatter(); +// > "Tchau" +``` + +#### Simple Variable Replacement + +```javascript +var formatter; + +Globalize.loadMessages({ + en: { + hello: "Hello, {0} {1} {2}", + hey: "Hey, {first} {middle} {last}" + } +}); + +formatter = Globalize( "en" ).messageFormatter( "hello" ); + +// Numbered variables using Array. +formatter([ "Wolfgang", "Amadeus", "Mozart" ]); +// > "Hello, Wolfgang Amadeus Mozart" + +// Numbered variables using function arguments. +formatter( "Wolfgang", "Amadeus", "Mozart" ); +// > "Hello, Wolfgang Amadeus Mozart" + +// Named variables using Object key-value pairs. +formatter = Globalize( "en" ).messageFormatter( "hey" ); +formatter({ + first: "Wolfgang", + middle: "Amadeus", + last: "Mozart" +}); +// > "Hey, Wolfgang Amadeus Mozart" +``` + +#### Gender inflections + +`select` can be used to format any message variations that works like a switch. + +```javascript +var formatter; + +// Note you can define multiple lines message using an Array of Strings. +Globalize.loadMessages({ + en: { + party: [ + "{hostGender, select,", + " female {{host} invites {guest} to her party}", + " male {{host} invites {guest} to his party}", + " other {{host} invites {guest} to their party}", + "}" + ] + } +}); + +formatter = Globalize( "en" ).messageFormatter( "party" ); + +formatter({ + guest: "Mozart", + host: "Beethoven", + hostGender: "male" +}); +// > "Beethoven invites Mozart to his party" +``` + +#### Plural inflections + +It uses the plural forms `zero`, `one`, `two`, `few`, `many`, or `other` +(required). Note English only uses `one` and `other`. So, including `zero` will +never get called, even when the number is 0. For more information see +[`.pluralGenerator()`](../plural/plural-generator.md). + +```javascript +var numberFormatter, taskFormatter, + en = new Globalize( "en" ); + +// Note you can define multiple lines message using an Array of Strings. +Globalize.loadMessages({ + en: { + task: [ + "You have {count, plural,", + " one {one task}", + " other {{formattedCount} tasks}", + "} remaining" + ] + } +}); + +numberFormatter = en.numberFormatter(); +taskFormatter = en.messageFormatter( "task" ); + +taskFormatter({ + count: 1000, + formattedCount: numberFormatter( 1000 ) +}); +// > "You have 1,000 tasks remaining" +``` + +Literal numeric keys can be used in `plural` to match single, specific numbers. + +```javascript +var taskFormatter, + en = new Globalize( "en" ); + +// Note you can define multiple lines message using an Array of Strings. +Globalize.loadMessages({ + en: { + task: [ + "You have {count, plural,", + " =0 {no tasks}", + " one {one task}", + " other {{formattedCount} tasks}", + "} remaining" + ] + } +}); + +taskFormatter = Globalize( "en" ).messageFormatter( "task" ); + +taskFormatter({ + count: 0, + formattedCount: en.numberFormatter( 0 ) +}); +// > "You have no tasks remaining" +``` + +You may find useful having the plural forms calculated with an offset applied. +Use `#` to output the resulting number. Note literal numeric keys do NOT use the +offset value. + +```javascript +var likeFormatter, + en = new Globalize( "en" ); + +Globalize.loadMessages({ + en: { + likeIncludingMe: [ + "{0, plural, offset:1", + " =0 {Be the first to like this}", + " =1 {You liked this}", + " one {You and someone else liked this}", + " other {You and # others liked this}", + "}" + ] + } +}); + +likeFormatter = Globalize( "en" ).messageFormatter( "likeIncludingMe" ); + +likeFormatter( 0 ); +// > "Be the first to like this" + +likeFormatter( 1 ); +// > "You liked this" + +likeFormatter( 2 ); +// > "You and someone else liked this" + +likeFormatter( 3 ); +// > "You and 2 others liked this" +``` + +Read on [SlexAxton/messageFormatter.js][] for more information on regard of ICU +MessageFormat. + +[SlexAxton/messageFormatter.js]: https://github.com/SlexAxton/messageformat.js/#no-frills diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-formatter.md new file mode 100644 index 0000000..d5e9175 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-formatter.md @@ -0,0 +1,185 @@ +## .numberFormatter( [options] ) ➜ function( value ) + +Return a function that formats a number according to the given options. + +The returned function is invoked with one argument: the Number `value` to be +formatted. + +### Parameters + +**options** Optional + +A JSON object including none or any of the following options. + +> **style** Optional +> +> String `decimal` (default), or `percent`. +> +> **minimumIntegerDigits** Optional +> +> Non-negative integer Number value indicating the minimum integer digits to be +> used. Numbers will be padded with leading zeroes if necessary. +> +> **minimumFractionDigits** and **maximumFractionDigits** Optional +> +> Non-negative integer Number values indicating the minimum and maximum fraction +> digits to be used. Numbers will be rounded or padded with trailing zeroes if +> necessary. Either one or both of these properties must be present. If they +> are, they will override minimum and maximum fraction digits derived from the +> CLDR patterns. +> +> **minimumSignificantDigits** and **maximumSignificantDigits** Optional +> +> Positive integer Number values indicating the minimum and maximum fraction +> digits to be shown. Either none or both of these properties are present. If +> they are, they override minimum and maximum integer and fraction digits. The +> formatter uses however many integer and fraction digits are required to +> display the specified number of significant digits. +> +> **round** Optional +> +> String with rounding method `ceil`, `floor`, `round` (default), or `truncate`. +> +> **useGrouping** Optional +> +> Boolean (default is true) value indicating whether a grouping separator should +> be used. + +### Examples + +#### Static Formatter + +Prior to using any number methods, you must load +`cldr/main/{locale}/numbers.json` and `cldr/supplemental/numberingSystems.json`. +Read [CLDR content][] if you need more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.numberFormatter()`, which uses the +default locale. + +```javascript +var formatter; + +Globalize.locale( "en" ); +formatter = Globalize.numberFormatter(); + +formatter( 3.141592 ); +// > "3.142" +``` + +#### Instance Formatter + +You can use the instance method `.numberFormatter()`, which uses the instance +locale. + +```javascript +var arFormatter = Globalize( "ar" ).numberFormatter(), + esFormatter = Globalize( "es" ).numberFormatter(), + zhFormatter = Globalize( "zh-u-nu-native" ).numberFormatter(); + +arFormatter( 3.141592 ); +// > "٣٫١٤٢" + +esFormatter( 3.141592 ); +// > "3,142" + +zhFormatter( 3.141592 ); +// > "三.一四二" +``` + +#### Configuring decimal places + +The number of decimal places can be decreased or increased using `minimumFractionDigits` and `maximumFractionDigits`. + +```javascript +Globalize.numberFormatter({ maximumFractionDigits: 2 })( 3.141592 ); +// > "3.14" + +Globalize.numberFormatter({ minimumFractionDigits: 2 })( 1.5 ); +// > "1.50" +``` + +#### Configuring significant digits + +The number of significant (non-zero) digits can be decreased or increased using `minimumSignificantDigits` and `maximumSignificantDigits`. + +```javascript +var formatter = Globalize.numberFormatter({ + minimumSignificantDigits: 1, + maximumSignificantDigits: 3 +}); + +formatter( 3.141592 ); +// > "3.14" + +formatter = Globalize.numberFormatter({ + minimumSignificantDigits: 1, + maximumSignificantDigits: 3 +}); + +formatter( 12345 ); +// > "12,300" + +formatter = Globalize.numberFormatter({ + minimumSignificantDigits: 1, + maximumSignificantDigits: 3 +}); + +formatter( 0.00012345 ); +// > "0.000123" +``` + +#### Formatting Percentages + +Numbers can be formatted as percentages. + +```javascript +var enFormatter = Globalize( "en" ).numberFormatter({ + style: "percent", + minimumFractionDigits: 1, + maximumFractionDigits: 1 +}); + +var frFormatter = Globalize( "fr" ).numberFormatter({ + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 +}); + +enFormatter( 0.0016 ); +// > "0.2%" + +enFormatter( 0.0014 ); +// > "0.1%" + +frFormatter( 0.0005 ); +// > "0,05 %" +``` + +#### Configuring Rounding + +Numbers with a decreased amount of decimal places can be rounded up, rounded down, rounded arithmetically, or truncated by setting the `round` option to `ceil`, `floor`, `round` (default), or `truncate`. + +```javascript +var formatter = Globalize.numberFormatter({ + maximumFractionDigits: 2, + round: "ceil" +}); + +formatter( 3.141592 ); +// > "3.15" +``` + +#### Performance Suggestions + +For improved performance on iterations, the formatter should be created before the loop. Then, it can be reused in each iteration. + +```javascript +var numbers = [ 1, 1, 2, 3, ... ]; +var formatter = Globalize( "en" ).numberFormatter(); + +formattedNumbers = numbers.map(function( number ) { + return formatter( number ); +}); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-parser.md b/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-parser.md new file mode 100644 index 0000000..55471f4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/number/number-parser.md @@ -0,0 +1,86 @@ +## .numberParser( [options] ) ➜ function( value ) + +Return a function that parses a String representing a number according to the +given options. If value is invalid, `NaN` is returned. + +The returned function is invoked with one argument: the String representing a +number `value` to be parsed. + +### Parameters + +**options** Optional + +A JSON object including none or any of the following options. + +> **style** Optional +> +> String `decimal` (default), or `percent`. + +**value** + +String with number to be parsed, eg. `"3.14"`. + +### Example + +Prior to using any number methods, you must load +`cldr/main/{locale}/numbers.json` and `cldr/supplemental/numberingSystems.json`. +Read [CLDR content][] if you need more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.numberParser()`, which uses the +default locale. + +```javascript +var parser; + +Globalize.locale( "en" ); +parser = Globalize.numberParser(); + +parser( "3.14" ); +// > 3.14 +``` + +You can use the instance method `.numberParser()`, which uses the instance +locale. + +```javascript +var enParser = Globalize( "ar" ).numberParser(), + esParser = Globalize( "es" ).numberParser(); + +enParser( "3.14" ); +// > 3.14 + +esParser( "3,14" ); +// > 3.14 +``` + +Some more examples. + +```javascript +var parser = Globalize( "en" ).numberParser(); + +parser( "12,735.00" ); +// > 12735 + +parser( "6.626E-34" ); +// > 6.626e-34 + +parser( "∞" ); +// > Infinity + +parser( "invalid-stuff" ); +// > NaN +``` + +For improved performance on iterations, first create the parser. Then, reuse it +on each loop. + +```javascript +var formattedNumbers = [ "1", "1", "2", "3", ... ]; +var parser = Globalize( "en" ).numberParser(); + +numbers = formattedNumbers.map(function( formattedNumber ) { + return parser( formattedNumber ); +}); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/plural/plural-generator.md b/StockManMVC/.bin/bower_components/globalize/doc/api/plural/plural-generator.md new file mode 100644 index 0000000..9f26535 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/plural/plural-generator.md @@ -0,0 +1,95 @@ +## .pluralGenerator( [options] ) ➜ function( value ) + +It supports the creation of internationalized messages with plural inflection by +returning a function that returns the value's plural group: `zero`, `one`, +`two`, `few`, `many`, or `other`. + +The returned function is invoked with one argument: the Number `value` for which +to return the plural group. + +### Parameters + +**options** Optional + +A JSON object including none or any of the following options. + +> **type** Optional +> +> String `cardinal` (default), or `ordinal`. + +**value** + +A Number for which to return the plural group. + +### Example + +Prior to using any plural method, you must load either +`supplemental/plurals.json` for cardinals or `supplemental/ordinals.json` for +ordinals. + +Read [CLDR content][] if you need more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.pluralGenerator()`, which uses the +default locale. + +```javascript +var plural; + +Globalize.locale( "en" ); + +// Cardinals +plural = Globalize.pluralGenerator(); + +plural( 0 ); +// > "other" + +plural( 1 ); +// > "one" + +plural( 2 ); +// > "other" + +// Ordinals +plural = Globalize.pluralGenerator({ type: "ordinal" }); + +plural( 0 ); +// > "other" + +plural( 1 ); +// > "one" + +plural( 2 ); +// > "two" +``` + +You can use the instance method `.pluralGenerator()`, which uses the instance +locale. + +```javascript +var plural = Globalize( "zh" ).pluralGenerator(); + +plural( 1 ); +// > "other" +``` + +For comparison (cardinals): + +| | en (English) | ru (Russian) | ar (Arabic) | +| --- | --- | --- | --- | +| `plural( 0 )` | `other` | `many` | `zero` | +| `plural( 1 )` | `one` | `one` | `one` | +| `plural( 2 )` | `other` | `few` | `two` | +| `plural( 3 )` | `other` | `few` | `few` | +| `plural( 5 )` | `other` | `many` | `few` | + +For comparison (ordinals): + +| | en (English) | ru (Russian) | ar (Arabic) | +| --- | --- | --- | --- | +| `plural( 0, { type: "ordinal" } )` | `other` | `other` | `other` | +| `plural( 1, { type: "ordinal" } )` | `one` | `other` | `other` | +| `plural( 2, { type: "ordinal" } )` | `two` | `other` | `other` | +| `plural( 3, { type: "ordinal" } )` | `few` | `other` | `other` | +| `plural( 5, { type: "ordinal" } )` | `other` | `other` | `other` | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/relative-time/relative-time-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/relative-time/relative-time-formatter.md new file mode 100644 index 0000000..84348f1 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/relative-time/relative-time-formatter.md @@ -0,0 +1,66 @@ +## .relativeTimeFormatter( unit [, options] ) ➜ function( value ) + +Returns a function that formats a relative time according to the given unit, options, and the +default/instance locale. + +The returned function is invoked with one argument: the number `value` to +be formatted. + +### Parameters + +**unit** + +String value indicating the unit to be formatted. eg. "day", "week", "month", etc. + +**options** + +- form: [String] eg. "short" or "narrow". Or falsy for default long form + +**value** + +The number to be formatted. + + +### Example + +Prior to using any relative time methods, you must load +`cldr/main/{locale}/dateFields.json` and the +CLDR content required by the number and plural modules. Read [CLDR content][] if you need +more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.relativeTimeFormatter()`, which uses the default +locale. + +```javascript +var formatter; + +Globalize.locale( "en" ); +formatter = Globalize.relativeTimeFormatter( "month" ); + +formatter( 1 ); +// > "next month" + +formatter( 3 ); +// > "in 3 months" + +formatter( -1 ); +// > "last month" + +formatter( -3 ); +// > "3 months ago" +``` + +You can use the instance method `.relativeTimeFormatter()`, which uses the instance locale. + +```javascript +var globalize = new Globalize( "en" ), + formatter = globalize.relativeTimeFormatter( "week" ); + +formatter( 1 ); +// > "next week" +``` + + + diff --git a/StockManMVC/.bin/bower_components/globalize/doc/api/unit/unit-formatter.md b/StockManMVC/.bin/bower_components/globalize/doc/api/unit/unit-formatter.md new file mode 100644 index 0000000..136b0a4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/api/unit/unit-formatter.md @@ -0,0 +1,77 @@ +## .unitFormatter( unit, options ) ➜ function( value ) + +Returns a function that formats a unit according to the given unit, options, and the +default/instance locale. + +The returned function is invoked with one argument: the number `value` to +be formatted. + +### Parameters + +**unit** + +String value indicating the unit to be formatted. eg. "day", "week", "month", etc. +Could also be a compound unit, eg. "mile-per-hour" or "mile/hour" + +**options** + +- form: [String] eg. "long", "short" or "narrow". + +- numberFormatter: [Function] a number formatter function. Defaults to Globalize + `.numberFormatter()` for the current locale using the default options. + +**value** + +The number to be formatted. + +### Example + +Prior to using any unit methods, you must load `cldr/main/{locale}/units.json` and the +CLDR content required by the plural module. Read [CLDR content][] if you need +more information. + +[CLDR content]: ../../../README.md#2-cldr-content + +You can use the static method `Globalize.unitFormatter()`, which uses the default +locale. + +```javascript +var customNumberFormatter, formatter; + +Globalize.locale( "en" ); +formatter = Globalize.unitFormatter( "month", { form: "long" } ); + +formatter( 1 ); +// > "1 month" + +formatter( 3 ); +// > "3 months" + +formatter( 3000 ); +// > "3,000 months" +``` + +You can pass a custom number formatter to format the number of units. + +```javascript +var customNumberFormatter, formatter; + +Globalize.locale( "en" ); +customNumberFormatter = Globalize.numberFormatter({ useGrouping = false }) +formatter = Globalize.unitFormatter( "mile-per-hour", { + form: "narrow", numberFormatter: customNumberFormatter +} ); + +formatter(5000) +// > "5000mph" +``` + +You can use the instance method `.unitFormatter()`, which uses the instance locale. + +```javascript +var globalize = new Globalize( "en" ), + formatter = globalize.unitFormatter( "mile-per-hour", { form: "narrow" } ); + +formatter( 10 ); +// > "10mph" +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/cldr.md b/StockManMVC/.bin/bower_components/globalize/doc/cldr.md new file mode 100644 index 0000000..f07dee3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/cldr.md @@ -0,0 +1,120 @@ +# Unicode CLDR usage + +## How do I get CLDR data? + +*By downloading the JSON packages individually...* + +Unicode CLDR is available as JSON at https://github.com/unicode-cldr/ (after +this [json-packaging proposal][] took place). Please, read +https://github.com/unicode-cldr/cldr-json for more information about package +organization. + +[json-packaging proposal]: http://cldr.unicode.org/development/development-process/design-proposals/json-packaging + +*By using a package manager...* + +`cldr-data` can be used for convenience. It always downloads from the correct source. + +Use bower `bower install cldr-data` ([detailed instructions][]) or npm `npm +install cldr-data`. For more information, see: + +- https://github.com/rxaviers/cldr-data-npm +- https://github.com/rxaviers/cldr-data-bower + +[detailed instructions]: https://github.com/rxaviers/cldr-data-bower + +## How do I load CLDR data into Globalize? + +The short answer is by using `Globalize.load()` and passing the JSON data as the +first argument. Below, follow several examples on how this could be +accomplished. + +Example of embedding CLDR JSON data: + +```html + +``` + +Example of loading it dynamically: + +```html + + +``` + +Example using AMD (also see our [functional tests](../../test/functional.js)): +```javascript +define([ + "globalize", + "json!cldr-data/main/en/ca-gregorian.json", + "json!cldr-data/supplemental/likelySubtags.json", + "json!cldr-data/supplemental/timeData.json", + "json!cldr-data/supplemental/weekData.json", + "globalize/date" +], function( Globalize, enCaGregorian, likelySubtags, timeData, weekData ) { + + Globalize.load( + enCaGregorian, + likelySubtags, + timeData, + weekData + ); + + // Your code goes here. + +}); +``` + +Example using Node.js: + +```javascript +var Globalize = require( "globalize" ); + +Globalize.load( + require( "cldr-data/main/en/ca-gregorian" ), + require( "cldr-data/supplemental/likelySubtags" ), + require( "cldr-data/supplemental/timeData" ), + require( "cldr-data/supplemental/weekData" ) +); +``` diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-default-locale-not-defined.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-default-locale-not-defined.md new file mode 100644 index 0000000..0c98639 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-default-locale-not-defined.md @@ -0,0 +1,10 @@ +## E_DEFAULT_LOCALE_NOT_DEFINED + +Thrown when any static method, eg. `Globalize.formatNumber()` is used prior to +setting the Global locale with `Globalize.locale( )`. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_DEFAULT_LOCALE_NOT_DEFINED` | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-cldr.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-cldr.md new file mode 100644 index 0000000..8ed260d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-cldr.md @@ -0,0 +1,16 @@ +## E_INVALID_CLDR + +Thrown when a CLDR item has an invalid or unexpected value. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_INVALID_CLDR` | +| description | Reason why the data was considered invalid | + +- description "Missing rules to deduce plural form of \`{value}\`" + + Thrown when the plural form (also known as plural group) is not found for the + given value. This error is very unlikely to occur and is related to incomplete + or invalid CLDR `supplemental/plurals-type-cardinal/{language}` data. diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-type.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-type.md new file mode 100644 index 0000000..893cf1b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-type.md @@ -0,0 +1,12 @@ +## E_INVALID_PAR_TYPE + +Thrown when a parameter has an invalid type on any static or instance methods. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_INVALID_PAR_TYPE` | +| name | Name of the invalid parameter | +| value | Invalid value | +| expected | Expected type | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-value.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-value.md new file mode 100644 index 0000000..693641b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-invalid-par-value.md @@ -0,0 +1,15 @@ +## E_INVALID_PAR_VALUE + +Thrown for certain parameters when the type is correct, but the value is +invalid. Currently, the only parameter with such validation is the date format +(for either format and parse). Format allows [certain +variants](https://github.com/jquery/globalize/blob/master/doc/api/date/date-formatter.md#parameters), +if it's none of them, error is thrown. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_INVALID_PAR_VALUE` | +| name | Name of the invalid parameter | +| value | Invalid value | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-cldr.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-cldr.md new file mode 100644 index 0000000..fc77dbf --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-cldr.md @@ -0,0 +1,11 @@ +## E_MISSING_CLDR + +Thrown when any required CLDR item is NOT found. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_MISSING_CLDR` | +| path | Missing CLDR item path | + diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-parameter.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-parameter.md new file mode 100644 index 0000000..f0efac2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-parameter.md @@ -0,0 +1,10 @@ +## E_MISSING_PARAMETER + +Thrown when a required parameter is missing on any static or instance methods. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_MISSING_PARAMETER` | +| name | Name of the missing parameter | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-plural-module.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-plural-module.md new file mode 100644 index 0000000..f86f9c8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-missing-plural-module.md @@ -0,0 +1,10 @@ +## E_MISSING_PLURAL_MODULE + +Thrown when plural module is needed, but not loaded, eg. formatting currencies +using plural messages. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_MISSING_PLURAL_MODULE` | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-missing-key.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-missing-key.md new file mode 100644 index 0000000..974aa5b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-missing-key.md @@ -0,0 +1,11 @@ +## E_PAR_MISSING_KEY + +Thrown when a parameter misses a required key. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_PAR_MISSING_KEY` | +| key | Name of the missing parameter's key | +| name | Name of the missing parameter | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-out-of-range.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-out-of-range.md new file mode 100644 index 0000000..44c0c91 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-par-out-of-range.md @@ -0,0 +1,13 @@ +## E_PAR_OUT_OF_RANGE + +Thrown when a parameter is not within a valid range of values. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_PAR_OUT_OF_RANGE` | +| name | Name of the invalid parameter | +| value | Invalid value | +| minimum | Minimum value of the valid range | +| maximum | Maximum value of the valid range | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/error/e-unsupported.md b/StockManMVC/.bin/bower_components/globalize/doc/error/e-unsupported.md new file mode 100644 index 0000000..33546c1 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/error/e-unsupported.md @@ -0,0 +1,10 @@ +## E_UNSUPPORTED + +Thrown for unsupported features, eg. to format unsupported date patterns. + +Error object: + +| Attribute | Value | +| --- | --- | +| code | `E_UNSUPPORTED` | +| feature | Description of the unsupported feature | diff --git a/StockManMVC/.bin/bower_components/globalize/doc/migrating-from-0.x.md b/StockManMVC/.bin/bower_components/globalize/doc/migrating-from-0.x.md new file mode 100644 index 0000000..6187beb --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/doc/migrating-from-0.x.md @@ -0,0 +1,64 @@ +# Migrating from Globalize 0.x + +Globalize 0.x came with a bundled locale for US English, and optional files for various other locales. Globalize 1.x uses CLDR for the locale data, and it doesn't bundle any locale data. Check out the documentation for loading CLDR data in 1.x to learn more about that. If you were only using the bundle locale, you only need to load CLDR data for US English. If you were loading other locales, make sure you load those from CLDR as well. + +On the API side, things have also changed, to simplify usage, remove ambiguity and add features. The rest of this document provides a brief function-by-function list. + +If you still need help with migration, let us know. We may extend this guide later as necessary. + +## Globalize.addCultureInfo() + +This method is replaced by `Globalize.loadMessages( json )`. If you were using it for anything except message translations, you may also need to use `Globalize.load`. + +## Globalize.cultures + +This property is gone. You can use Cldrjs to traverse CLDR directly. + +## Globalize.culture( [locale] ) + +This method is replaced by the `Globalize.locale( [locale|cldr] )` method. Call it without arguments to retrieve the default locale, call it with a string argument to set the default locale. + +## Globalize.findClosestCulture + +This method is gone, there is no replacement. If you still need this method, create an issue with your usecase. + +## Globalize.format + +Replaced by three separate methods: + +* `.formatNumber( value [, options] )` +* `.formatCurrency( value, currency [, options] )` +* `.formatDate( value, pattern )` + +See their respective documentation for usage details. Note that the number and date formats are now based on CLDR, using the options and patterns standardized by Unicode. We don't currently have documentation for migrating these formats. + +## Globalize.localize + +Replaced by `.formatMessage( path [, variables ] )`. The new API is quite different and provides much more than just value-lookup. See their respective documentation for usage details. + +## Globalize.parseInt/parseFloat + +Replaced by `.parseNumber( value [, options] )`. So where you might have previously executed: + +```js +Globalize( "en" ).parseFloat( "123,456.789" ) +// > 123456.789 +``` + +You could now execute: + +```js +Globalize( "en" ).parseNumber( "123,456.789" ) +// > 123456.789 +``` + +`parseNumber` is an alias for [`.numberParser( [options] )( value )`](api/number/number-parser.md). So you could also do this: + +```js +Globalize( "en" ).numberParser()( "123,456.789" ) +// > 123456.789 +``` + +## Globalize.parseDate + +This method still exists, and the signature is almost the same: `.parseDate( value, pattern )`. Note that `pattern` indicates just a single "format", where Globalize 0.x supported multiple of those "formats". diff --git a/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/README.md b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/README.md new file mode 100644 index 0000000..0ea1e5d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/README.md @@ -0,0 +1,65 @@ +# Hello World (AMD + bower) + +We assume you know what [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) and +[bower](http://bower.io/) is. + +The demo is composed of the following files: + +``` +. +├── index.html +└── main.js +``` + +Before running it, execute the requirements below. + + +## Requirements + +**1. Install Globalize** + +Let's use bower to download Globalize. For more information on regard of +installation, please read [Getting Started](../../README.md#installation). + +``` +bower install +``` + +Note bower will also fetch some other dependencies of this demo, eg. require.js +and its json plugin. + +You'll get this: + +``` +. +├── bower_components/ +│ ├── globalize/ +│ │ └── dist/ +│ │ ├── globalize +│ │ │ ├── date.js +│ │ │ └── ... +│ │ └── globalize.js +│ └── ... +├── index.html +└── main.js +``` + +**2. Install Dependencies** + +No action needed, because bower has already handled that for us. + +**3. CLDR content** + +No action needed, because bower has already handled that for us. Note `.bowerrc` +has postinstall hook that populates bower's cldr-data skeleton. For more +information, see [bower's cldr-data](https://github.com/rxaviers/cldr-data-bower). + + +## Running the demo + +Once you've completed the requirements above: + +1. Start a server by running `python -m SimpleHTTPServer` or other alternative servers such as [http-server](https://github.com/nodeapps/http-server), [nginx](http://nginx.org/en/docs/), [apache](http://httpd.apache.org/docs/trunk/). +1. Point your browser at `http://localhost:8000/`. +1. Understand the demo by reading the source code (both index.html and main.js). +We have comments there for you. diff --git a/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/index.html b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/index.html new file mode 100644 index 0000000..e3b10c4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/index.html @@ -0,0 +1,43 @@ + + + + + Globalize Hello World (AMD + bower) + + +

Globalize Hello World (AMD + bower)

+ +
+

Requirements

+
    +
  • Run `bower install` (you must have bower installed first).
  • +
  • Start a server, e.g., by running `python -m SimpleHTTPServer`.
  • +
  • Point your browser at `http://localhost:8000/`.
  • +
  • Please, read README.md for more information on any of the above.
  • +
+
+ + + + + + + + diff --git a/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/main.js b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/main.js new file mode 100644 index 0000000..4946c43 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/main.js @@ -0,0 +1,108 @@ +/** + * 1. Configure require.js paths. + */ +require.config({ + paths: { + // Globalize dependencies paths. + cldr: "./bower_components/cldrjs/dist/cldr", + + // Unicode CLDR JSON data. + "cldr-data": "./bower_components/cldr-data", + + // require.js plugin we'll use to fetch CLDR JSON content. + json: "./bower_components/requirejs-plugins/src/json", + + // text is json's dependency. + text: "./bower_components/requirejs-text/text", + + // Globalize. + globalize: "./bower_components/globalize/dist/globalize" + } +}); + + +/** + * 2. Require dependencies and run your code. + */ +require([ + "globalize", + + // CLDR content. + "json!cldr-data/main/en/ca-gregorian.json", + "json!cldr-data/main/en/currencies.json", + "json!cldr-data/main/en/dateFields.json", + "json!cldr-data/main/en/numbers.json", + "json!cldr-data/main/en/units.json", + "json!cldr-data/supplemental/currencyData.json", + "json!cldr-data/supplemental/likelySubtags.json", + "json!cldr-data/supplemental/plurals.json", + "json!cldr-data/supplemental/timeData.json", + "json!cldr-data/supplemental/weekData.json", + "json!messages/en.json", + + // Extend Globalize with Date and Number modules. + "globalize/currency", + "globalize/date", + "globalize/message", + "globalize/number", + "globalize/plural", + "globalize/relative-time", + "globalize/unit" +], function( Globalize, enGregorian, enCurrencies, enDateFields, enNumbers, enUnits, currencyData, + likelySubtags, pluralsData, timeData, weekData, messages ) { + + var en, like, number; + + // At this point, we have Globalize loaded. But, before we can use it, we need to feed it on the appropriate I18n content (Unicode CLDR). Read Requirements on Getting Started on the root's README.md for more information. + Globalize.load( + currencyData, + enCurrencies, + enDateFields, + enGregorian, + enNumbers, + enUnits, + likelySubtags, + pluralsData, + timeData, + weekData + ); + Globalize.loadMessages( messages ); + + // Instantiate "en". + en = Globalize( "en" ); + + // Use Globalize to format dates. + document.getElementById( "date" ).textContent = en.formatDate( new Date(), { + datetime: "medium" + }); + + // Use Globalize to format numbers. + number = en.numberFormatter(); + document.getElementById( "number" ).textContent = number( 12345.6789 ); + + // Use Globalize to format currencies. + document.getElementById( "currency" ).textContent = en.formatCurrency( 69900, "USD" ); + + // Use Globalize to get the plural form of a numeric value. + document.getElementById( "plural-number" ).textContent = number( 12345.6789 ); + document.getElementById( "plural-form" ).textContent = en.plural( 12345.6789 ); + + // Use Globalize to format a message with plural inflection. + like = en.messageFormatter( "like" ); + document.getElementById( "message-0" ).textContent = like( 0 ); + document.getElementById( "message-1" ).textContent = like( 1 ); + document.getElementById( "message-2" ).textContent = like( 2 ); + document.getElementById( "message-3" ).textContent = like( 3 ); + + // Use Globalize to format a relative time. + document.getElementById( "relative-time" ).textContent = en.formatRelativeTime( -35, "second" ); + + // Use Globalize to format a unit. + document.getElementById( "unit" ).textContent = en.formatUnit( 60, "mile/hour", { + form: "short" + }); + + document.getElementById( "requirements" ).style.display = "none"; + document.getElementById( "demo" ).style.display = "block"; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/messages/en.json b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/messages/en.json new file mode 100644 index 0000000..cd37bae --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/messages/en.json @@ -0,0 +1,12 @@ +{ + "en": { + "like": [ + "{0, plural, offset:1", + " =0 {Be the first to like this}", + " =1 {You liked this}", + " one {You and someone else liked this}", + " other {You and # others liked this}", + "}" + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/package.json b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/package.json new file mode 100644 index 0000000..75a2caa --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/amd-bower/package.json @@ -0,0 +1,11 @@ +{ + "name": "globalize-hello-world-amd-bower", + "private": true, + "comment": [ + "You don't need this file. The only reasone this example does have a", + "package.json is to fool npm, so cldr-data-downloader doesn't get", + "installed on Globalize's root.", + "", + "It's analogous to `chroot .` for npm. [:P]" + ] +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/README.md b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/README.md new file mode 100644 index 0000000..ead9d43 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/README.md @@ -0,0 +1,74 @@ +# Globalize App example using webpack + +This example demonstrates how to integrate Globalize with Webpack in your +Application. If you already have an existing Application using Webpack stack, +this example should as well provide you guidance on how to integrate Globalize. +It focuses on the [Globalize Webpack Plugin][], which automates data loading +(CLDR and app messages) during development and automates Globalize compilation +and the usage of Globalize runtime modules for production. It assumes knowledge +of Globalize, npm, and Webpack usage basics. + +## Requirements + +**1. Install app development dependencies** + +This example uses `npm` to download the app development dependencies (i.e., +Globalize, CLDR data, Cldrjs, Webpack, [Globalize Webpack Plugin][], and +others). + +``` +npm install +``` + +## Running the example + +### Development mode + +``` +npm start +``` + +1. Start a server by running `npm start`, which uses webpack's live reload HMR +(Hot Module Replacement). See `package.json` to understand the actual shell +command that is used. +1. Point your browser at `http://localhost:8080`. Note that your browser will +automatically reload on any changes made to the application code (`app/*.js` +files). Also note that for faster page reload, formatters are created +dynamically and automatically by the [Globalize Webpack Plugin][]. +1. Note you can specify the development locale of your choice by setting the +`developmentLocale` property of the Globalize Webpack Plugin on the Webpack +config file. +1. Note that CLDR data and your messages data are automatically loaded by the +[Globalize Webpack Plugin][]. +1. Understand the demo by reading the source code. We have comments there for +you. + +### Production mode + +``` +npm run build +``` + +1. Generate the compiled bundles by running `npm run build`, which will be +created at `./dist`. Note the production bundles are split into three chunks: +(a) vendor, which holds third-party libraries, which in this case means +Globalize Runtime modules, (b) i18n precompiled data, which means the minimum +yet sufficient set of precompiled i18n data that your application needs (one +file for each supported locale), and (c) app, which means your application code. +Also note that all the production code is already minified using UglifyJS. See +`package.json` to understand the actual shell command that is used. +1. Note that your formatters are already precompiled. This is +obvious, but worth emphasizing. It means your formatters are prebuilt, so no client +CPU clock is wasted to generate them and no CLDR or messages data needs to be +dynamically loaded. It means fast to load code (small code) and fast to run +code. +1. Point your browser at `./dist/index.html` to run the application using the +generated production files. Edit this file to display the application using a +different locale (source code has instructions). +1. Understand the demo by reading the source code. We have comments there for +you. + +For more information about the plugin, see the [Globalize Webpack Plugin][] +documentation. + +[Globalize Webpack Plugin]: https://github.com/rxaviers/globalize-webpack-plugin diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/app/index.js b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/app/index.js new file mode 100644 index 0000000..7cc2771 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/app/index.js @@ -0,0 +1,57 @@ +var Globalize = require( "globalize" ); +var startTime = new Date(); + +// Standalone table. +var numberFormatter = Globalize.numberFormatter({ maximumFractionDigits: 2 }); +document.getElementById( "number" ).textContent = numberFormatter( 12345.6789 ); + +var currencyFormatter = Globalize.currencyFormatter( "USD" ); +document.getElementById( "currency" ).textContent = currencyFormatter( 69900 ); + +var dateFormatter = Globalize.dateFormatter({ datetime: "medium" }); +document.getElementById( "date" ).textContent = dateFormatter( new Date() ); + +var relativeTimeFormatter = Globalize.relativeTimeFormatter( "second" ); +document.getElementById( "relative-time" ).textContent = relativeTimeFormatter( 0 ); + +var unitFormatter = Globalize.unitFormatter( "mile/hour", { form: "short" } ); +document.getElementById( "unit" ).textContent = unitFormatter( 60 ); + +// Messages. +document.getElementById( "intro-1" ).textContent = Globalize.formatMessage( "intro-1" ); +document.getElementById( "number-label" ).textContent = Globalize.formatMessage( "number-label" ); +document.getElementById( "currency-label" ).textContent = Globalize.formatMessage( "currency-label" ); +document.getElementById( "date-label" ).textContent = Globalize.formatMessage( "date-label" ); +document.getElementById( "relative-time-label" ).textContent = Globalize.formatMessage( "relative-time-label" ); +document.getElementById( "unit-label" ).textContent = Globalize.formatMessage( "unit-label" ); +document.getElementById( "message-1" ).textContent = Globalize.formatMessage( "message-1", { + currency: currencyFormatter( 69900 ), + date: dateFormatter( new Date() ), + number: numberFormatter( 12345.6789 ), + relativeTime: relativeTimeFormatter( 0 ), + unit: unitFormatter( 60 ) +}); + +document.getElementById( "message-2" ).textContent = Globalize.formatMessage( "message-2", { + count: 3 +}); + +// Display demo. +document.getElementById( "requirements" ).style.display = "none"; +document.getElementById( "demo" ).style.display = "block"; + +// Refresh elapsed time +setInterval(function() { + var elapsedTime = +( ( startTime - new Date() ) / 1000 ).toFixed( 0 ); + document.getElementById( "date" ).textContent = dateFormatter( new Date() ); + document.getElementById( "relative-time" ).textContent = relativeTimeFormatter( elapsedTime ); + document.getElementById( "message-1" ).textContent = Globalize.formatMessage( "message-1", { + currency: currencyFormatter( 69900 ), + date: dateFormatter( new Date() ), + number: numberFormatter( 12345.6789 ), + relativeTime: relativeTimeFormatter( elapsedTime ), + unit: unitFormatter( 60 ) + }); + +}, 1000); + diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/index-template.html b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/index-template.html new file mode 100644 index 0000000..11f91df --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/index-template.html @@ -0,0 +1,86 @@ + + + + + + Globalize App example using Webpack + + + +

Globalize App example using Webpack

+ +
+

Requirements

+
    +
  • Read README.md for instructions on how to run the demo. +
  • +
+
+ + + +{% +var hasShownLocaleHelp; +for ( var chunk in o.htmlWebpackPlugin.files.chunks ) { + if ( /globalize-compiled-data-/.test( chunk ) && chunk !== "globalize-compiled-data-en" ) { + if ( !hasShownLocaleHelp ) { + hasShownLocaleHelp = true; +%} + +{% } %} + +{% } else { %} + +{% + } +} +%} + + + diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ar.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ar.json new file mode 100644 index 0000000..bd0ff37 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ar.json @@ -0,0 +1,22 @@ +{ + "ar": { + "intro-1": "‫استخدم Globalize لتدويل تطبيقك.‬", + "number-label": "رقم", + "currency-label": "عملة", + "date-label": "تاريخ", + "relative-time-label": "الوقت النسبي", + "unit-label": "وحدة القياس", + "message-1": "مثال علي رسالة باستخدام رقم مختلط \"{number}\", عملة \"{currency}\", تاريخ \"{date}\", وقت نسبي \"{relativeTime}\", و وحدة قياس \"{unit}\" .", + "message-2": [ + "مثال على رسالة بدعم صيغة الجمع:", + "{count, plural,", + " zero {لا يوجد لديك اي مهام متبقية}", + " one {لديك مهمة واحدة متبقية}", + " two {لديك اثنين من المهام المتبقية}", + " few {لديك # من المهام المتبقية}", + " many {لديك # من المهام المتبقية}", + " other {لديك # من المهام المتبقية}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/de.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/de.json new file mode 100644 index 0000000..2318d76 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/de.json @@ -0,0 +1,18 @@ +{ + "de": { + "intro-1": "Verwenden Sie Globalize um Ihre Anwendung zu internationalisieren.", + "number-label": "Zahl", + "currency-label": "Währung", + "date-label": "Datum", + "relative-time-label": "Relative Zeit", + "unit-label": "Einheit", + "message-1": "Ein Beispiel mit Zahl \"{number}\", Währung \"{currency}\", Datum \"{date}\", relative Zeit \"{relativeTime}\", und Einheit \"{unit}\".", + "message-2": [ + "Ein Beispieltext mit Unterstützung von Plural Formen: ", + "{count, plural,", + " one {Sie haben noch eine Aufgabe}", + " other {Sie haben noch # verbliebende Aufgaben}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/en.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/en.json new file mode 100644 index 0000000..3b970c4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/en.json @@ -0,0 +1,18 @@ +{ + "en": { + "intro-1": "Use Globalize to internationalize your application.", + "number-label": "Number", + "currency-label": "Currency", + "date-label": "Date", + "relative-time-label": "Relative Time", + "unit-label": "Unit", + "message-1": "An example of a message using mixed number \"{number}\", currency \"{currency}\", date \"{date}\", relative time \"{relativeTime}\", and unit \"{unit}\".", + "message-2": [ + "An example of a message with pluralization support:", + "{count, plural,", + " one {You have one remaining task}", + " other {You have # remaining tasks}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/es.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/es.json new file mode 100644 index 0000000..4df8751 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/es.json @@ -0,0 +1,18 @@ +{ + "es": { + "intro-1": "Usa Globalize para internacionalizar tu aplicación.", + "number-label": "Número", + "currency-label": "Moneda", + "date-label": "Fecha", + "relative-time-label": "Tiempo Relativo", + "unit-label": "Unidad", + "message-1": "Un ejemplo de mensaje usando números mixtos \"{number}\", monedas \"{currency}\", fechas \"{date}\", tiempo relativo \"{relativeTime}\", y unidades \"{unit}\".", + "message-2": [ + "Un ejemplo de mensaje con soporte de pluralización:", + "{count, plural,", + " one {Tienes una tarea restante}", + " other {Tienes # tareas restantes}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/pt.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/pt.json new file mode 100644 index 0000000..734f3ed --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/pt.json @@ -0,0 +1,18 @@ +{ + "pt": { + "intro-1": "Use o Globalize para internacionalizar sua aplicação.", + "number-label": "Número", + "currency-label": "Moeda", + "date-label": "Data", + "relative-time-label": "Tempo relativo", + "unit-label": "Unit", + "message-1": "Um exemplo de mensagem com mistura de número \"{number}\", moeda \"{currency}\", data \"{date}\", tempo relativo \"{relativeTime}\", e unidade \"{unit}\".", + "message-2": [ + "Um exemplo de message com suporte a pluralização:", + "{count, plural,", + " one {Você tem uma tarefa restante}", + " other {Você tem # tarefas restantes}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ru.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ru.json new file mode 100644 index 0000000..cc9dbb5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/ru.json @@ -0,0 +1,20 @@ +{ + "ru": { + "intro-1": "Используйте Globalize для интернационализиции вашего приложения.", + "number-label": "Число", + "currency-label": "Валюта", + "date-label": "Дата", + "relative-time-label": "Относительное время", + "unit-label": "Единица измерения", + "message-1": "Пример сообщения с числом \"{number}\", валютой \"{currency}\", датой \"{date}\", относительным временем \"{relativeTime}\" и единицей измерения \"{unit}\".", + "message-2": [ + "Пример сообщения с поддержкой множественного числа:", + "{count, plural,", + " one {У вас осталась одна задача}", + " many {У вас осталось # задач}", + " few {У вас осталось # задачи}", + " other {У вас осталось # задачи}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/zh.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/zh.json new file mode 100644 index 0000000..80cba99 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/messages/zh.json @@ -0,0 +1,17 @@ +{ + "zh": { + "intro-1": "使用Globalize的国际化应用程序", + "number-label": "号码", + "currency-label": "币", + "date-label": "迄今", + "relative-time-label": "相对时间", + "unit-label": "单元", + "message-1": "使用混合数\"{number}\",货币\"{currency}\",日期\"{date}\",相对时间\"{relativeTime}\"和单元\"{unit}\"的消息的例子。", + "message-2": [ + "与多元化支持消息的例子:", + "{count, plural,", + " other {你有#剩下的任务}", + "}." + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/package.json b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/package.json new file mode 100644 index 0000000..dbf4619 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/package.json @@ -0,0 +1,14 @@ +{ + "private": true, + "devDependencies": { + "cldr-data": ">=25", + "html-webpack-plugin": "^1.1.0", + "nopt": "^3.0.3", + "webpack": "^1.9.0", + "webpack-dev-server": "^1.9.0" + }, + "scripts": { + "start": "webpack-dev-server --config webpack-config.js --hot --progress --colors --inline", + "build": "webpack --production --config webpack-config.js" + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/webpack-config.js b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/webpack-config.js new file mode 100644 index 0000000..446e76b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/app-npm-webpack/webpack-config.js @@ -0,0 +1,55 @@ +var webpack = require( "webpack" ); +var CommonsChunkPlugin = require( "webpack/lib/optimize/CommonsChunkPlugin" ); +var HtmlWebpackPlugin = require( "html-webpack-plugin" ); +var GlobalizePlugin = require( "globalize-webpack-plugin" ); +var nopt = require( "nopt" ); + +var options = nopt({ + production: Boolean +}); + +module.exports = { + entry: options.production ? { + main: "./app/index.js", + vendor: [ + "globalize", + "globalize/dist/globalize-runtime/number", + "globalize/dist/globalize-runtime/currency", + "globalize/dist/globalize-runtime/date", + "globalize/dist/globalize-runtime/message", + "globalize/dist/globalize-runtime/plural", + "globalize/dist/globalize-runtime/relative-time", + "globalize/dist/globalize-runtime/unit" + ] + } : "./app/index.js", + debug: !options.production, + output: { + path: options.production ? "./dist" : "./tmp", + publicPath: options.production ? "" : "http://localhost:8080/", + filename: options.production ? "app.[hash].js" : "app.js" + }, + resolve: { + extensions: [ "", ".js" ] + }, + plugins: [ + new HtmlWebpackPlugin({ + production: options.production, + template: "./index-template.html" + }), + new GlobalizePlugin({ + production: options.production, + developmentLocale: "en", + supportedLocales: [ "ar", "de", "en", "es", "pt", "ru", "zh" ], + messages: "messages/[locale].json", + output: "i18n/[locale].[hash].js" + }) + ].concat( options.production ? [ + new webpack.optimize.DedupePlugin(), + new CommonsChunkPlugin( "vendor", "vendor.[hash].js" ), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + } + }) + ] : [] ) +}; diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/README.md b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/README.md new file mode 100644 index 0000000..a2c129b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/README.md @@ -0,0 +1,45 @@ +# Basic Globalize Compiler example + +This example focuses on the Globalize Compiler and the Globalize runtime +modules. It assumes knowledge of Globalize usage basics. + +## Requirements + +**1. Install Globalize dependencies and Globalize Compiler** + +This example uses `npm` to download Globalize dependencies (i.e., CLDR data and +the Cldrjs library) and the [Globalize Compiler][]. + +``` +npm install +``` + +[Globalize Compiler]: https://github.com/jquery-support/globalize-compiler + +## Running the example + +### Development mode + +1. Start a server by running `python -m SimpleHTTPServer` or other alternative +servers such as [http-server][], [nginx][], [apache][]. +1. Point your browser at `http://localhost:8000/development.html`. Note that the +formatters are created dynamically. Therefore, Cldrjs and CLDR data are +required. +1. Understand the demo by reading the source code. We have comments there for +you. + +[http-server]: https://github.com/nodeapps/http-server +[nginx]: http://nginx.org/en/docs/ +[apache]: http://httpd.apache.org/docs/trunk/ + +### Production mode + +1. Compile the application formatters by running `npm run build`. See +`package.json` to understand the actual shell command that is used. For more +information about the compiler, see the [Globalize Compiler documentation][]. +1. Point your browser at `./production.html`. Note that we don't need Cldrjs nor +CLDR data in production here. +1. Understand the demo by reading the source code. We have comments there for +you. + +[Globalize Compiler documentation]: https://github.com/jquery-support/globalize-compiler#README diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/app.js b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/app.js new file mode 100644 index 0000000..ffd871b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/app.js @@ -0,0 +1,38 @@ +var like, number; + +// Set default locale as "en". +Globalize.locale( "en" ); + +// Use Globalize to format dates. +document.getElementById( "date" ).textContent = Globalize.formatDate( new Date(), { + datetime: "medium" +}); + +// Use Globalize to format numbers. +number = Globalize.numberFormatter(); +document.getElementById( "number" ).textContent = number( 12345.6789 ); + +// Use Globalize to format currencies. +document.getElementById( "currency" ).textContent = Globalize.formatCurrency( 69900, "USD" ); + +// Use Globalize to get the plural form of a numeric value. +document.getElementById( "plural-number" ).textContent = number( 12345.6789 ); +document.getElementById( "plural-form" ).textContent = Globalize.plural( 12345.6789 ); + +// Use Globalize to format a message with plural inflection. +like = Globalize.messageFormatter( "like" ); +document.getElementById( "message-0" ).textContent = like( 0 ); +document.getElementById( "message-1" ).textContent = like( 1 ); +document.getElementById( "message-2" ).textContent = like( 2 ); +document.getElementById( "message-3" ).textContent = like( 3 ); + +// Use Globalize to format a relative time. +document.getElementById( "relative-time" ).textContent = Globalize.formatRelativeTime( -35, "second" ); + +// Use Globalize to format a unit. +document.getElementById( "unit" ).textContent = Globalize.formatUnit( 60, "mile/hour", { + form: "short" +}); + +document.getElementById( "requirements" ).style.display = "none"; +document.getElementById( "demo" ).style.display = "block"; diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/cldr.json b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/cldr.json new file mode 100644 index 0000000..1de447b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/cldr.json @@ -0,0 +1,147 @@ +{ + "main": { + "en": { + "identity": { + "version": { + "_cldrVersion": "25", + "_number": "$Revision: 91 $" + }, + "generation": { + "_date": "$Date: 2014-03-13 22:27:12 -0500 (Thu, 13 Mar 2014) $" + }, + "language": "en" + }, + "dates": { + "calendars": { + "gregorian": { + "months": { + "format": { + "abbreviated": { + "1": "Jan", + "2": "Feb", + "3": "Mar", + "4": "Apr", + "5": "May", + "6": "Jun", + "7": "Jul", + "8": "Aug", + "9": "Sep", + "10": "Oct", + "11": "Nov", + "12": "Dec" + } + } + }, + "dayPeriods": { + "format": { + "wide": { + "am": "AM", + "am-alt-variant": "am", + "noon": "noon", + "pm": "PM", + "pm-alt-variant": "pm" + } + } + }, + "dateFormats": { + "medium": "MMM d, y" + }, + "timeFormats": { + "medium": "h:mm:ss a" + }, + "dateTimeFormats": { + "medium": "{1}, {0}" + } + } + }, + "fields": { + "second": { + "displayName": "Second", + "relative-type-0": "now", + "relativeTime-type-future": { + "relativeTimePattern-count-one": "in {0} second", + "relativeTimePattern-count-other": "in {0} seconds" + }, + "relativeTime-type-past": { + "relativeTimePattern-count-one": "{0} second ago", + "relativeTimePattern-count-other": "{0} seconds ago" + } + } + } + }, + "numbers": { + "currencies": { + "USD": { + "symbol": "$" + } + }, + "defaultNumberingSystem": "latn", + "symbols-numberSystem-latn": { + "decimal": ".", + "exponential": "E", + "group": ",", + "infinity": "∞", + "minusSign": "-", + "nan": "NaN", + "percentSign": "%", + "perMille": "‰", + "plusSign": "+", + "timeSeparator": ":" + }, + "decimalFormats-numberSystem-latn": { + "standard": "#,##0.###" + }, + "currencyFormats-numberSystem-latn": { + "currencySpacing": { + "beforeCurrency": { + "currencyMatch": "[:^S:]", + "surroundingMatch": "[:digit:]", + "insertBetween": " " + }, + "afterCurrency": { + "currencyMatch": "[:^S:]", + "surroundingMatch": "[:digit:]", + "insertBetween": " " + } + }, + "standard": "¤#,##0.00" + } + }, + "units": { + "short": { + "per": { + "compoundUnitPattern": "{0}/{1}" + }, + "speed-mile-per-hour": { + "displayName": "miles/hour", + "unitPattern-count-one": "{0} mph", + "unitPattern-count-other": "{0} mph" + } + } + } + } + }, + "supplemental": { + "version": { + "_cldrVersion": "25", + "_number": "$Revision: 91 $" + }, + "currencyData": { + "fractions": { + "DEFAULT": { + "_rounding": "0", + "_digits": "2" + } + } + }, + "likelySubtags": { + "en": "en-Latn-US" + }, + "plurals-type-cardinal": { + "en": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + } + } + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/development.html b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/development.html new file mode 100644 index 0000000..002d6da --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/development.html @@ -0,0 +1,93 @@ + + + + + Basic Globalize Compiler example (development mode) + + +

Basic Globalize Compiler example (development mode)

+ +
+

Requirements

+
    +
  • Read README.md for instructions.
  • +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/messages.json b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/messages.json new file mode 100644 index 0000000..4a5f1f4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/messages.json @@ -0,0 +1,12 @@ +{ + "en": { + "like": [ + "{0, plural, offset:1", + " =0 {Be the first to like this}", + " =1 {You liked this}", + " one {You and someone else liked this}", + " other {You and # others liked this}", + "}" + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/package.json b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/package.json new file mode 100644 index 0000000..73d1f0c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/package.json @@ -0,0 +1,13 @@ +{ + "name": "basic-globalize-compiler", + "private": true, + "scripts": { + "build": "globalize-compiler -l en -c cldr.json -m messages.json -o compiled-formatters.js app.js" + }, + "devDependencies": { + "cldr-data": ">=25", + "globalize": "1.1.x", + "globalize-compiler": "0.1.x", + "jquery": "latest" + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/production.html b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/production.html new file mode 100644 index 0000000..296b69b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/globalize-compiler/production.html @@ -0,0 +1,69 @@ + + + + + Basic Globalize Compiler example (production mode) + + +

Basic Globalize Compiler example (production mode)

+ +
+

Requirements

+
    +
  • You need to build the `compiled-formatters.js`. Read README.md for instructions. +
  • +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/globalize/examples/node-npm/README.md b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/README.md new file mode 100644 index 0000000..6b39f7d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/README.md @@ -0,0 +1,57 @@ +# Hello World (Node.js + npm) + +We assume you know what [Node.js](http://nodejs.org/) and +[npm](https://www.npmjs.org/) is. + +The demo contains one single file: + +``` +. +└── main.js +``` + +Before running it, execute the requirements below. + + +## Requirements + +**1. Install Globalize** + +Let's use npm to download Globalize. For more information on regard of +installation, please read [Getting Started](../../README.md#installation). + +``` +npm install +``` + +Then, you'll get this: + +``` +. +├── node_modules/ +│ ├── globalize/ +│ │ └── dist/ +│ │ ├── globalize +│ │ │ ├── date.js +│ │ │ └── ... +│ │ └── globalize.js +│ └── ... +└── main.js +``` + +**2. Dependencies** + +No action needed, because npm has already handled that for us. + +**3. CLDR content** + +No action needed, because npm has already handled that for us. For more +information, see [npm's cldr-data](https://github.com/rxaviers/cldr-data-npm). + + +## Running the demo + +Once you've completed the requirements above: + +1. Run `node main.js`. +1. Understand the demo by reading the source code. We have comments there for you. diff --git a/StockManMVC/.bin/bower_components/globalize/examples/node-npm/main.js b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/main.js new file mode 100644 index 0000000..f7e4307 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/main.js @@ -0,0 +1,45 @@ +var like; +var Globalize = require( "globalize" ); + +// Before we can use Globalize, we need to feed it on the appropriate I18n content (Unicode CLDR). Read Requirements on Getting Started on the root's README.md for more information. +Globalize.load( + require( "cldr-data/main/en/ca-gregorian" ), + require( "cldr-data/main/en/currencies" ), + require( "cldr-data/main/en/dateFields" ), + require( "cldr-data/main/en/numbers" ), + require( "cldr-data/main/en/units" ), + require( "cldr-data/supplemental/currencyData" ), + require( "cldr-data/supplemental/likelySubtags" ), + require( "cldr-data/supplemental/plurals" ), + require( "cldr-data/supplemental/timeData" ), + require( "cldr-data/supplemental/weekData" ) +); +Globalize.loadMessages( require( "./messages/en" ) ); + +// Set "en" as our default locale. +Globalize.locale( "en" ); + +// Use Globalize to format dates. +console.log( Globalize.formatDate( new Date(), { datetime: "medium" } ) ); + +// Use Globalize to format numbers. +console.log( Globalize.formatNumber( 12345.6789 ) ); + +// Use Globalize to format currencies. +console.log( Globalize.formatCurrency( 69900, "USD" ) ); + +// Use Globalize to get the plural form of a numeric value. +console.log( Globalize.plural( 12345.6789 ) ); + +// Use Globalize to format a message with plural inflection. +like = Globalize.messageFormatter( "like" ); +console.log( like( 0 ) ); +console.log( like( 1 ) ); +console.log( like( 2 ) ); +console.log( like( 3 ) ); + +// Use Globalize to format relative time. +console.log( Globalize.formatRelativeTime( -35, "second" ) ); + +// Use Globalize to format unit. +console.log( Globalize.formatUnit( 60, "mile/hour", { form: "short" } ) ); diff --git a/StockManMVC/.bin/bower_components/globalize/examples/node-npm/messages/en.json b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/messages/en.json new file mode 100644 index 0000000..cd37bae --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/messages/en.json @@ -0,0 +1,12 @@ +{ + "en": { + "like": [ + "{0, plural, offset:1", + " =0 {Be the first to like this}", + " =1 {You liked this}", + " one {You and someone else liked this}", + " other {You and # others liked this}", + "}" + ] + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/node-npm/package.json b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/package.json new file mode 100644 index 0000000..b8e45c8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/node-npm/package.json @@ -0,0 +1,8 @@ +{ + "name": "globalize-hello-world-node-npm", + "private": true, + "dependencies": { + "cldr-data": "latest", + "globalize": "1.1.x" + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/README.md b/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/README.md new file mode 100644 index 0000000..6977ecb --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/README.md @@ -0,0 +1,81 @@ +# Hello World (plain javascript) + +The demo contains one single file: + +``` +. +└── index.html +``` + +Before running it, execute the requirements below. + + +## Requirements + +**1. Dependencies** + +The demo requires Globalize and its dependencies. Globalize's dependencies are listed on [Getting +Started](../../README.md#dependencies), and the only one is +[cldrjs](https://github.com/rxaviers/cldrjs). You are free to fetch it the way you want. But, as an +exercise of this demo, we'll download it ourselves. So: + +1. Click at [Globalize releases tab](https://github.com/rxaviers/globalize/releases). +1. Download the latest package. +1. Unzip it. +1. Rename the extracted directory `globalize` and move it alongside `index.html` and `README.md`. +1. Click at [cldrjs releases tab](https://github.com/rxaviers/cldrjs/releases). +1. Download the latest package. +1. Unzip it. +1. Rename the extracted directory `cldrjs` and move it alongside `index.html` and `README.md`. + +Then, you'll get this: + +``` +. +├── cldrjs +│ └── dist +│ ├── cldr.js +│ ├── ... +│ └── cldr +│ ├── event.js +│ ├── supplemental.js +│ └── ... +├── globalize +│ └── dist +│ ├── globalize.js +│ ├── ... +│ └── globalize +│ ├── currency.js +│ ├── date.js +│ └── ... +├── index.html +└── README.md +``` + +For more information read [cldrjs' usage and +installation](https://github.com/rxaviers/cldrjs#usage-and-installation) docs. + +**2. CLDR content** + +Another typical Globalize requirement is to fetch CLDR content yourself. But, on +this demo we made the things a little easier for you: we've embedded static JSON +into the demo. So, you don't need to actually fetch it anywhere. For more +information about fetching Unicode CLDR JSON data, see [How do I get CLDR +data?](../../doc/cldr.md). + +No action needed here. + +**3. Globalize `dist` files** + +*This step only applies if you are building the source files. If you have downloaded a ZIP or a TAR.GZ or are using a package manager (such as bower or npm) to install then you can ignore this step.* + +[Install the development external dependencies](../../README.md#install-development-external-dependencies) and [build the distribution files](../../README.md#build). + +## Running the demo + +Once you've completed the requirements above: + +1. Point your browser at `./index.html`. +1. Open your JavaScript console to see the demo output. +1. Understand the demo by reading the source code. We have comments there for +you. diff --git a/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/index.html b/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/index.html new file mode 100644 index 0000000..6a94be2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/examples/plain-javascript/index.html @@ -0,0 +1,270 @@ + + + + + Globalize Hello World (plain javascript) + + +

Globalize Hello World (plain javascript)

+ +
+

Requirements

+
    +
  • You need to download the `cldrjs` dependency yourself. Read README.md for instructions. +
  • +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StockManMVC/.bin/bower_components/globalize/package.json b/StockManMVC/.bin/bower_components/globalize/package.json new file mode 100644 index 0000000..ad4f41f --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/package.json @@ -0,0 +1,98 @@ +{ + "name": "globalize", + "version": "1.1.1", + "description": "A JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data.", + "keywords": [ + "utility", + "globalization", + "internationalization", + "multilingualization", + "localization", + "g11n", + "i18n", + "m17n", + "L10n", + "localize", + "format", + "parse", + "translate", + "strings", + "numbers", + "dates", + "times", + "calendars", + "plural", + "plurals", + "pluralize", + "cultures", + "languages", + "locales", + "Unicode", + "CLDR", + "JSON" + ], + "homepage": "https://github.com/jquery/globalize", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "maintainers": [ + { + "name": "Jörn Zaefferer", + "email": "joern.zaefferer@gmail.com", + "url": "http://bassistance.de" + }, + { + "name": "Rafael Xavier de Souza", + "email": "rxaviers@gmail.com", + "url": "http://rafael.xavier.blog.br" + } + ], + "main": "./dist/node-main.js", + "files": [ + "CONTRIBUTING.md", + "dist/", + "doc/", + "examples/", + "LICENSE.txt", + "README.md" + ], + "repository": { + "type": "git", + "url": "git://github.com/jquery/globalize.git" + }, + "bugs": { + "url": "http://github.com/jquery/globalize/issues" + }, + "dependencies": { + "cldrjs": "0.4.4" + }, + "peerDependencies": { + "cldr-data": ">=25" + }, + "devDependencies": { + "grunt": "0.4.5", + "grunt-check-dependencies": "0.6.0", + "grunt-commitplease": "0.0.5", + "grunt-compare-size": "0.4.0", + "grunt-contrib-clean": "0.6.0", + "grunt-contrib-connect": "0.8.0", + "grunt-contrib-copy": "0.6.0", + "grunt-contrib-jshint": "0.10.0", + "grunt-contrib-qunit": "0.7.0", + "grunt-contrib-requirejs": "0.4.4", + "grunt-contrib-uglify": "0.6.0", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "^3.1.0", + "grunt-jscs": "1.8.0", + "gzip-js": "0.3.2", + "matchdep": "0.3.0" + }, + "commitplease": { + "nohook": true + }, + "license": "MIT", + "scripts": { + "test": "grunt" + } +} diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-core-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-core-runtime.js new file mode 100644 index 0000000..a070876 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-core-runtime.js @@ -0,0 +1,32 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define( factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory(); + } else { + + // Globalize + root.Globalize = factory(); + } +}( this, function() { diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-core.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-core.js new file mode 100644 index 0000000..9cbb07c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-core.js @@ -0,0 +1,35 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ) ); + } else { + + // Global + root.Globalize = factory( root.Cldr ); + } +}( this, function( Cldr ) { diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency-runtime.js new file mode 100644 index 0000000..8f8442b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency-runtime.js @@ -0,0 +1,43 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency.js new file mode 100644 index 0000000..02ac4e7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-currency.js @@ -0,0 +1,47 @@ +/*! + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + formatMessage = Globalize._formatMessage, + numberNumberingSystem = Globalize._numberNumberingSystem, + numberPattern = Globalize._numberPattern, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-date-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-date-runtime.js new file mode 100644 index 0000000..748c785 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-date-runtime.js @@ -0,0 +1,46 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeString = Globalize._validateParameterTypeString; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-date.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-date.js new file mode 100644 index 0000000..eb3de87 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-date.js @@ -0,0 +1,52 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + formatMessage = Globalize._formatMessage, + numberSymbol = Globalize._numberSymbol, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeString = Globalize._validateParameterTypeString; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-message-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-message-runtime.js new file mode 100644 index 0000000..522a9d6 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-message-runtime.js @@ -0,0 +1,37 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterType = Globalize._validateParameterType; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-message.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-message.js new file mode 100644 index 0000000..e5a0492 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-message.js @@ -0,0 +1,46 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + createError = Globalize._createError, + isPlainObject = Globalize._isPlainObject, + runtimeBind = Globalize._runtimeBind, + validateDefaultLocale = Globalize._validateDefaultLocale, + validate = Globalize._validate, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-number-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-number-runtime.js new file mode 100644 index 0000000..cd37769 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-number-runtime.js @@ -0,0 +1,42 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createError = Globalize._createError, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterType = Globalize._validateParameterType, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-number.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-number.js new file mode 100644 index 0000000..585bca0 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-number.js @@ -0,0 +1,49 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + objectExtend = Globalize._objectExtend, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterRange = Globalize._validateParameterRange, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural-runtime.js new file mode 100644 index 0000000..f89418b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural-runtime.js @@ -0,0 +1,38 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural.js new file mode 100644 index 0000000..953e358 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-plural.js @@ -0,0 +1,44 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time-runtime.js new file mode 100644 index 0000000..0241f86 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time-runtime.js @@ -0,0 +1,45 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time.js new file mode 100644 index 0000000..30b6b64 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-relative-time.js @@ -0,0 +1,47 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit-runtime.js new file mode 100644 index 0000000..0241f86 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit-runtime.js @@ -0,0 +1,45 @@ +/** + * Globalize Runtime v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize Runtime v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit.js new file mode 100644 index 0000000..690d92b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro-unit.js @@ -0,0 +1,44 @@ +/** + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypeString = Globalize._validateParameterTypeString; diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/intro.min.js b/StockManMVC/.bin/bower_components/globalize/src/build/intro.min.js new file mode 100644 index 0000000..d5d29a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/intro.min.js @@ -0,0 +1,4 @@ +/*! + * Globalize v@VERSION @DATE Released under the MIT license + * http://git.io/TrdQbw + */ diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/node-main.js b/StockManMVC/.bin/bower_components/globalize/src/build/node-main.js new file mode 100644 index 0000000..96450c8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/node-main.js @@ -0,0 +1,27 @@ +/*! + * Globalize v@VERSION + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE + */ + +// Core +module.exports = require( "./globalize" ); + +// Extent core with the following modules +require( "./globalize/message" ); +require( "./globalize/number" ); +require( "./globalize/plural" ); + +// Load after globalize/number +require( "./globalize/currency" ); +require( "./globalize/date" ); + +// Load after globalize/number and globalize/plural +require( "./globalize/relative-time" ); +require( "./globalize/unit" ); diff --git a/StockManMVC/.bin/bower_components/globalize/src/build/outro.js b/StockManMVC/.bin/bower_components/globalize/src/build/outro.js new file mode 100644 index 0000000..be4600a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/build/outro.js @@ -0,0 +1 @@ +})); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/create-error.js b/StockManMVC/.bin/bower_components/globalize/src/common/create-error.js new file mode 100644 index 0000000..aa16236 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/create-error.js @@ -0,0 +1,18 @@ +define([ + "./format-message", + "../util/object/extend" +], function( formatMessage, objectExtend ) { + +return function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/create-error/invalid-parameter-value.js b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/invalid-parameter-value.js new file mode 100644 index 0000000..b014c29 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/invalid-parameter-value.js @@ -0,0 +1,12 @@ +define([ + "../create-error" +], function( createError ) { + +return function( name, value ) { + return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", { + name: name, + value: value + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/create-error/plural-module-presence.js b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/plural-module-presence.js new file mode 100644 index 0000000..d7a9396 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/plural-module-presence.js @@ -0,0 +1,9 @@ +define([ + "../create-error" +], function( createError ) { + +return function() { + return createError( "E_MISSING_PLURAL_MODULE", "Plural module not loaded." ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/create-error/unsupported-feature.js b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/unsupported-feature.js new file mode 100644 index 0000000..27de1ed --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/create-error/unsupported-feature.js @@ -0,0 +1,11 @@ +define([ + "../create-error" +], function( createError ) { + +return function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/format-message.js b/StockManMVC/.bin/bower_components/globalize/src/common/format-message.js new file mode 100644 index 0000000..a3e825c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/format-message.js @@ -0,0 +1,34 @@ +define([ + "../util/to-string" +], function( toString ) { + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +return function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/runtime-bind.js b/StockManMVC/.bin/bower_components/globalize/src/common/runtime-bind.js new file mode 100644 index 0000000..fc66263 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/runtime-bind.js @@ -0,0 +1,29 @@ +define([ + "./runtime-key", + "../util/function-name" +], function( runtimeKey, functionName ) { + +return function( args, cldr, fn, runtimeArgs ) { + + var argsStr = JSON.stringify( args ), + fnName = functionName( fn ), + locale = cldr.locale; + + // If name of the function is not available, this is most likely due uglification, + // which most likely means we are in production, and runtimeBind here is not necessary. + if ( !fnName ) { + return fn; + } + + fn.runtimeKey = runtimeKey( fnName, locale, null, argsStr ); + + fn.generatorString = function() { + return "Globalize(\"" + locale + "\")." + fnName + "(" + argsStr.slice( 1, -1 ) + ")"; + }; + + fn.runtimeArgs = runtimeArgs; + + return fn; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/runtime-key.js b/StockManMVC/.bin/bower_components/globalize/src/common/runtime-key.js new file mode 100644 index 0000000..c1513aa --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/runtime-key.js @@ -0,0 +1,12 @@ +define([ + "../util/string/hash" +], function( stringHash ) { + +return function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate.js new file mode 100644 index 0000000..ace0342 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate.js @@ -0,0 +1,11 @@ +define([ + "./create-error" +], function( createError ) { + +return function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/cldr.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/cldr.js new file mode 100644 index 0000000..0a2feb3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/cldr.js @@ -0,0 +1,19 @@ +define([ + "../validate", + "../../util/always-array" +], function( validate, alwaysArray ) { + +return function( path, value, options ) { + var skipBoolean; + options = options || {}; + + skipBoolean = alwaysArray( options.skip ).some(function( pathRe ) { + return pathRe.test( path ); + }); + + validate( "E_MISSING_CLDR", "Missing required CLDR content `{path}`.", value || skipBoolean, { + path: path + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/default-locale.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/default-locale.js new file mode 100644 index 0000000..7e2379f --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/default-locale.js @@ -0,0 +1,10 @@ +define([ + "../validate" +], function( validate ) { + +return function( value ) { + validate( "E_DEFAULT_LOCALE_NOT_DEFINED", "Default locale has not been defined.", + value !== undefined, {} ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-bundle.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-bundle.js new file mode 100644 index 0000000..1c7ea3a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-bundle.js @@ -0,0 +1,16 @@ +define([ + "../validate" +], function( validate ) { + +return function( cldr ) { + validate( + "E_MISSING_MESSAGE_BUNDLE", + "Missing message bundle for locale `{locale}`.", + cldr.attributes.bundle && cldr.get( "globalize-messages/{bundle}" ) !== undefined, + { + locale: cldr.locale + } + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-presence.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-presence.js new file mode 100644 index 0000000..5f7fd93 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-presence.js @@ -0,0 +1,11 @@ +define([ + "../validate" +], function( validate ) { + +return function( path, value ) { + path = path.join( "/" ); + validate( "E_MISSING_MESSAGE", "Missing required message content `{path}`.", + value !== undefined, { path: path } ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-type.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-type.js new file mode 100644 index 0000000..185d2b4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/message-type.js @@ -0,0 +1,18 @@ +define([ + "../validate" +], function( validate ) { + +return function( path, value ) { + path = path.join( "/" ); + validate( + "E_INVALID_MESSAGE", + "Invalid message content `{path}`. {expected} expected.", + typeof value === "string", + { + expected: "a string", + path: path + } + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-presence.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-presence.js new file mode 100644 index 0000000..81bc2cc --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-presence.js @@ -0,0 +1,10 @@ +define([ + "../validate" +], function( validate ) { + +return function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-range.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-range.js new file mode 100644 index 0000000..df54782 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-range.js @@ -0,0 +1,30 @@ +define([ + "../validate" +], function( validate ) { + +/** + * range( value, name, minimum, maximum ) + * + * @value [Number]. + * + * @name [String] name of variable. + * + * @minimum [Number]. The lowest valid value, inclusive. + * + * @maximum [Number]. The greatest valid value, inclusive. + */ +return function( value, name, minimum, maximum ) { + validate( + "E_PAR_OUT_OF_RANGE", + "Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].", + value === undefined || value >= minimum && value <= maximum, + { + maximum: maximum, + minimum: minimum, + name: name, + value: value + } + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type.js new file mode 100644 index 0000000..6a45d17 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type.js @@ -0,0 +1,18 @@ +define([ + "../validate" +], function( validate ) { + +return function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/array.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/array.js new file mode 100644 index 0000000..9ee77a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/array.js @@ -0,0 +1,9 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( value, name, value === undefined || Array.isArray( value ), "Array" ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/currency.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/currency.js new file mode 100644 index 0000000..7497d39 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/currency.js @@ -0,0 +1,14 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" && ( /^[A-Za-z]{3}$/ ).test( value ), + "3-letter currency code string as defined by ISO 4217" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/date.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/date.js new file mode 100644 index 0000000..d29a1e0 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/date.js @@ -0,0 +1,9 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/locale.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/locale.js new file mode 100644 index 0000000..f1bb61b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/locale.js @@ -0,0 +1,15 @@ +define([ + "cldr", + "../parameter-type" +], function( Cldr, validateParameterType ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" || value instanceof Cldr, + "String or Cldr instance" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/message-variables.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/message-variables.js new file mode 100644 index 0000000..a0f0d5d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/message-variables.js @@ -0,0 +1,15 @@ +define([ + "../parameter-type", + "../../../util/is-plain-object" +], function( validateParameterType, isPlainObject ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/number.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/number.js new file mode 100644 index 0000000..c7dfb00 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/number.js @@ -0,0 +1,14 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plain-object.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plain-object.js new file mode 100644 index 0000000..6a57810 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plain-object.js @@ -0,0 +1,15 @@ +define([ + "../parameter-type", + "../../../util/is-plain-object" +], function( validateParameterType, isPlainObject ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ), + "Plain Object" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plural-type.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plural-type.js new file mode 100644 index 0000000..8991f19 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/plural-type.js @@ -0,0 +1,14 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || value === "cardinal" || value === "ordinal", + "String \"cardinal\" or \"ordinal\"" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/string.js b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/string.js new file mode 100644 index 0000000..c53512e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/common/validate/parameter-type/string.js @@ -0,0 +1,14 @@ +define([ + "../parameter-type" +], function( validateParameterType ) { + +return function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/core-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/core-runtime.js new file mode 100644 index 0000000..ed97bbc --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/core-runtime.js @@ -0,0 +1,44 @@ +define([ + "./common/create-error", + "./common/format-message", + "./common/runtime-key", + "./common/validate/parameter-presence", + "./common/validate/parameter-type", + "./common/validate/parameter-type/string", + "./util/regexp/escape", + "./util/string/pad" +], function( createError, formatMessage, runtimeKey, validateParameterPresence, + validateParameterType, validateParameterTypeString, regexpEscape, stringPad ) { + +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeString( locale, "locale" ); + + this._locale = locale; +} + +Globalize.locale = function( locale ) { + validateParameterTypeString( locale, "locale" ); + + if ( arguments.length ) { + this._locale = locale; + } + return this._locale; +}; + +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeKey = runtimeKey; +Globalize._stringPad = stringPad; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeString = validateParameterTypeString; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/core.js b/StockManMVC/.bin/bower_components/globalize/src/core.js new file mode 100644 index 0000000..28a7b34 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/core.js @@ -0,0 +1,110 @@ +define([ + "cldr", + "./common/create-error", + "./common/format-message", + "./common/runtime-bind", + "./common/validate", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-range", + "./common/validate/parameter-type", + "./common/validate/parameter-type/locale", + "./common/validate/parameter-type/plain-object", + "./util/always-array", + "./util/always-cldr", + "./util/is-plain-object", + "./util/object/extend", + "./util/regexp/escape", + "./util/string/pad", + + "cldr/event" +], function( Cldr, createError, formatMessage, runtimeBind, validate, validateCldr, + validateDefaultLocale, validateParameterPresence, validateParameterRange, validateParameterType, + validateParameterTypeLocale, validateParameterTypePlainObject, alwaysArray, alwaysCldr, + isPlainObject, objectExtend, regexpEscape, stringPad ) { + +function validateLikelySubtags( cldr ) { + cldr.once( "get", validateCldr ); + cldr.get( "supplemental/likelySubtags" ); +} + +/** + * [new] Globalize( locale|cldr ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Create a Globalize instance. + */ +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeLocale( locale, "locale" ); + + this.cldr = alwaysCldr( locale ); + + validateLikelySubtags( this.cldr ); +} + +/** + * Globalize.load( json, ... ) + * + * @json [JSON] + * + * Load resolved or unresolved cldr data. + * Somewhat equivalent to previous Globalize.addCultureInfo(...). + */ +Globalize.load = function() { + + // validations are delegated to Cldr.load(). + Cldr.load.apply( Cldr, arguments ); +}; + +/** + * Globalize.locale( [locale|cldr] ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Set default Cldr instance if locale or cldr argument is passed. + * + * Return the default Cldr instance. + */ +Globalize.locale = function( locale ) { + validateParameterTypeLocale( locale, "locale" ); + + if ( arguments.length ) { + this.cldr = alwaysCldr( locale ); + validateLikelySubtags( this.cldr ); + } + return this.cldr; +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._alwaysArray = alwaysArray; +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._isPlainObject = isPlainObject; +Globalize._objectExtend = objectExtend; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeBind = runtimeBind; +Globalize._stringPad = stringPad; +Globalize._validate = validate; +Globalize._validateCldr = validateCldr; +Globalize._validateDefaultLocale = validateDefaultLocale; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterRange = validateParameterRange; +Globalize._validateParameterTypePlainObject = validateParameterTypePlainObject; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/currency-runtime.js new file mode 100644 index 0000000..a372335 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency-runtime.js @@ -0,0 +1,32 @@ +define([ + "./common/runtime-key", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./core-runtime", + "./currency/formatter-fn", + "./currency/name-format", + + "./number-runtime" +], function( runtimeKey, validateParameterPresence, validateParameterTypeNumber, Globalize, + currencyFormatterFn, currencyNameFormat ) { + +Globalize._currencyFormatterFn = currencyFormatterFn; +Globalize._currencyNameFormat = currencyNameFormat; + +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + options = options || {}; + return Globalize[ runtimeKey( "currencyFormatter", this._locale, [ currency, options ] ) ]; +}; + +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency.js b/StockManMVC/.bin/bower_components/globalize/src/currency.js new file mode 100644 index 0000000..9777580 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency.js @@ -0,0 +1,146 @@ +define([ + "./core", + "./common/runtime-bind", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/currency", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/plain-object", + "./currency/code-properties", + "./currency/formatter-fn", + "./currency/name-properties", + "./currency/symbol-properties", + "./util/object/omit", + + "./number", + "cldr/event", + "cldr/supplemental" +], function( Globalize, runtimeBind, validateCldr, validateDefaultLocale, validateParameterPresence, + validateParameterTypeCurrency, validateParameterTypeNumber, validateParameterTypePlainObject, + currencyCodeProperties, currencyFormatterFn, currencyNameProperties, currencySymbolProperties, + objectOmit ) { + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ /supplemental\/currencyData\/fractions\/[A-Za-z]{3}$/ ] + }); +} + +/** + * .currencyFormatter( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: + * - style: [String] "symbol" (default), "accounting", "code" or "name". + * - see also number/format options. + * + * Return a function that formats a currency according to the given options and default/instance + * locale. + */ +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn, style; + + validateParameterPresence( currency, "currency" ); + validateParameterTypeCurrency( currency, "currency" ); + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || {}; + + args = [ currency, options ]; + style = options.style || "symbol"; + + validateDefaultLocale( cldr ); + + // Get properties given style ("symbol" default, "code" or "name"). + cldr.on( "get", validateRequiredCldr ); + properties = ({ + accounting: currencySymbolProperties, + code: currencyCodeProperties, + name: currencyNameProperties, + symbol: currencySymbolProperties + }[ style ] )( currency, cldr, options ); + cldr.off( "get", validateRequiredCldr ); + + // options = options minus style, plus raw pattern. + options = objectOmit( options, "style" ); + options.raw = properties.pattern; + + // Return formatter when style is "symbol" or "accounting". + if ( style === "symbol" || style === "accounting" ) { + numberFormatter = this.numberFormatter( options ); + + returnFn = currencyFormatterFn( numberFormatter ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter ] ); + + // Return formatter when style is "code" or "name". + } else { + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = currencyFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + } + + return returnFn; +}; + +/** + * .currencyParser( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Return the currency parser according to the given options and the default/instance locale. + */ +Globalize.currencyParser = +Globalize.prototype.currencyParser = function( /* currency, options */ ) { + + // TODO implement parser. + +}; + +/** + * .formatCurrency( value, currency [, options] ) + * + * @value [Number] number to be formatted. + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Format a currency according to the given options and the default/instance locale. + */ +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +/** + * .parseCurrency( value, currency [, options] ) + * + * @value [String] + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: See currencyFormatter. + * + * Return the parsed currency or NaN when value is invalid. + */ +Globalize.parseCurrency = +Globalize.prototype.parseCurrency = function( /* value, currency, options */ ) { +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/code-properties.js b/StockManMVC/.bin/bower_components/globalize/src/currency/code-properties.js new file mode 100644 index 0000000..9239b52 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/code-properties.js @@ -0,0 +1,26 @@ +define([ + "./supplemental-override", + "./unit-patterns", + "../number/pattern" +], function( currencySupplementalOverride, currencyUnitPatterns, numberPattern ) { + +/** + * codeProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +return function( currency, cldr ) { + var pattern = numberPattern( "decimal", cldr ); + + // The number of decimal places and the rounding for each currency is not locale-specific. Those + // values overridden by Supplemental Currency Data. + pattern = currencySupplementalOverride( currency, pattern, cldr ); + + return { + currency: currency, + pattern: pattern, + unitPatterns: currencyUnitPatterns( cldr ) + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/currency/formatter-fn.js new file mode 100644 index 0000000..453f485 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/formatter-fn.js @@ -0,0 +1,32 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/number", + "./name-format" +], function( validateParameterPresence, validateParameterTypeNumber, currencyNameFormat ) { + +return function( numberFormatter, pluralGenerator, properties ) { + var fn; + + // Return formatter when style is "code" or "name". + if ( pluralGenerator && properties ) { + fn = function currencyFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( + numberFormatter( value ), + pluralGenerator( value ), + properties + ); + }; + + // Return formatter when style is "symbol" or "accounting". + } else { + fn = function currencyFormatter( value ) { + return numberFormatter( value ); + }; + } + + return fn; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/name-format.js b/StockManMVC/.bin/bower_components/globalize/src/currency/name-format.js new file mode 100644 index 0000000..4ad17b9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/name-format.js @@ -0,0 +1,25 @@ +define([ + "../common/format-message" +], function( formatMessage ) { + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +return function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/name-properties.js b/StockManMVC/.bin/bower_components/globalize/src/currency/name-properties.js new file mode 100644 index 0000000..b52a7a4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/name-properties.js @@ -0,0 +1,22 @@ +define([ + "./code-properties", + "../util/object/filter" +], function( currencyCodeProperties, objectFilter ) { + +/** + * nameProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +return function( currency, cldr ) { + var properties = currencyCodeProperties( currency, cldr ); + + properties.displayNames = objectFilter( cldr.main([ + "numbers/currencies", + currency + ]), /^displayName/ ); + + return properties; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/supplemental-override.js b/StockManMVC/.bin/bower_components/globalize/src/currency/supplemental-override.js new file mode 100644 index 0000000..73fbaf5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/supplemental-override.js @@ -0,0 +1,25 @@ +define([ + "../util/string/pad" +], function( stringPad ) { + +/** + * supplementalOverride( currency, pattern, cldr ) + * + * Return pattern with fraction digits overriden by supplemental currency data. + */ +return function( currency, pattern, cldr ) { + var digits, + fraction = "", + fractionData = cldr.supplemental([ "currencyData/fractions", currency ]) || + cldr.supplemental( "currencyData/fractions/DEFAULT" ); + + digits = +fractionData._digits; + + if ( digits ) { + fraction = "." + stringPad( "0", digits ).slice( 0, -1 ) + fractionData._rounding; + } + + return pattern.replace( /\.(#+|0*[0-9]|0+[0-9]?)/g, fraction ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/symbol-properties.js b/StockManMVC/.bin/bower_components/globalize/src/currency/symbol-properties.js new file mode 100644 index 0000000..93a9a51 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/symbol-properties.js @@ -0,0 +1,74 @@ +define([ + "./supplemental-override", + "../number/numbering-system", + "../util/regexp/not-s" +], function( currencySupplementalOverride, numberNumberingSystem, regexpNotS ) { + +/** + * symbolProperties( currency, cldr ) + * + * Return pattern replacing `¤` with the appropriate currency symbol literal. + */ +return function( currency, cldr, options ) { + var currencySpacing, pattern, + regexp = { + "[:digit:]": /\d/, + "[:^S:]": regexpNotS + }, + symbol = cldr.main([ + "numbers/currencies", + currency, + "symbol" + ]); + + currencySpacing = [ "beforeCurrency", "afterCurrency" ].map(function( position ) { + return cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + "currencySpacing", + position + ]); + }); + + pattern = cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + options.style === "accounting" ? "accounting" : "standard" + ]); + + pattern = + + // The number of decimal places and the rounding for each currency is not locale-specific. + // Those values are overridden by Supplemental Currency Data. + currencySupplementalOverride( currency, pattern, cldr ) + + // Replace "¤" (\u00A4) with the appropriate symbol literal. + .split( ";" ).map(function( pattern ) { + + return pattern.split( "\u00A4" ).map(function( part, i ) { + var currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ], + surroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ], + insertBetween = ""; + + // For currencyMatch and surroundingMatch definitions, read [1]. + // When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency. + // 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies + currencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) ); + surroundingMatch = surroundingMatch.test( + part.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, "0" ) + ); + + if ( currencyMatch && part && surroundingMatch ) { + insertBetween = currencySpacing[ i ].insertBetween; + } + + return ( i ? insertBetween : "" ) + part + ( i ? "" : insertBetween ); + }).join( "'" + symbol + "'" ); + }).join( ";" ); + + return { + pattern: pattern + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/currency/unit-patterns.js b/StockManMVC/.bin/bower_components/globalize/src/currency/unit-patterns.js new file mode 100644 index 0000000..3a90861 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/currency/unit-patterns.js @@ -0,0 +1,13 @@ +define([ + "../util/object/filter", + "../number/numbering-system" +], function( objectFilter, numberNumberingSystem ) { + +return function( cldr ) { + return objectFilter( cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ) + ]), /^unitPattern/ ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/date-runtime.js new file mode 100644 index 0000000..db908de --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date-runtime.js @@ -0,0 +1,55 @@ +define([ + "./common/runtime-key", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/date", + "./common/validate/parameter-type/string", + "./core-runtime", + "./date/format", + "./date/formatter-fn", + "./date/parse", + "./date/parser-fn", + "./date/tokenizer", + + "./number-runtime" +], function( runtimeKey, validateParameterPresence, validateParameterTypeDate, + validateParameterTypeString, Globalize, dateFormat, dateFormatterFn, dateParse, dateParserFn, + dateTokenizer ) { + +Globalize._dateFormatterFn = dateFormatterFn; +Globalize._dateParserFn = dateParserFn; +Globalize._dateFormat = dateFormat; +Globalize._dateParser = dateParse; +Globalize._dateTokenizer = dateTokenizer; +Globalize._validateParameterTypeDate = validateParameterTypeDate; + +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date.js b/StockManMVC/.bin/bower_components/globalize/src/date.js new file mode 100644 index 0000000..98500c9 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date.js @@ -0,0 +1,158 @@ +define([ + "cldr", + "./common/runtime-bind", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/date", + "./common/validate/parameter-type/plain-object", + "./common/validate/parameter-type/string", + "./core", + "./date/expand-pattern", + "./date/formatter-fn", + "./date/format-properties", + "./date/parser-fn", + "./date/parse-properties", + "./date/tokenizer-properties", + + "cldr/event", + "cldr/supplemental", + "./number" +], function( Cldr, runtimeBind, validateCldr, validateDefaultLocale, validateParameterPresence, + validateParameterTypeDate, validateParameterTypePlainObject, validateParameterTypeString, + Globalize, dateExpandPattern, dateFormatterFn, dateFormatProperties, dateParserFn, + dateParseProperties, dateTokenizerProperties ) { + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ + /dates\/calendars\/gregorian\/dateTimeFormats\/availableFormats/, + /dates\/calendars\/gregorian\/days\/.*\/short/, + /supplemental\/timeData\/(?!001)/, + /supplemental\/weekData\/(?!001)/ + ] + }); +} + +/** + * .dateFormatter( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a date formatter function (of the form below) according to the given options and the + * default/instance locale. + * + * fn( value ) + * + * @value [Date] + * + * Return a function that formats a date according to the given `format` and the default/instance + * locale. + */ +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + var args, cldr, numberFormatters, pad, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + properties = dateFormatProperties( pattern, cldr ); + cldr.off( "get", validateRequiredCldr ); + + // Create needed number formatters. + numberFormatters = properties.numberFormatters; + delete properties.numberFormatters; + for ( pad in numberFormatters ) { + numberFormatters[ pad ] = this.numberFormatter({ + raw: numberFormatters[ pad ] + }); + } + + returnFn = dateFormatterFn( numberFormatters, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatters, properties ] ); + + return returnFn; +}; + +/** + * .dateParser( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a function that parses a string date according to the given `formats` and the + * default/instance locale. + */ +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + var args, cldr, numberParser, parseProperties, pattern, tokenizerProperties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + tokenizerProperties = dateTokenizerProperties( pattern, cldr ); + parseProperties = dateParseProperties( cldr ); + cldr.off( "get", validateRequiredCldr ); + + numberParser = this.numberParser({ raw: "0" }); + + returnFn = dateParserFn( numberParser, parseProperties, tokenizerProperties ); + + runtimeBind( args, cldr, returnFn, [ numberParser, parseProperties, tokenizerProperties ] ); + + return returnFn; +}; + +/** + * .formatDate( value, options ) + * + * @value [Date] + * + * @options [Object] see date/expand_pattern for more info. + * + * Formats a date or number according to the given options string and the default/instance locale. + */ +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +/** + * .parseDate( value, options ) + * + * @value [String] + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a Date instance or null. + */ +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/day-of-week.js b/StockManMVC/.bin/bower_components/globalize/src/date/day-of-week.js new file mode 100644 index 0000000..7c70c20 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/day-of-week.js @@ -0,0 +1,20 @@ +define(function() { + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +return function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/day-of-year.js b/StockManMVC/.bin/bower_components/globalize/src/date/day-of-year.js new file mode 100644 index 0000000..5158eae --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/day-of-year.js @@ -0,0 +1,15 @@ +define([ + "./distance-in-days", + "./start-of" +], function( dateDistanceInDays, dateStartOf ) { + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +return function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/distance-in-days.js b/StockManMVC/.bin/bower_components/globalize/src/date/distance-in-days.js new file mode 100644 index 0000000..1f1f265 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/distance-in-days.js @@ -0,0 +1,13 @@ +define(function() { + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +return function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/expand-pattern.js b/StockManMVC/.bin/bower_components/globalize/src/date/expand-pattern.js new file mode 100644 index 0000000..e153ae2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/expand-pattern.js @@ -0,0 +1,103 @@ +define([ + "../common/format-message", + "../common/create-error/invalid-parameter-value" +], function( formatMessage, createErrorInvalidParameterValue ) { + +/** + * expandPattern( options, cldr ) + * + * @options [Object] if String, it's considered a skeleton. Object accepts: + * - skeleton: [String] lookup availableFormat; + * - date: [String] ( "full" | "long" | "medium" | "short" ); + * - time: [String] ( "full" | "long" | "medium" | "short" ); + * - datetime: [String] ( "full" | "long" | "medium" | "short" ); + * - raw: [String] For more info see datetime/format.js. + * + * @cldr [Cldr instance]. + * + * Return the corresponding pattern. + * Eg for "en": + * - "GyMMMd" returns "MMM d, y G"; + * - { skeleton: "GyMMMd" } returns "MMM d, y G"; + * - { date: "full" } returns "EEEE, MMMM d, y"; + * - { time: "full" } returns "h:mm:ss a zzzz"; + * - { datetime: "full" } returns "EEEE, MMMM d, y 'at' h:mm:ss a zzzz"; + * - { raw: "dd/mm" } returns "dd/mm"; + */ + +return function( options, cldr ) { + var dateSkeleton, result, skeleton, timeSkeleton, type; + + function combineDateTime( type, datePattern, timePattern ) { + return formatMessage( + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats", + type + ]), + [ timePattern, datePattern ] + ); + } + + switch ( true ) { + case "skeleton" in options: + skeleton = options.skeleton; + result = cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + skeleton + ]); + if ( !result ) { + timeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ]; + dateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ]; + if ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) { + type = "full"; + } else if ( /MMMM/g.test( dateSkeleton ) ) { + type = "long"; + } else if ( /MMM/g.test( dateSkeleton ) || /LLL/g.test( dateSkeleton ) ) { + type = "medium"; + } else { + type = "short"; + } + result = combineDateTime( type, + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + dateSkeleton + ]), + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + timeSkeleton + ]) + ); + } + break; + + case "date" in options: + case "time" in options: + result = cldr.main([ + "dates/calendars/gregorian", + "date" in options ? "dateFormats" : "timeFormats", + ( options.date || options.time ) + ]); + break; + + case "datetime" in options: + result = combineDateTime( options.datetime, + cldr.main([ "dates/calendars/gregorian/dateFormats", options.datetime ]), + cldr.main([ "dates/calendars/gregorian/timeFormats", options.datetime ]) + ); + break; + + case "raw" in options: + result = options.raw; + break; + + default: + throw createErrorInvalidParameterValue({ + name: "options", + value: options + }); + } + + return result; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/first-day-of-week.js b/StockManMVC/.bin/bower_components/globalize/src/date/first-day-of-week.js new file mode 100644 index 0000000..44490b4 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/first-day-of-week.js @@ -0,0 +1,12 @@ +define([ + "./week-days" +], function( dateWeekDays ) { + +/** + * firstDayOfWeek + */ +return function( cldr ) { + return dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/format-properties.js b/StockManMVC/.bin/bower_components/globalize/src/date/format-properties.js new file mode 100644 index 0000000..6c42a9d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/format-properties.js @@ -0,0 +1,242 @@ +define([ + "./first-day-of-week", + "./pattern-re", + "../common/create-error/unsupported-feature", + "../number/symbol", + "../util/string/pad" +], function( dateFirstDayOfWeek, datePatternRe, createErrorUnsupportedFeature, numberSymbol, + stringPad ) { + +/** + * properties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + * + * @cldr [Cldr instance]. + * + * Return the properties given the pattern and cldr. + * + * TODO Support other calendar types. + */ +return function( pattern, cldr ) { + var properties = { + numberFormatters: {}, + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function setNumberFormatterPattern( pad ) { + properties.numberFormatters[ pad ] = stringPad( "", pad ); + } + + pattern.replace( datePatternRe, function( current ) { + var formatNumber, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + properties.preferredTime = chr = cldr.supplemental.timeData.preferred(); + } + + // ZZZZ: same as "OOOO". + if ( chr === "Z" && length === 4 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + properties.eras = cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + + // Plain year. + formatNumber = true; + break; + + case "Y": + + // Year in "Week of Year" + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + if ( !properties.quarters ) { + properties.quarters = {}; + } + if ( !properties.quarters[ chr ] ) { + properties.quarters[ chr ] = {}; + } + properties.quarters[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Month + case "M": + case "L": + if ( length > 2 ) { + if ( !properties.months ) { + properties.months = {}; + } + if ( !properties.months[ chr ] ) { + properties.months[ chr ] = {}; + } + properties.months[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Week - Week of Year (w) or Week of Month (W). + case "w": + case "W": + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + // Day + case "d": + case "D": + case "F": + formatNumber = true; + break; + + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + properties.firstDay = dateFirstDayOfWeek( cldr ); + formatNumber = true; + break; + } + + /* falls through */ + case "E": + if ( !properties.days ) { + properties.days = {}; + } + if ( !properties.days[ chr ] ) { + properties.days[ chr ] = {}; + } + if ( length === 6 ) { + + // If short day names are not explicitly specified, abbreviated day names are + // used instead. + // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + // http://unicode.org/cldr/trac/ticket/6790 + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "abbreviated" + ]); + } else { + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + properties.dayPeriods = cldr.main( + "dates/calendars/gregorian/dayPeriods/format/wide" + ); + break; + + // Hour + case "h": // 1-12 + case "H": // 0-23 + case "K": // 0-11 + case "k": // 1-24 + + // Minute + case "m": + + // Second + case "s": + case "S": + case "A": + formatNumber = true; + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + properties.gmtFormat = cldr.main( "dates/timeZoneNames/gmtFormat" ); + properties.gmtZeroFormat = cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" ); + + /* falls through */ + case "Z": + case "X": + case "x": + setNumberFormatterPattern( 1 ); + setNumberFormatterPattern( 2 ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + + if ( formatNumber ) { + setNumberFormatterPattern( length ); + } + }); + + return properties; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/format.js b/StockManMVC/.bin/bower_components/globalize/src/date/format.js new file mode 100644 index 0000000..2fd827e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/format.js @@ -0,0 +1,270 @@ +define([ + "./day-of-week", + "./day-of-year", + "./milliseconds-in-day", + "./pattern-re", + "./start-of", + "./timezone-hour-format", + "./week-days" +], function( dateDayOfWeek, dateDayOfYear, dateMillisecondsInDay, datePatternRe, dateStartOf, + dateTimezoneHourFormat, dateWeekDays ) { + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +return function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/date/formatter-fn.js new file mode 100644 index 0000000..7076422 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/formatter-fn.js @@ -0,0 +1,17 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/date", + "./format" +], function( validateParameterPresence, validateParameterTypeDate, dateFormat ) { + +return function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return dateFormat( value, numberFormatters, properties ); + }; + +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/is-leap-year.js b/StockManMVC/.bin/bower_components/globalize/src/date/is-leap-year.js new file mode 100644 index 0000000..86ee8be --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/is-leap-year.js @@ -0,0 +1,14 @@ +define(function() { + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +return function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/last-day-of-month.js b/StockManMVC/.bin/bower_components/globalize/src/date/last-day-of-month.js new file mode 100644 index 0000000..c5208b7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/last-day-of-month.js @@ -0,0 +1,14 @@ +define(function() { + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +return function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/milliseconds-in-day.js b/StockManMVC/.bin/bower_components/globalize/src/date/milliseconds-in-day.js new file mode 100644 index 0000000..99d60e7 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/milliseconds-in-day.js @@ -0,0 +1,14 @@ +define([ + "./start-of" +], function( dateStartOf ) { + +/** + * millisecondsInDay + */ +return function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/parse-properties.js b/StockManMVC/.bin/bower_components/globalize/src/date/parse-properties.js new file mode 100644 index 0000000..a5db8d6 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/parse-properties.js @@ -0,0 +1,16 @@ +define(function() { + +/** + * parseProperties( cldr ) + * + * @cldr [Cldr instance]. + * + * Return parser properties. + */ +return function( cldr ) { + return { + preferredTimeData: cldr.supplemental.timeData.preferred() + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/parse.js b/StockManMVC/.bin/bower_components/globalize/src/date/parse.js new file mode 100644 index 0000000..64f61b3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/parse.js @@ -0,0 +1,287 @@ +define([ + "./is-leap-year", + "./last-day-of-month", + "./pattern-re", + "./start-of", + "../common/create-error/unsupported-feature", + "../util/date/set-month", + "../util/out-of-range" +], function( dateIsLeapYear, dateLastDayOfMonth, datePatternRe, dateStartOf, + createErrorUnsupportedFeature, dateSetMonth, outOfRange ) { + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +return function( value, tokens, properties ) { + var amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + + // Setting the month later so that we have the correct year and can determine + // the correct last day of February in case of leap year. + month = value; + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( month !== undefined ) { + dateSetMonth( date, month - 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/parser-fn.js b/StockManMVC/.bin/bower_components/globalize/src/date/parser-fn.js new file mode 100644 index 0000000..3619d3f --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/parser-fn.js @@ -0,0 +1,20 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/string", + "./parse", + "./tokenizer" +], function( validateParameterPresence, validateParameterTypeString, dateParse, dateTokenizer ) { + +return function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/pattern-re.js b/StockManMVC/.bin/bower_components/globalize/src/date/pattern-re.js new file mode 100644 index 0000000..0fe8638 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/pattern-re.js @@ -0,0 +1,5 @@ +define(function() { + +return ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/start-of.js b/StockManMVC/.bin/bower_components/globalize/src/date/start-of.js new file mode 100644 index 0000000..16b5dce --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/start-of.js @@ -0,0 +1,36 @@ +define(function() { + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +return function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/timezone-hour-format.js b/StockManMVC/.bin/bower_components/globalize/src/date/timezone-hour-format.js new file mode 100644 index 0000000..d47390b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/timezone-hour-format.js @@ -0,0 +1,47 @@ +define([ + "../util/string/pad" +], function( stringPad ) { + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +return function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer-properties.js b/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer-properties.js new file mode 100644 index 0000000..556641c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer-properties.js @@ -0,0 +1,155 @@ +define([ + "./pattern-re", + "../common/create-error/unsupported-feature", + "../number/symbol" +], function( datePatternRe, createErrorUnsupportedFeature, numberSymbol ) { + +/** + * tokenizerProperties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * + * @cldr [Cldr instance]. + * + * Return Object with data that will be used by tokenizer. + */ +return function( pattern, cldr ) { + var properties = { + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function populateProperties( path, value ) { + + // The `dates` and `calendars` trim's purpose is to reduce properties' key size only. + properties[ path.replace( /^.*\/dates\//, "" ).replace( /calendars\//, "" ) ] = value; + } + + cldr.on( "get", populateProperties ); + + pattern.match( datePatternRe ).forEach(function( current ) { + var chr, length; + + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" && length < 5 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Day + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + + // lookup for length >=3. + if ( length <= 2 ) { + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + cldr.main([ + "dates/calendars/gregorian/dayPeriods/format/wide" + ]); + break; + + // Zone + case "z": + case "O": + cldr.main( "dates/timeZoneNames/gmtFormat" ); + cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + cldr.main( "dates/timeZoneNames/hourFormat" ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + }); + + cldr.off( "get", populateProperties ); + + return properties; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer.js b/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer.js new file mode 100644 index 0000000..5cfc9a1 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/tokenizer.js @@ -0,0 +1,411 @@ +define([ + "./pattern-re", + "../util/regexp/escape", + "../util/regexp/n" +], function( datePatternRe, regexpEscape, regexpN ) { + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +return function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/date/week-days.js b/StockManMVC/.bin/bower_components/globalize/src/date/week-days.js new file mode 100644 index 0000000..2e0d4db --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/date/week-days.js @@ -0,0 +1,5 @@ +define(function() { + +return [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/message-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/message-runtime.js new file mode 100644 index 0000000..6880351 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/message-runtime.js @@ -0,0 +1,26 @@ +define([ + "./common/runtime-key", + "./common/validate/parameter-type/message-variables", + "./core-runtime", + "./message/formatter-fn" +], function( runtimeKey, validateParameterTypeMessageVariables, Globalize, messageFormatterFn ) { + +Globalize._messageFormatterFn = messageFormatterFn; +Globalize._messageFormat = {}; +Globalize._validateParameterTypeMessageVariables = validateParameterTypeMessageVariables; + +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( /* path */ ) { + return Globalize[ + runtimeKey( "messageFormatter", this._locale, [].slice.call( arguments, 0 ) ) + ]; +}; + +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, [].slice.call( arguments, 1 ) ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/message.js b/StockManMVC/.bin/bower_components/globalize/src/message.js new file mode 100644 index 0000000..b5c4e46 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/message.js @@ -0,0 +1,116 @@ +define([ + "cldr", + "messageformat", + "./common/create-error", + "./common/create-error/plural-module-presence", + "./common/runtime-bind", + "./common/validate/default-locale", + "./common/validate/message-bundle", + "./common/validate/message-presence", + "./common/validate/message-type", + "./common/validate/parameter-presence", + "./common/validate/parameter-type", + "./common/validate/parameter-type/plain-object", + "./core", + "./message/formatter-fn", + "./message/formatter-runtime-bind", + "./util/always-array", + + "cldr/event" +], function( Cldr, MessageFormat, createError, createErrorPluralModulePresence, runtimeBind, + validateDefaultLocale, validateMessageBundle, validateMessagePresence, validateMessageType, + validateParameterPresence, validateParameterType, validateParameterTypePlainObject, Globalize, + messageFormatterFn, messageFormatterRuntimeBind, alwaysArray ) { + +var slice = [].slice; + +/** + * .loadMessages( json ) + * + * @json [JSON] + * + * Load translation data. + */ +Globalize.loadMessages = function( json ) { + var locale, + customData = { + "globalize-messages": json, + "main": {} + }; + + validateParameterPresence( json, "json" ); + validateParameterTypePlainObject( json, "json" ); + + // Set available bundles by populating customData main dataset. + for ( locale in json ) { + if ( json.hasOwnProperty( locale ) ) { + customData.main[ locale ] = {}; + } + } + + Cldr.load( customData ); +}; + +/** + * .messageFormatter( path ) + * + * @path [String or Array] + * + * Format a message given its path. + */ +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( path ) { + var cldr, formatter, message, pluralGenerator, returnFn, + args = slice.call( arguments, 0 ); + + validateParameterPresence( path, "path" ); + validateParameterType( path, "path", typeof path === "string" || Array.isArray( path ), + "a String nor an Array" ); + + path = alwaysArray( path ); + cldr = this.cldr; + + validateDefaultLocale( cldr ); + validateMessageBundle( cldr ); + + message = cldr.get( [ "globalize-messages/{bundle}" ].concat( path ) ); + validateMessagePresence( path, message ); + + // If message is an Array, concatenate it. + if ( Array.isArray( message ) ) { + message = message.join( " " ); + } + validateMessageType( path, message ); + + // Is plural module present? Yes, use its generator. Nope, use an error generator. + pluralGenerator = this.plural !== undefined ? + this.pluralGenerator() : + createErrorPluralModulePresence; + + formatter = new MessageFormat( cldr.locale, pluralGenerator ).compile( message ); + + returnFn = messageFormatterFn( formatter ); + + runtimeBind( args, cldr, returnFn, + [ messageFormatterRuntimeBind( cldr, formatter ), pluralGenerator ] ); + + return returnFn; +}; + +/** + * .formatMessage( path [, variables] ) + * + * @path [String or Array] + * + * @variables [Number, String, Array or Object] + * + * Format a message given its path. + */ +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/message/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/message/formatter-fn.js new file mode 100644 index 0000000..720f481 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/message/formatter-fn.js @@ -0,0 +1,15 @@ +define([ + "../common/validate/parameter-type/message-variables" +], function( validateParameterTypeMessageVariables ) { + +return function( formatter ) { + return function messageFormatter( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = [].slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/message/formatter-runtime-bind.js b/StockManMVC/.bin/bower_components/globalize/src/message/formatter-runtime-bind.js new file mode 100644 index 0000000..c2b285d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/message/formatter-runtime-bind.js @@ -0,0 +1,46 @@ +define(function() { + +return function( cldr, messageformatter ) { + var locale = cldr.locale, + origToString = messageformatter.toString; + + messageformatter.toString = function() { + var argNames, argValues, output, + args = {}; + + // Properly adjust SlexAxton/messageformat.js compiled variables with Globalize variables: + output = origToString.call( messageformatter ); + + if ( /number\(/.test( output ) ) { + args.number = "messageFormat.number"; + } + + if ( /plural\(/.test( output ) ) { + args.plural = "messageFormat.plural"; + } + + if ( /select\(/.test( output ) ) { + args.select = "messageFormat.select"; + } + + output.replace( /pluralFuncs(\[([^\]]+)\]|\.([a-zA-Z]+))/, function( match ) { + args.pluralFuncs = "{" + + "\"" + locale + "\": Globalize(\"" + locale + "\").pluralGenerator()" + + "}"; + return match; + }); + + argNames = Object.keys( args ).join( ", " ); + argValues = Object.keys( args ).map(function( key ) { + return args[ key ]; + }).join( ", " ); + + return "(function( " + argNames + " ) {\n" + + " return " + output + "\n" + + "})(" + argValues + ")"; + }; + + return messageformatter; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/number-runtime.js new file mode 100644 index 0000000..b57109b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number-runtime.js @@ -0,0 +1,57 @@ +define([ + "./common/runtime-key", + "./common/create-error/unsupported-feature", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/string", + "./core-runtime", + "./number/format", + "./number/formatter-fn", + "./number/parse", + "./number/parser-fn", + "./util/number/round" +], function( runtimeKey, createErrorUnsupportedFeature, validateParameterPresence, + validateParameterTypeNumber, validateParameterTypeString, Globalize, numberFormat, + numberFormatterFn, numberParse, numberParserFn, numberRound ) { + +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberFormat = numberFormat; +Globalize._numberFormatterFn = numberFormatterFn; +Globalize._numberParse = numberParse; +Globalize._numberParserFn = numberParserFn; +Globalize._numberRound = numberRound; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number.js b/StockManMVC/.bin/bower_components/globalize/src/number.js new file mode 100644 index 0000000..40b009a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number.js @@ -0,0 +1,186 @@ +define([ + "./core", + "./common/create-error/unsupported-feature", + "./common/runtime-bind", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-range", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/plain-object", + "./common/validate/parameter-type/string", + "./number/formatter-fn", + "./number/format-properties", + "./number/numbering-system", + "./number/parser-fn", + "./number/parse-properties", + "./number/pattern", + "./number/symbol", + "./util/string/pad", + + "cldr/event", + "cldr/supplemental" +], function( Globalize, createErrorUnsupportedFeature, runtimeBind, validateCldr, + validateDefaultLocale, validateParameterPresence, validateParameterRange, + validateParameterTypeNumber, validateParameterTypePlainObject, validateParameterTypeString, + numberFormatterFn, numberFormatProperties, numberNumberingSystem, numberParserFn, + numberParseProperties, numberPattern, numberSymbol, stringPad ) { + +function validateDigits( properties ) { + var minimumIntegerDigits = properties[ 2 ], + minimumFractionDigits = properties[ 3 ], + maximumFractionDigits = properties[ 4 ], + minimumSignificantDigits = properties[ 5 ], + maximumSignificantDigits = properties[ 6 ]; + + // Validate significant digit format properties + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + validateParameterRange( minimumSignificantDigits, "minimumSignificantDigits", 1, 21 ); + validateParameterRange( maximumSignificantDigits, "maximumSignificantDigits", + minimumSignificantDigits, 21 ); + + } else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) { + throw new Error( "Neither or both the minimum and maximum significant digits must be " + + "present" ); + + // Validate integer and fractional format + } else { + validateParameterRange( minimumIntegerDigits, "minimumIntegerDigits", 1, 21 ); + validateParameterRange( minimumFractionDigits, "minimumFractionDigits", 0, 20 ); + validateParameterRange( maximumFractionDigits, "maximumFractionDigits", + minimumFractionDigits, 20 ); + } +} + +/** + * .numberFormatter( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * - see also number/format options. + * + * Return a function that formats a number according to the given options and default/instance + * locale. + */ +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberFormatProperties( pattern, cldr, options ); + + cldr.off( "get", validateCldr ); + + validateDigits( properties ); + + returnFn = numberFormatterFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .numberParser( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * + * Return the number parser according to the default/instance locale. + */ +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberParseProperties( pattern, cldr ); + + cldr.off( "get", validateCldr ); + + returnFn = numberParserFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .formatNumber( value [, options] ) + * + * @value [Number] number to be formatted. + * + * @options [Object]: see number/format-properties. + * + * Format a number according to the given options and default/instance locale. + */ +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +/** + * .parseNumber( value [, options] ) + * + * @value [String] + * + * @options [Object]: See numberParser(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + */ +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberNumberingSystem = numberNumberingSystem; +Globalize._numberPattern = numberPattern; +Globalize._numberSymbol = numberSymbol; +Globalize._stringPad = stringPad; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/format-properties.js b/StockManMVC/.bin/bower_components/globalize/src/number/format-properties.js new file mode 100644 index 0000000..f963669 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/format-properties.js @@ -0,0 +1,104 @@ +define([ + "./numbering-system-digits-map", + "./pattern-properties", + "./symbol", + "./symbol/map", + "./symbol/name", + "../util/number/round" +], function( numberNumberingSystemDigitsMap, numberPatternProperties, numberSymbol, numberSymbolMap, + numberSymbolName, numberRound ) { + +/** + * formatProperties( pattern, cldr [, options] ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * @options [Object]: + * - minimumIntegerDigits [Number] + * - minimumFractionDigits, maximumFractionDigits [Number] + * - minimumSignificantDigits, maximumSignificantDigits [Number] + * - round [String] "ceil", "floor", "round" (default), or "truncate". + * - useGrouping [Boolean] default true. + * + * Return the processed properties that will be used in number/format. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +return function( pattern, cldr, options ) { + var negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern, + roundFn, properties; + + function getOptions( attribute, propertyIndex ) { + if ( attribute in options ) { + properties[ propertyIndex ] = options[ attribute ]; + } + } + + options = options || {}; + pattern = pattern.split( ";" ); + + positivePattern = pattern[ 0 ]; + + negativePattern = pattern[ 1 ] || "-" + positivePattern; + negativeProperties = numberPatternProperties( negativePattern ); + negativePrefix = negativeProperties[ 0 ]; + negativeSuffix = negativeProperties[ 10 ]; + + // Have runtime code to refer to numberRound() instead of including it explicitly. + roundFn = numberRound( options.round ); + roundFn.generatorString = function() { + return "numberRound(" + ( options.round ? "\"" + options.round + "\"" : "" ) + ")"; + }; + + properties = numberPatternProperties( positivePattern ).concat([ + positivePattern, + negativePrefix + positivePattern + negativeSuffix, + negativePrefix, + negativeSuffix, + roundFn, + numberSymbol( "infinity", cldr ), + numberSymbol( "nan", cldr ), + numberSymbolMap( cldr ), + numberNumberingSystemDigitsMap( cldr ) + ]); + + getOptions( "minimumIntegerDigits", 2 ); + getOptions( "minimumFractionDigits", 3 ); + getOptions( "maximumFractionDigits", 4 ); + getOptions( "minimumSignificantDigits", 5 ); + getOptions( "maximumSignificantDigits", 6 ); + + // Grouping separators + if ( options.useGrouping === false ) { + properties[ 8 ] = null; + } + + // Normalize number of digits if only one of either minimumFractionDigits or + // maximumFractionDigits is passed in as an option + if ( "minimumFractionDigits" in options && !( "maximumFractionDigits" in options ) ) { + + // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits ); + properties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] ); + } else if ( !( "minimumFractionDigits" in options ) && + "maximumFractionDigits" in options ) { + + // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits ); + properties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] ); + } + + // Return: + // 0-10: see number/pattern-properties. + // 11: @positivePattern [String] Positive pattern. + // 12: @negativePattern [String] Negative pattern. + // 13: @negativePrefix [String] Negative prefix. + // 14: @negativeSuffix [String] Negative suffix. + // 15: @round [Function] Round function. + // 16: @infinitySymbol [String] Infinity symbol. + // 17: @nanSymbol [String] NaN symbol. + // 18: @symbolMap [Object] A bunch of other symbols. + // 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`. + return properties; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/format.js b/StockManMVC/.bin/bower_components/globalize/src/number/format.js new file mode 100644 index 0000000..ac28511 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/format.js @@ -0,0 +1,127 @@ +define([ + "./format/grouping-separator", + "./format/integer-fraction-digits", + "./format/significant-digits" +], function( numberFormatGroupingSeparator, numberFormatIntegerFractionDigits, + numberFormatSignificantDigits ) { + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +return function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/format/grouping-separator.js b/StockManMVC/.bin/bower_components/globalize/src/number/format/grouping-separator.js new file mode 100644 index 0000000..0cb013a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/format/grouping-separator.js @@ -0,0 +1,38 @@ +define(function() { + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +return function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/format/integer-fraction-digits.js b/StockManMVC/.bin/bower_components/globalize/src/number/format/integer-fraction-digits.js new file mode 100644 index 0000000..b188b26 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/format/integer-fraction-digits.js @@ -0,0 +1,60 @@ +define([ + "../../util/string/pad" +], function( stringPad ) { + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +return function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/format/significant-digits.js b/StockManMVC/.bin/bower_components/globalize/src/number/format/significant-digits.js new file mode 100644 index 0000000..343e238 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/format/significant-digits.js @@ -0,0 +1,53 @@ +define([ + "../../common/create-error/unsupported-feature", + "../../util/number/to-precision", + "../../util/string/pad" +], function( createErrorUnsupportedFeature, numberToPrecision, stringPad ) { + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +return function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/number/formatter-fn.js new file mode 100644 index 0000000..f4a61be --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/formatter-fn.js @@ -0,0 +1,16 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/number", + "./format" +], function( validateParameterPresence, validateParameterTypeNumber, numberFormat ) { + +return function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/number-re.js b/StockManMVC/.bin/bower_components/globalize/src/number/number-re.js new file mode 100644 index 0000000..4dd703f --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/number-re.js @@ -0,0 +1,40 @@ +define(function() { + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +return ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system-digits-map.js b/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system-digits-map.js new file mode 100644 index 0000000..cfdd1ef --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system-digits-map.js @@ -0,0 +1,30 @@ +define([ + "./numbering-system", + "../common/create-error/unsupported-feature" +], function( numberNumberingSystem, createErrorUnsupportedFeature ) { + +/** + * nuMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return digits map if numbering system is different than `latn`. + */ +return function( cldr ) { + var aux, + nu = numberNumberingSystem( cldr ); + + if ( nu === "latn" ) { + return; + } + + aux = cldr.supplemental([ "numberingSystems", nu ]); + + if ( aux._type !== "numeric" ) { + throw createErrorUnsupportedFeature( "`" + aux._type + "` numbering system" ); + } + + return aux._digits; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system.js b/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system.js new file mode 100644 index 0000000..020a3c2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/numbering-system.js @@ -0,0 +1,32 @@ +define(function() { + +/** + * NumberingSystem( cldr ) + * + * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems + * - http://cldr.unicode.org/index/bcp47-extension + * - http://www.unicode.org/reports/tr35/#u_Extension + */ +return function( cldr ) { + var nu = cldr.attributes[ "u-nu" ]; + + if ( nu ) { + if ( nu === "traditio" ) { + nu = "traditional"; + } + if ( [ "native", "traditional", "finance" ].indexOf( nu ) !== -1 ) { + + // Unicode locale extension `u-nu` is set using either (native, traditional or + // finance). So, lookup the respective locale's numberingSystem and return it. + return cldr.main([ "numbers/otherNumberingSystems", nu ]); + } + + // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it. + return nu; + } + + // Return the default numberingSystem. + return cldr.main( "numbers/defaultNumberingSystem" ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/parse-properties.js b/StockManMVC/.bin/bower_components/globalize/src/number/parse-properties.js new file mode 100644 index 0000000..91dd3d5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/parse-properties.js @@ -0,0 +1,61 @@ +define([ + "./numbering-system-digits-map", + "./pattern-properties", + "./symbol", + "./symbol/inverted-map", + "./symbol/name", + "../util/object/extend" +], function( numberNumberingSystemDigitsMap, numberPatternProperties, numberSymbol, + numberSymbolInvertedMap, numberSymbolName, objectExtend ) { + +/** + * parseProperties( pattern, cldr ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * Return parser properties, used to feed parser function. + */ +return function( pattern, cldr ) { + var invertedNuDigitsMap, invertedNuDigitsMapSanityCheck, negativePattern, negativeProperties, + nuDigitsMap = numberNumberingSystemDigitsMap( cldr ); + + pattern = pattern.split( ";" ); + negativePattern = pattern[ 1 ] || "-" + pattern[ 0 ]; + negativeProperties = numberPatternProperties( negativePattern ); + if ( nuDigitsMap ) { + invertedNuDigitsMap = nuDigitsMap.split( "" ).reduce(function( object, localizedDigit, i ) { + object[ localizedDigit ] = String( i ); + return object; + }, {} ); + invertedNuDigitsMapSanityCheck = "0123456789".split( "" ).reduce(function( object, digit ) { + object[ digit ] = "invalid"; + return object; + }, {} ); + invertedNuDigitsMap = objectExtend( + invertedNuDigitsMapSanityCheck, + invertedNuDigitsMap + ); + } + + // 0: @infinitySymbol [String] Infinity symbol. + // 1: @invertedSymbolMap [Object] Inverted symbol map augmented with sanity check. + // The sanity check prevents permissive parsing, i.e., it prevents symbols that doesn't + // belong to the localized set to pass through. This is obtained with the result of the + // inverted map object overloading symbol name map object (the remaining symbol name + // mappings will invalidate parsing, working as the sanity check). + // 2: @negativePrefix [String] Negative prefix. + // 3: @negativeSuffix [String] Negative suffix with percent or per mille stripped out. + // 4: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than + // `latn` augmented with sanity check (similar to invertedSymbolMap). + return [ + numberSymbol( "infinity", cldr ), + objectExtend( {}, numberSymbolName, numberSymbolInvertedMap( cldr ) ), + negativeProperties[ 0 ], + negativeProperties[ 10 ].replace( "%", "" ).replace( "\u2030", "" ), + invertedNuDigitsMap + ]; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/parse.js b/StockManMVC/.bin/bower_components/globalize/src/number/parse.js new file mode 100644 index 0000000..4ab3202 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/parse.js @@ -0,0 +1,121 @@ +define([ + "./number-re", + "../util/regexp/escape" +], function( numberNumberRe, regexpEscape ) { + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +return function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/parser-fn.js b/StockManMVC/.bin/bower_components/globalize/src/number/parser-fn.js new file mode 100644 index 0000000..c626e70 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/parser-fn.js @@ -0,0 +1,17 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/string", + "./parse" +], function( validateParameterPresence, validateParameterTypeString, numberParse ) { + +return function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/pattern-properties.js b/StockManMVC/.bin/bower_components/globalize/src/number/pattern-properties.js new file mode 100644 index 0000000..ede4d2b --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/pattern-properties.js @@ -0,0 +1,133 @@ +define([ + "./pattern-re", + "../common/create-error/unsupported-feature" +], function( numberPatternRe, createErrorUnsupportedFeature ) { + +/** + * format( number, pattern ) + * + * @number [Number]. + * + * @pattern [String] raw pattern for numbers. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +return function( pattern ) { + var aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern, + maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize, + roundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix; + + pattern = pattern.match( numberPatternRe ); + if ( !pattern ) { + throw new Error( "Invalid pattern: " + pattern ); + } + + prefix = pattern[ 1 ]; + padding = pattern[ 3 ]; + integerFractionOrSignificantPattern = pattern[ 4 ]; + significantPattern = pattern[ 8 ]; + scientificNotation = pattern[ 9 ]; + suffix = pattern[ 10 ]; + + // Significant digit format + if ( significantPattern ) { + significantPattern.replace( /(@+)(#*)/, function( match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) { + minimumSignificantDigits = minimumSignificantDigitsMatch.length; + maximumSignificantDigits = minimumSignificantDigits + + maximumSignificantDigitsMatch.length; + }); + + // Integer and fractional format + } else { + fractionPattern = pattern[ 7 ]; + integerPattern = pattern[ 6 ]; + + if ( fractionPattern ) { + + // Minimum fraction digits, and rounding. + fractionPattern.replace( /[0-9]+/, function( match ) { + minimumFractionDigits = match; + }); + if ( minimumFractionDigits ) { + roundIncrement = +( "0." + minimumFractionDigits ); + minimumFractionDigits = minimumFractionDigits.length; + } else { + minimumFractionDigits = 0; + } + + // Maximum fraction digits + // 1: ignore decimal character + maximumFractionDigits = fractionPattern.length - 1 /* 1 */; + } + + // Minimum integer digits + integerPattern.replace( /0+$/, function( match ) { + minimumIntegerDigits = match.length; + }); + } + + // Scientific notation + if ( scientificNotation ) { + throw createErrorUnsupportedFeature({ + feature: "scientific notation (not implemented)" + }); + } + + // Padding + if ( padding ) { + throw createErrorUnsupportedFeature({ + feature: "padding (not implemented)" + }); + } + + // Grouping + if ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( "," ) ) !== -1 ) { + + // Primary grouping size is the interval between the last group separator and the end of + // the integer (or the end of the significant pattern). + aux2 = integerFractionOrSignificantPattern.split( "." )[ 0 ]; + primaryGroupingSize = aux2.length - aux1 - 1; + + // Secondary grouping size is the interval between the last two group separators. + if ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( ",", aux1 - 1 ) ) !== -1 ) { + secondaryGroupingSize = aux1 - 1 - aux2; + } + } + + // Return: + // 0: @prefix String + // 1: @padding Array [ , ] TODO + // 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer + // digits to be used. Numbers will be padded with leading zeroes if necessary. + // 3: @minimumFractionDigits and + // 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and + // maximum fraction digits to be used. Numbers will be rounded or padded with trailing + // zeroes if necessary. + // 5: @minimumSignificantDigits and + // 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and + // maximum fraction digits to be shown. Either none or both of these properties are + // present; if they are, they override minimum and maximum integer and fraction digits + // – the formatter uses however many integer and fraction digits are required to display + // the specified number of significant digits. + // 7: @roundIncrement Decimal round increment or null + // 8: @primaryGroupingSize + // 9: @secondaryGroupingSize + // 10: @suffix String + return [ + prefix, + padding, + minimumIntegerDigits, + minimumFractionDigits, + maximumFractionDigits, + minimumSignificantDigits, + maximumSignificantDigits, + roundIncrement, + primaryGroupingSize, + secondaryGroupingSize, + suffix + ]; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/pattern-re.js b/StockManMVC/.bin/bower_components/globalize/src/number/pattern-re.js new file mode 100644 index 0000000..92f21c8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/pattern-re.js @@ -0,0 +1,49 @@ +define(function() { + +/** + * EBNF representation: + * + * number_pattern_re = prefix? + * padding? + * (integer_fraction_pattern | significant_pattern) + * scientific_notation? + * suffix? + * + * prefix = non_number_stuff + * + * padding = "*" regexp(.) + * + * integer_fraction_pattern = integer_pattern + * fraction_pattern? + * + * integer_pattern = regexp([#,]*[0,]*0+) + * + * fraction_pattern = "." regexp(0*[0-9]*#*) + * + * significant_pattern = regexp([#,]*@+#*) + * + * scientific_notation = regexp(E\+?0+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: - + * 3: padding + * 4: (integer_fraction_pattern | significant_pattern) + * 5: integer_fraction_pattern + * 6: integer_pattern + * 7: fraction_pattern + * 8: significant_pattern + * 9: scientific_notation + * 10: suffix + * 11: - + */ +return ( /^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ ); + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/pattern.js b/StockManMVC/.bin/bower_components/globalize/src/number/pattern.js new file mode 100644 index 0000000..fceb3e5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/pattern.js @@ -0,0 +1,24 @@ +define([ + "./numbering-system" +], function( numberNumberingSystem ) { + +/** + * Pattern( style ) + * + * @style [String] "decimal" (default) or "percent". + * + * @cldr [Cldr instance]. + */ +return function( style, cldr ) { + if ( style !== "decimal" && style !== "percent" ) { + throw new Error( "Invalid style" ); + } + + return cldr.main([ + "numbers", + style + "Formats-numberSystem-" + numberNumberingSystem( cldr ), + "standard" + ]); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/symbol.js b/StockManMVC/.bin/bower_components/globalize/src/number/symbol.js new file mode 100644 index 0000000..431d95e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/symbol.js @@ -0,0 +1,21 @@ +define([ + "./numbering-system" +], function( numberNumberingSystem ) { + +/** + * Symbol( name, cldr ) + * + * @name [String] Symbol name. + * + * @cldr [Cldr instance]. + * + * Return the localized symbol given its name. + */ +return function( name, cldr ) { + return cldr.main([ + "numbers/symbols-numberSystem-" + numberNumberingSystem( cldr ), + name + ]); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/symbol/inverted-map.js b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/inverted-map.js new file mode 100644 index 0000000..76101ae --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/inverted-map.js @@ -0,0 +1,29 @@ +define([ + "./name", + "../symbol" +], function( numberSymbolName, numberSymbol ) { + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * "٫": ".", + * "٬": ",", + * "٪": "%", + * ... + * }; + */ +return function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol; + } + + return symbolMap; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/symbol/map.js b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/map.js new file mode 100644 index 0000000..4d94bd5 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/map.js @@ -0,0 +1,29 @@ +define([ + "./name", + "../symbol" +], function( numberSymbolName, numberSymbol ) { + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * ".": "٫", + * ",": "٬", + * "%": "٪", + * ... + * }; + */ +return function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr ); + } + + return symbolMap; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/number/symbol/name.js b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/name.js new file mode 100644 index 0000000..2efd2a2 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/number/symbol/name.js @@ -0,0 +1,13 @@ +define(function() { + +return { + ".": "decimal", + ",": "group", + "%": "percentSign", + "+": "plusSign", + "-": "minusSign", + "E": "exponential", + "\u2030": "perMille" +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/plural-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/plural-runtime.js new file mode 100644 index 0000000..849d95d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/plural-runtime.js @@ -0,0 +1,28 @@ +define([ + "./common/runtime-key", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./core-runtime", + "./plural/generator-fn" +], function( runtimeKey, validateParameterPresence, validateParameterTypeNumber, Globalize, + pluralGeneratorFn ) { + +Globalize._pluralGeneratorFn = pluralGeneratorFn; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; + +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "pluralGenerator", this._locale, [ options ] ) ]; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/plural.js b/StockManMVC/.bin/bower_components/globalize/src/plural.js new file mode 100644 index 0000000..b978154 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/plural.js @@ -0,0 +1,88 @@ +define([ + "cldr", + "make-plural", + "./common/runtime-bind", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-type", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/plain-object", + "./common/validate/parameter-type/plural-type", + "./core", + "./plural/generator-fn", + + "cldr/event", + "cldr/supplemental" +], function( Cldr, MakePlural, runtimeBind, validateCldr, validateDefaultLocale, + validateParameterPresence, validateParameterType, validateParameterTypeNumber, + validateParameterTypePlainObject, validateParameterTypePluralType, Globalize, + pluralGeneratorFn ) { + +/** + * .plural( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a + * value given locale. + */ +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +/** + * .pluralGenerator( [options] ) + * + * Return a plural function (of the form below). + * + * fn( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a value given the + * default/instance locale. + */ +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + var args, cldr, isOrdinal, plural, returnFn, type; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + type = options.type || "cardinal"; + + validateParameterTypePluralType( options.type, "options.type" ); + + validateDefaultLocale( cldr ); + + isOrdinal = type === "ordinal"; + + cldr.on( "get", validateCldr ); + cldr.supplemental([ "plurals-type-" + type, "{language}" ]); + cldr.off( "get", validateCldr ); + + MakePlural.rules = {}; + MakePlural.rules[ type ] = cldr.supplemental( "plurals-type-" + type ); + + plural = new MakePlural( cldr.attributes.language, { + "ordinals": isOrdinal, + "cardinals": !isOrdinal + }); + + returnFn = pluralGeneratorFn( plural ); + + runtimeBind( args, cldr, returnFn, [ plural ] ); + + return returnFn; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/plural/generator-fn.js b/StockManMVC/.bin/bower_components/globalize/src/plural/generator-fn.js new file mode 100644 index 0000000..3c05239 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/plural/generator-fn.js @@ -0,0 +1,15 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/number" +], function( validateParameterPresence, validateParameterTypeNumber ) { + +return function( plural ) { + return function pluralGenerator( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return plural( value ); + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/relative-time-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/relative-time-runtime.js new file mode 100644 index 0000000..eb4e25e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/relative-time-runtime.js @@ -0,0 +1,31 @@ +define([ + "./common/runtime-key", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./core-runtime", + "./relative-time/formatter-fn", + + "./number-runtime", + "./plural-runtime" +], function( runtimeKey, validateParameterPresence, validateParameterTypeNumber, Globalize, + relativeTimeFormatterFn ) { + +Globalize._relativeTimeFormatterFn = relativeTimeFormatterFn; + +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "relativeTimeFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/relative-time.js b/StockManMVC/.bin/bower_components/globalize/src/relative-time.js new file mode 100644 index 0000000..4c36886 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/relative-time.js @@ -0,0 +1,79 @@ +define([ + "./core", + "./common/runtime-bind", + "./common/validate/cldr", + "./common/validate/default-locale", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/string", + "./relative-time/formatter-fn", + "./relative-time/properties", + + "./number", + "./plural", + "cldr/event" +], function( Globalize, runtimeBind, validateCldr, validateDefaultLocale, validateParameterPresence, + validateParameterTypeNumber, validateParameterTypeString, relativeTimeFormatterFn, + relativeTimeProperties ) { + +/** + * .formatRelativeTime( value, unit [, options] ) + * + * @value [Number] The number of unit to format. + * + * @unit [String] see .relativeTimeFormatter() for details. + * + * @options [Object] see .relativeTimeFormatter() for details. + * + * Formats a relative time according to the given unit, options, and the default/instance locale. + */ +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +/** + * .relativeTimeFormatter( unit [, options ]) + * + * @unit [String] String value indicating the unit to be formatted. eg. "day", "week", "month", etc. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Returns a function that formats a relative time according to the given unit, options, and the + * default/instance locale. + */ +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + cldr = this.cldr; + options = options || {}; + + args = [ unit, options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + properties = relativeTimeProperties( unit, cldr, options ); + cldr.off( "get", validateCldr ); + + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = relativeTimeFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/relative-time/format.js b/StockManMVC/.bin/bower_components/globalize/src/relative-time/format.js new file mode 100644 index 0000000..3002d51 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/relative-time/format.js @@ -0,0 +1,36 @@ +define([ + "../common/format-message" +], function( formatMessage ) { + +/** + * format( value, numberFormatter, pluralGenerator, properties ) + * + * @value [Number] The number to format + * + * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter + * + * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator + * + * @properties [Object] containing relative time plural message. + * + * Format relative time. + */ +return function( value, numberFormatter, pluralGenerator, properties ) { + + var relativeTime, + message = properties[ "relative-type-" + value ]; + + if ( message ) { + return message; + } + + relativeTime = value <= 0 ? properties[ "relativeTime-type-past" ] + : properties[ "relativeTime-type-future" ]; + + value = Math.abs( value ); + + message = relativeTime[ "relativeTimePattern-count-" + pluralGenerator( value ) ]; + return formatMessage( message, [ numberFormatter( value ) ] ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/relative-time/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/relative-time/formatter-fn.js new file mode 100644 index 0000000..b2be713 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/relative-time/formatter-fn.js @@ -0,0 +1,17 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/number", + "./format" +], function( validateParameterPresence, validateParameterTypeNumber, relativeTimeFormat ) { + +return function( numberFormatter, pluralGenerator, properties ) { + return function relativeTimeFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return relativeTimeFormat( value, numberFormatter, pluralGenerator, properties ); + }; + +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/relative-time/properties.js b/StockManMVC/.bin/bower_components/globalize/src/relative-time/properties.js new file mode 100644 index 0000000..346cd99 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/relative-time/properties.js @@ -0,0 +1,41 @@ +define(function() { + +/** + * properties( unit, cldr, options ) + * + * @unit [String] eg. "day", "week", "month", etc. + * + * @cldr [Cldr instance]. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Return relative time properties. + */ +return function( unit, cldr, options ) { + + var form = options.form, + raw, properties, key, match; + + if ( form ) { + unit = unit + "-" + form; + } + + raw = cldr.main( [ "dates", "fields", unit ] ); + properties = { + "relativeTime-type-future": raw[ "relativeTime-type-future" ], + "relativeTime-type-past": raw[ "relativeTime-type-past" ] + }; + for ( key in raw ) { + if ( raw.hasOwnProperty( key ) ) { + match = /relative-type-(-?[0-9]+)/.exec( key ); + if ( match ) { + properties[ key ] = raw[ key ]; + } + } + } + + return properties; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit-runtime.js b/StockManMVC/.bin/bower_components/globalize/src/unit-runtime.js new file mode 100644 index 0000000..8eb6972 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit-runtime.js @@ -0,0 +1,25 @@ +define([ + "./common/runtime-key", + "./core-runtime", + "./unit/formatter-fn", + + "./number-runtime", + "./plural-runtime" +], function( runtimeKey, Globalize, unitFormatterFn ) { + +Globalize._unitFormatterFn = unitFormatterFn; + +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + return this.unitFormatter( unit, options )( value ); +}; + +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "unitFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit.js b/StockManMVC/.bin/bower_components/globalize/src/unit.js new file mode 100644 index 0000000..024b68e --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit.js @@ -0,0 +1,74 @@ +define([ + "./core", + "./common/runtime-bind", + "./common/validate/parameter-presence", + "./common/validate/parameter-type/number", + "./common/validate/parameter-type/plain-object", + "./common/validate/parameter-type/string", + "./unit/formatter-fn", + "./unit/properties", + + "./number", + "./plural" +], function( Globalize, runtimeBind, validateParameterPresence, validateParameterTypeNumber, + validateParameterTypePlainObject, validateParameterTypeString, unitFormatterFn, + unitProperties ) { + +/** + * Globalize.formatUnit( value, unit, options ) + * + * @value [Number] + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * Format units such as seconds, minutes, days, weeks, etc. + */ +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.unitFormatter( unit, options )( value ); +}; + +/** + * Globalize.unitFormatter( unit, options ) + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * - numberFormatter: [Function] a number formatter function. Defaults to Globalize + * `.numberFormatter()` for the current locale using the default options. + */ +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + var args, form, numberFormatter, pluralGenerator, returnFn, properties; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + + args = [ unit, options ]; + form = options.form || "long"; + properties = unitProperties( unit, form, this.cldr ); + + numberFormatter = options.numberFormatter || this.numberFormatter(); + pluralGenerator = this.pluralGenerator(); + returnFn = unitFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, this.cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit/categories.js b/StockManMVC/.bin/bower_components/globalize/src/unit/categories.js new file mode 100644 index 0000000..7a2fcad --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit/categories.js @@ -0,0 +1,11 @@ +define(function() { + +/** + * categories() + * + * Return all unit categories. + */ +return [ "acceleration", "angle", "area", "digital", "duration", "length", "mass", "power", +"pressure", "speed", "temperature", "volume" ]; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit/format.js b/StockManMVC/.bin/bower_components/globalize/src/unit/format.js new file mode 100644 index 0000000..37320ed --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit/format.js @@ -0,0 +1,50 @@ +define([ + "../common/format-message" +], function( formatMessage ) { + +/** + * format( value, numberFormatter, pluralGenerator, unitProperies ) + * + * @value [Number] + * + * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter. + * + * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator. + * + * @unitProperies [Object]: localized unit data from cldr. + * + * Format units such as seconds, minutes, days, weeks, etc. + * + * OBS: + * + * Unit Sequences are not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences + * + * Duration Unit (for composed time unit durations) is not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit + */ +return function( value, numberFormatter, pluralGenerator, unitProperties ) { + var compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties, + formattedValue, divisor, divisorProperties, message, pluralValue; + + unitProperties = unitProperties.unitProperties; + formattedValue = numberFormatter( value ); + pluralValue = pluralGenerator( value ); + + // computed compound unit, eg. "megabyte-per-second". + if ( unitProperties instanceof Array ) { + dividendProperties = unitProperties[ 0 ]; + divisorProperties = unitProperties[ 1 ]; + + dividend = formatMessage( dividendProperties[ pluralValue ], [ value ] ); + divisor = formatMessage( divisorProperties.one, [ "" ] ).trim(); + + return formatMessage( compoundUnitPattern, [ dividend, divisor ] ); + } + + message = unitProperties[ pluralValue ]; + + return formatMessage( message, [ formattedValue ] ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit/formatter-fn.js b/StockManMVC/.bin/bower_components/globalize/src/unit/formatter-fn.js new file mode 100644 index 0000000..7131c1d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit/formatter-fn.js @@ -0,0 +1,17 @@ +define([ + "../common/validate/parameter-presence", + "../common/validate/parameter-type/number", + "./format" +], function( validateParameterPresence, validateParameterTypeNumber, unitFormat ) { + +return function( numberFormatter, pluralGenerator, unitProperties ) { + return function unitFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return unitFormat( value, numberFormatter, pluralGenerator, unitProperties ); + }; + +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit/get.js b/StockManMVC/.bin/bower_components/globalize/src/unit/get.js new file mode 100644 index 0000000..f905b77 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit/get.js @@ -0,0 +1,97 @@ +define([ + "./categories" +], function( unitCategories ) { + +function stripPluralGarbage( data ) { + var aux, pluralCount; + + if ( data ) { + aux = {}; + for ( pluralCount in data ) { + aux[ pluralCount.replace( /unitPattern-count-/, "" ) ] = data[ pluralCount ]; + } + } + + return aux; +} + +/** + * get( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + * + * Return the plural map of a unit, eg: "second" + * { "one": "{0} second", + * "other": "{0} seconds" } + * } + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Uses the precomputed form of a compound-unit if available, eg: "mile-per-hour" + * { "displayName": "miles per hour", + * "unitPattern-count-one": "{0} mile per hour", + * "unitPattern-count-other": "{0} miles per hour" + * }, + * + * Also supports "/" instead of "-per-", eg. "foot/second", using the precomputed form if + * available. + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist. + */ +var get = function( unit, form, cldr ) { + var ret; + + // Ensure that we get the 'precomputed' form, if present. + unit = unit.replace( /\//, "-per-" ); + + // Get unit or -unit (eg. "duration-second"). + [ "" ].concat( unitCategories ).some(function( category ) { + return ret = cldr.main([ + "units", + form, + category.length ? category + "-" + unit : unit + ]); + }); + + // Rename keys s/unitPattern-count-//g. + ret = stripPluralGarbage( ret ); + + // Compound Unit, eg. "foot-per-second" or "foot/second". + if ( !ret && ( /-per-/ ).test( unit ) ) { + + // "Some units already have 'precomputed' forms, such as kilometer-per-hour; + // where such units exist, they should be used in preference" UTS#35. + // Note that precomputed form has already been handled above (!ret). + + // Get both recursively. + unit = unit.split( "-per-" ); + ret = unit.map(function( unit ) { + return get( unit, form, cldr ); + }); + if ( !ret[ 0 ] || !ret[ 1 ] ) { + return; + } + } + + return ret; +}; + +return get; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/unit/properties.js b/StockManMVC/.bin/bower_components/globalize/src/unit/properties.js new file mode 100644 index 0000000..edabde0 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/unit/properties.js @@ -0,0 +1,28 @@ +define([ + "./get" +], function( unitGet ) { + +/** + * properties( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + */ +return function( unit, form, cldr ) { + var compoundUnitPattern, unitProperties; + + compoundUnitPattern = cldr.main( [ "units", form, "per/compoundUnitPattern" ] ); + unitProperties = unitGet( unit, form, cldr ); + + return { + compoundUnitPattern: compoundUnitPattern, + unitProperties: unitProperties + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/always-array.js b/StockManMVC/.bin/bower_components/globalize/src/util/always-array.js new file mode 100644 index 0000000..b727661 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/always-array.js @@ -0,0 +1,7 @@ +define(function() { + +return function( stringOrArray ) { + return Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : []; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/always-cldr.js b/StockManMVC/.bin/bower_components/globalize/src/util/always-cldr.js new file mode 100644 index 0000000..a17e74d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/always-cldr.js @@ -0,0 +1,9 @@ +define([ + "cldr" +], function( Cldr ) { + +return function( localeOrCldr ) { + return localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/date/set-date.js b/StockManMVC/.bin/bower_components/globalize/src/util/date/set-date.js new file mode 100644 index 0000000..e83c732 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/date/set-date.js @@ -0,0 +1,16 @@ +define(function() { + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +return function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/date/set-month.js b/StockManMVC/.bin/bower_components/globalize/src/util/date/set-month.js new file mode 100644 index 0000000..3befece --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/date/set-month.js @@ -0,0 +1,20 @@ +define([ + "./set-date" +], function( dateSetDate ) { + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +return function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/function-name.js b/StockManMVC/.bin/bower_components/globalize/src/util/function-name.js new file mode 100644 index 0000000..9ab3a4d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/function-name.js @@ -0,0 +1,16 @@ +define([], function() { + +return function( fn ) { + if ( fn.name !== undefined ) { + return fn.name; + } + + // fn.name is not supported by IE. + var matches = /^function\s+([\w\$]+)\s*\(/.exec( fn.toString() ); + + if ( matches && matches.length > 0 ) { + return matches[ 1 ]; + } +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/is-plain-object.js b/StockManMVC/.bin/bower_components/globalize/src/util/is-plain-object.js new file mode 100644 index 0000000..de8cc3d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/is-plain-object.js @@ -0,0 +1,10 @@ +define(function() { + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +return function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/number/round.js b/StockManMVC/.bin/bower_components/globalize/src/util/number/round.js new file mode 100644 index 0000000..35ed3f0 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/number/round.js @@ -0,0 +1,88 @@ +define([ + "./truncate" +], function( numberTruncate ) { + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +return function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/number/to-precision.js b/StockManMVC/.bin/bower_components/globalize/src/util/number/to-precision.js new file mode 100644 index 0000000..e3ba0bf --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/number/to-precision.js @@ -0,0 +1,27 @@ +define(function() { + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +return function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/number/truncate.js b/StockManMVC/.bin/bower_components/globalize/src/util/number/truncate.js new file mode 100644 index 0000000..0fe0627 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/number/truncate.js @@ -0,0 +1,10 @@ +define(function() { + +return function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/object/extend.js b/StockManMVC/.bin/bower_components/globalize/src/util/object/extend.js new file mode 100644 index 0000000..6d1f449 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/object/extend.js @@ -0,0 +1,17 @@ +define(function() { + +return function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/object/filter.js b/StockManMVC/.bin/bower_components/globalize/src/util/object/filter.js new file mode 100644 index 0000000..5b16e47 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/object/filter.js @@ -0,0 +1,16 @@ +define(function() { + +return function( object, testRe ) { + var key, + copy = {}; + + for ( key in object ) { + if ( testRe.test( key ) ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/object/omit.js b/StockManMVC/.bin/bower_components/globalize/src/util/object/omit.js new file mode 100644 index 0000000..e4e981a --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/object/omit.js @@ -0,0 +1,25 @@ +define([ + "../always-array" +], function( alwaysArray ) { + +/** + * objectOmit( object, keys ) + * + * Return a copy of the object, filtered to omit the blacklisted key or array of keys. + */ +return function( object, keys ) { + var key, + copy = {}; + + keys = alwaysArray( keys ); + + for ( key in object ) { + if ( keys.indexOf( key ) === -1 ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/object/values.js b/StockManMVC/.bin/bower_components/globalize/src/util/object/values.js new file mode 100644 index 0000000..9364f9d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/object/values.js @@ -0,0 +1,14 @@ +define(function() { + +return function( object ) { + var i, + result = []; + + for ( i in object ) { + result.push( object[ i ] ); + } + + return result; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/out-of-range.js b/StockManMVC/.bin/bower_components/globalize/src/util/out-of-range.js new file mode 100644 index 0000000..eea8bc3 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/out-of-range.js @@ -0,0 +1,7 @@ +define(function() { + +return function( value, low, high ) { + return value < low || value > high; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/regexp/escape.js b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/escape.js new file mode 100644 index 0000000..ebfdb73 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/escape.js @@ -0,0 +1,8 @@ +define(function() { + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +return function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/regexp/n.js b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/n.js new file mode 100644 index 0000000..4fc2c9c --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/n.js @@ -0,0 +1,13 @@ +define(function() { + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +return /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/regexp/not-s.js b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/not-s.js new file mode 100644 index 0000000..fe3aeeb --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/regexp/not-s.js @@ -0,0 +1,18 @@ +define(function() { + +/** + * Unicode regular expression for: everything except math symbols, currency signs, dingbats, and + * box-drawing characters. + * + * Generated by: + * + * regenerate() + * .addRange( 0x0, 0x10FFFF ) + * .remove( require( "unicode-7.0.0/categories/S/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +return /[\0-#%-\*,-;\?-\]_a-\{\}\x7F-\xA1\xA7\xAA\xAB\xAD\xB2\xB3\xB5-\xB7\xB9-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0383\u0386-\u03F5\u03F7-\u0481\u0483-\u058C\u0590-\u0605\u0609\u060A\u060C\u060D\u0610-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF-\u07F5\u07F7-\u09F1\u09F4-\u09F9\u09FC-\u0AF0\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C7E\u0C80-\u0D78\u0D7A-\u0E3E\u0E40-\u0F00\u0F04-\u0F12\u0F14\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39-\u0FBD\u0FC6\u0FCD\u0FD0-\u0FD4\u0FD9-\u109D\u10A0-\u138F\u139A-\u17DA\u17DC-\u193F\u1941-\u19DD\u1A00-\u1B60\u1B6B-\u1B73\u1B7D-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF-\u2043\u2045-\u2051\u2053-\u2079\u207D-\u2089\u208D-\u209F\u20BE-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u218F\u2308-\u230B\u2329\u232A\u23FB-\u23FF\u2427-\u243F\u244B-\u249B\u24EA-\u24FF\u2768-\u2793\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2CE4\u2CEB-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u3003\u3005-\u3011\u3014-\u301F\u3021-\u3035\u3038-\u303D\u3040-\u309A\u309D-\u318F\u3192-\u3195\u31A0-\u31BF\u31E4-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u32FF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uAA76\uAA7A-\uAB5A\uAB5C-\uD7FF\uDC00-\uFB28\uFB2A-\uFBB1\uFBC2-\uFDFB\uFDFE-\uFE61\uFE63\uFE67\uFE68\uFE6A-\uFF03\uFF05-\uFF0A\uFF0C-\uFF1B\uFF1F-\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5F-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8D-\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDFFF]|[\uD801\uD803-\uD819\uD81B-\uD82E\uD830-\uD833\uD836-\uD83A\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD802[\uDC00-\uDC76\uDC79-\uDEC7\uDEC9-\uDFFF]|\uD81A[\uDC00-\uDF3B\uDF40-\uDF44\uDF46-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDDE-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD83B[\uDC00-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0F\uDD2F\uDD6C-\uDD6F\uDD9B-\uDDE5\uDE03-\uDE0F\uDE3B-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF\uDF2D-\uDF2F\uDF7E\uDF7F\uDFCF-\uDFD3\uDFF8-\uDFFF]|\uD83D[\uDCFF\uDD4B-\uDD4F\uDD7A\uDDA4\uDE43\uDE44\uDED0-\uDEDF\uDEED-\uDEEF\uDEF4-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDFFF]|[\uD800-\uDBFF]/; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/string/hash.js b/StockManMVC/.bin/bower_components/globalize/src/util/string/hash.js new file mode 100644 index 0000000..83e26a8 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/string/hash.js @@ -0,0 +1,12 @@ +define(function() { + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +return function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/string/pad.js b/StockManMVC/.bin/bower_components/globalize/src/util/string/pad.js new file mode 100644 index 0000000..7ab1058 --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/string/pad.js @@ -0,0 +1,14 @@ +define(function() { + +return function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + +}); diff --git a/StockManMVC/.bin/bower_components/globalize/src/util/to-string.js b/StockManMVC/.bin/bower_components/globalize/src/util/to-string.js new file mode 100644 index 0000000..29d0f1d --- /dev/null +++ b/StockManMVC/.bin/bower_components/globalize/src/util/to-string.js @@ -0,0 +1,14 @@ +define(function() { + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +return function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + +}); diff --git a/StockManMVC/.bin/git.cmd b/StockManMVC/.bin/git.cmd new file mode 100644 index 0000000..85ddefe --- /dev/null +++ b/StockManMVC/.bin/git.cmd @@ -0,0 +1,3 @@ +@echo off +SET PATH=%~dp0;%PATH% +"%~dp0node" "%~dp0..\..\packages\NoGit.0.0.8\node_modules\nogit\bin\git.js" %* \ No newline at end of file diff --git a/StockManMVC/.bin/node.cmd b/StockManMVC/.bin/node.cmd new file mode 100644 index 0000000..5b6b155 --- /dev/null +++ b/StockManMVC/.bin/node.cmd @@ -0,0 +1,3 @@ +@echo off +SET PATH=%PATH%;%~dp0 +"%~dp0..\..\packages\Node.js.0.10.28\node.exe" %* \ No newline at end of file diff --git a/StockManMVC/App_Start/BundleConfig.cs b/StockManMVC/App_Start/BundleConfig.cs index d0037ff..1842af2 100644 --- a/StockManMVC/App_Start/BundleConfig.cs +++ b/StockManMVC/App_Start/BundleConfig.cs @@ -19,9 +19,12 @@ namespace StockManMVC "~/Scripts/cldr.js", "~/Scripts/cldr/event.js", "~/Scripts/cldr/supplemental.js", + "~/Scripts/cldr/unresolved.js", "~/Scripts/globalize.js", + "~/Scripts/globalize/currency.js", + "~/Scripts/globalize/date.js", "~/Scripts/globalize/number.js", - "~/Scripts/globalize/date.js" + "~/Scripts/globalize/unit.js" )); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( diff --git a/StockManMVC/StockManMVC.csproj b/StockManMVC/StockManMVC.csproj index e957f1c..029e656 100644 --- a/StockManMVC/StockManMVC.csproj +++ b/StockManMVC/StockManMVC.csproj @@ -233,6 +233,18 @@ + + + + + + + + + + + + @@ -325,6 +337,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + compilerconfig.json @@ -369,6 +480,7 @@ + Web.config diff --git a/StockManMVC/Test.html b/StockManMVC/Test.html new file mode 100644 index 0000000..fc82e37 --- /dev/null +++ b/StockManMVC/Test.html @@ -0,0 +1,74 @@ + + + + Globalize demo + + + +
+

Globalize demo for the culture / locale

+

+ This is a the number formatted by Globalize: + +

+

+ This is a the number formatted by Globalize: + +

+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/StockManMVC/Web.config b/StockManMVC/Web.config index ecca14e..9ce0f66 100644 --- a/StockManMVC/Web.config +++ b/StockManMVC/Web.config @@ -33,7 +33,6 @@ - @@ -80,7 +79,18 @@ - + + + + + + + + + + + + diff --git a/StockManMVC/bin/StockManMVC.dll b/StockManMVC/bin/StockManMVC.dll index 57031d09b3cd5731fed5b3cbf91cb0c62216bf2d..5626e6ffb150eeae1231dbbabbc42b294dbfbeca 100644 GIT binary patch delta 13955 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 delta 13766 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 af_(93R6~M|%AaFdJH24i++dq?gZ>+yEVk_c diff --git a/StockManMVC/bin/StockManMVC.dll.config b/StockManMVC/bin/StockManMVC.dll.config index ecca14e..9ce0f66 100644 --- a/StockManMVC/bin/StockManMVC.dll.config +++ b/StockManMVC/bin/StockManMVC.dll.config @@ -33,7 +33,6 @@ - @@ -80,7 +79,18 @@ - + + + + + + + + + + + + diff --git a/StockManMVC/bower.json b/StockManMVC/bower.json index 0b49d4c..9174b1e 100644 --- a/StockManMVC/bower.json +++ b/StockManMVC/bower.json @@ -1,6 +1,6 @@ { "name": "StockManMVC", - "version": "0.8.20", + "version": "1.0.37", "description": "Gestione Stock", "authors": [ "S.E.Locatelli" diff --git a/StockManMVC/bower_components/bower.json/.bower.json b/StockManMVC/bower_components/bower.json/.bower.json new file mode 100644 index 0000000..34726b7 --- /dev/null +++ b/StockManMVC/bower_components/bower.json/.bower.json @@ -0,0 +1,15 @@ +{ + "name": "bower.json", + "homepage": "https://github.com/Kalitte/app-states", + "version": "0.6.9", + "_release": "0.6.9", + "_resolution": { + "type": "version", + "tag": "v0.6.9", + "commit": "97eb8e1d134fca9e6dc1767d2bd3597c05437fac" + }, + "_source": "https://github.com/Kalitte/app-states.git", + "_target": "~0.6.9", + "_originalSource": "bower.json", + "_direct": true +} \ No newline at end of file diff --git a/StockManMVC/bower_components/cldr-data/segments/de/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/de/suppressions.json new file mode 100644 index 0000000..8641b54 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/de/suppressions.json @@ -0,0 +1,740 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "de" + }, + "segmentations": { + "SentenceBreak": { + "standard": [ + { + "suppression": "Port." + }, + { + "suppression": "Alt." + }, + { + "suppression": "Di." + }, + { + "suppression": "Ges." + }, + { + "suppression": "frz." + }, + { + "suppression": "entspr." + }, + { + "suppression": "Gebr." + }, + { + "suppression": "erw." + }, + { + "suppression": "Frl." + }, + { + "suppression": "Inh." + }, + { + "suppression": "k.u.k." + }, + { + "suppression": "Ca." + }, + { + "suppression": "J.D." + }, + { + "suppression": "Ausg." + }, + { + "suppression": "evtl." + }, + { + "suppression": "So." + }, + { + "suppression": "i.B." + }, + { + "suppression": "s.a." + }, + { + "suppression": "kgl." + }, + { + "suppression": "Sept." + }, + { + "suppression": "o.B." + }, + { + "suppression": "Sa." + }, + { + "suppression": "ev." + }, + { + "suppression": "Dez." + }, + { + "suppression": "am." + }, + { + "suppression": "i.R." + }, + { + "suppression": "eigtl." + }, + { + "suppression": "i.J." + }, + { + "suppression": "u.U." + }, + { + "suppression": "G." + }, + { + "suppression": "z.Hd." + }, + { + "suppression": "u.A.w.g." + }, + { + "suppression": "Kl." + }, + { + "suppression": "Spezif." + }, + { + "suppression": "Obj." + }, + { + "suppression": "Ing." + }, + { + "suppression": "D. h." + }, + { + "suppression": "Folg." + }, + { + "suppression": "Akt." + }, + { + "suppression": "i.A." + }, + { + "suppression": "Msp." + }, + { + "suppression": "U.U." + }, + { + "suppression": "Chr." + }, + { + "suppression": "R." + }, + { + "suppression": "Einh." + }, + { + "suppression": "schwäb." + }, + { + "suppression": "Vgl." + }, + { + "suppression": "Aug." + }, + { + "suppression": "Dipl.-Ing." + }, + { + "suppression": "W." + }, + { + "suppression": "B." + }, + { + "suppression": "U. U." + }, + { + "suppression": "J." + }, + { + "suppression": "Fa." + }, + { + "suppression": "Mo." + }, + { + "suppression": "n.u.Z." + }, + { + "suppression": "Op." + }, + { + "suppression": "Mrd." + }, + { + "suppression": "e.h." + }, + { + "suppression": "Hr." + }, + { + "suppression": "Hrn." + }, + { + "suppression": "Ztr." + }, + { + "suppression": "k. u. k." + }, + { + "suppression": "Bibl." + }, + { + "suppression": "d.Ä." + }, + { + "suppression": "b." + }, + { + "suppression": "M." + }, + { + "suppression": "i.H." + }, + { + "suppression": "v.R.w." + }, + { + "suppression": "o.A." + }, + { + "suppression": "St." + }, + { + "suppression": "Dr." + }, + { + "suppression": "Fn." + }, + { + "suppression": "Abs." + }, + { + "suppression": "Rd." + }, + { + "suppression": "Dtzd." + }, + { + "suppression": "Jahrh." + }, + { + "suppression": "Z." + }, + { + "suppression": "Std." + }, + { + "suppression": "n. Chr." + }, + { + "suppression": "möbl." + }, + { + "suppression": "tägl." + }, + { + "suppression": "gest." + }, + { + "suppression": "gesch." + }, + { + "suppression": "z.B." + }, + { + "suppression": "Hbf." + }, + { + "suppression": "Abt." + }, + { + "suppression": "A.M." + }, + { + "suppression": "e.Wz." + }, + { + "suppression": "v.T." + }, + { + "suppression": "Nov." + }, + { + "suppression": "z." + }, + { + "suppression": "Prot." + }, + { + "suppression": "U.S." + }, + { + "suppression": "Wg." + }, + { + "suppression": "u.v.a." + }, + { + "suppression": "Adr." + }, + { + "suppression": "App." + }, + { + "suppression": "ggf." + }, + { + "suppression": "ggfs." + }, + { + "suppression": "Jan." + }, + { + "suppression": "O." + }, + { + "suppression": "Rel." + }, + { + "suppression": "od." + }, + { + "suppression": "Pfd." + }, + { + "suppression": "a.a.O." + }, + { + "suppression": "p.Adr." + }, + { + "suppression": "P." + }, + { + "suppression": "Gem." + }, + { + "suppression": "v. Chr." + }, + { + "suppression": "Art." + }, + { + "suppression": "z.Z." + }, + { + "suppression": "S.A." + }, + { + "suppression": "i.V." + }, + { + "suppression": "verh." + }, + { + "suppression": "Ausschl." + }, + { + "suppression": "m.W." + }, + { + "suppression": "Dir." + }, + { + "suppression": "Verf." + }, + { + "suppression": "Sek." + }, + { + "suppression": "r." + }, + { + "suppression": "Chin." + }, + { + "suppression": "Feb." + }, + { + "suppression": "Int." + }, + { + "suppression": "Sep." + }, + { + "suppression": "Gesch." + }, + { + "suppression": "schweiz." + }, + { + "suppression": "Bed." + }, + { + "suppression": "a.Rh." + }, + { + "suppression": "jew." + }, + { + "suppression": "vgl." + }, + { + "suppression": "a.M." + }, + { + "suppression": "Str." + }, + { + "suppression": "exkl." + }, + { + "suppression": "gek." + }, + { + "suppression": "Erf." + }, + { + "suppression": "u.Ä." + }, + { + "suppression": "ehem." + }, + { + "suppression": "näml." + }, + { + "suppression": "u. Z." + }, + { + "suppression": "v. u. Z." + }, + { + "suppression": "sog." + }, + { + "suppression": "C." + }, + { + "suppression": "Dipl.-Kfm." + }, + { + "suppression": "mtl." + }, + { + "suppression": "Hrsg." + }, + { + "suppression": "Qu." + }, + { + "suppression": "röm." + }, + { + "suppression": "u." + }, + { + "suppression": "U." + }, + { + "suppression": "Adj." + }, + { + "suppression": "Kap." + }, + { + "suppression": "hpts." + }, + { + "suppression": "a.D." + }, + { + "suppression": "gedr." + }, + { + "suppression": "Best." + }, + { + "suppression": "N." + }, + { + "suppression": "v.u.Z." + }, + { + "suppression": "Phys." + }, + { + "suppression": "Fr." + }, + { + "suppression": "d.J." + }, + { + "suppression": "Reg.-Bez." + }, + { + "suppression": "m.E." + }, + { + "suppression": "schles." + }, + { + "suppression": "Max." + }, + { + "suppression": "Ltd." + }, + { + "suppression": "südd." + }, + { + "suppression": "inkl." + }, + { + "suppression": "geb." + }, + { + "suppression": "Ggf." + }, + { + "suppression": "Inc." + }, + { + "suppression": "kath." + }, + { + "suppression": "kfm." + }, + { + "suppression": "Nr." + }, + { + "suppression": "Proz." + }, + { + "suppression": "Dim." + }, + { + "suppression": "verw." + }, + { + "suppression": "Reg." + }, + { + "suppression": "Dat." + }, + { + "suppression": "Evtl." + }, + { + "suppression": "led." + }, + { + "suppression": "F." + }, + { + "suppression": "Test." + }, + { + "suppression": "Schr." + }, + { + "suppression": "Do." + }, + { + "suppression": "PIN." + }, + { + "suppression": "Z. Zt." + }, + { + "suppression": "v.Chr." + }, + { + "suppression": "Tägl." + }, + { + "suppression": "s." + }, + { + "suppression": "amtl." + }, + { + "suppression": "Temp." + }, + { + "suppression": "Mind." + }, + { + "suppression": "e.V." + }, + { + "suppression": "Abw." + }, + { + "suppression": "P.M." + }, + { + "suppression": "F.f." + }, + { + "suppression": "a.a.S." + }, + { + "suppression": "Mod." + }, + { + "suppression": "Co." + }, + { + "suppression": "Min." + }, + { + "suppression": "Allg." + }, + { + "suppression": "Geograph." + }, + { + "suppression": "Jr." + }, + { + "suppression": "Urspr." + }, + { + "suppression": "Apr." + }, + { + "suppression": "Z. B." + }, + { + "suppression": "v.H." + }, + { + "suppression": "A." + }, + { + "suppression": "einschl." + }, + { + "suppression": "Trans." + }, + { + "suppression": "zzgl." + }, + { + "suppression": "StR." + }, + { + "suppression": "Fam." + }, + { + "suppression": "I." + }, + { + "suppression": "jhrl." + }, + { + "suppression": "u.a." + }, + { + "suppression": "Ben." + }, + { + "suppression": "o.g." + }, + { + "suppression": "Kfm." + }, + { + "suppression": "Konv." + }, + { + "suppression": "Mi." + }, + { + "suppression": "L." + }, + { + "suppression": "beil." + }, + { + "suppression": "T." + }, + { + "suppression": "Ursprüngl." + }, + { + "suppression": "röm.-kath." + }, + { + "suppression": "Okt." + }, + { + "suppression": "u.ä." + }, + { + "suppression": "Tel." + }, + { + "suppression": "D." + }, + { + "suppression": "Ber." + }, + { + "suppression": "Kop." + }, + { + "suppression": "Mio." + }, + { + "suppression": "Y." + }, + { + "suppression": "U.S.A." + }, + { + "suppression": "v. H." + }, + { + "suppression": "Forts. f." + }, + { + "suppression": "Rep." + }, + { + "suppression": "Hptst." + }, + { + "suppression": "österr." + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/el/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/el/suppressions.json new file mode 100644 index 0000000..a202e60 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/el/suppressions.json @@ -0,0 +1,20 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "el" + }, + "segmentations": { + "SentenceBreak": { + "variables": [ + { + "$STerm": "[[$STerm] [\\u003B \\u037E]]" + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/es/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/es/suppressions.json new file mode 100644 index 0000000..a96e059 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/es/suppressions.json @@ -0,0 +1,509 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "es" + }, + "segmentations": { + "SentenceBreak": { + "standard": [ + { + "suppression": "Rdos." + }, + { + "suppression": "JJ.OO." + }, + { + "suppression": "Sres." + }, + { + "suppression": "fig." + }, + { + "suppression": "may." + }, + { + "suppression": "RR.HH." + }, + { + "suppression": "oct." + }, + { + "suppression": "cap." + }, + { + "suppression": "mié." + }, + { + "suppression": "doc." + }, + { + "suppression": "Excmo." + }, + { + "suppression": "Trab." + }, + { + "suppression": "Excmos." + }, + { + "suppression": "Kit." + }, + { + "suppression": "Inc." + }, + { + "suppression": "FF.CC." + }, + { + "suppression": "DC." + }, + { + "suppression": "ago." + }, + { + "suppression": "trad." + }, + { + "suppression": "SA." + }, + { + "suppression": "Rvdos." + }, + { + "suppression": "ed." + }, + { + "suppression": "Exmo." + }, + { + "suppression": "jul." + }, + { + "suppression": "col." + }, + { + "suppression": "RAM." + }, + { + "suppression": "Srtas." + }, + { + "suppression": "ene." + }, + { + "suppression": "Rol." + }, + { + "suppression": "Fabric." + }, + { + "suppression": "Comm." + }, + { + "suppression": "vid." + }, + { + "suppression": "Da." + }, + { + "suppression": "dic." + }, + { + "suppression": "ss." + }, + { + "suppression": "abr." + }, + { + "suppression": "ntra." + }, + { + "suppression": "Sra." + }, + { + "suppression": "dtor." + }, + { + "suppression": "cf." + }, + { + "suppression": "dom." + }, + { + "suppression": "prov." + }, + { + "suppression": "Emm." + }, + { + "suppression": "Sr." + }, + { + "suppression": "licdo." + }, + { + "suppression": "p.ej." + }, + { + "suppression": "bol." + }, + { + "suppression": "figs." + }, + { + "suppression": "Vda." + }, + { + "suppression": "Dr." + }, + { + "suppression": "ntro." + }, + { + "suppression": "Desv." + }, + { + "suppression": "O.M." + }, + { + "suppression": "Ldo." + }, + { + "suppression": "Drs." + }, + { + "suppression": "sáb." + }, + { + "suppression": "feb." + }, + { + "suppression": "Ltda." + }, + { + "suppression": "Lcda." + }, + { + "suppression": "Exma." + }, + { + "suppression": "C.V." + }, + { + "suppression": "SS.MM." + }, + { + "suppression": "Lda." + }, + { + "suppression": "U.S." + }, + { + "suppression": "hnos." + }, + { + "suppression": "R.D." + }, + { + "suppression": "Korn." + }, + { + "suppression": "v.gr." + }, + { + "suppression": "vs." + }, + { + "suppression": "Ilmas." + }, + { + "suppression": "Rdo." + }, + { + "suppression": "ej." + }, + { + "suppression": "vie." + }, + { + "suppression": "jue." + }, + { + "suppression": "a. C." + }, + { + "suppression": "Ilmos." + }, + { + "suppression": "e. c." + }, + { + "suppression": "Excma." + }, + { + "suppression": "afma." + }, + { + "suppression": "licda." + }, + { + "suppression": "Em." + }, + { + "suppression": "K." + }, + { + "suppression": "sras." + }, + { + "suppression": "MM." + }, + { + "suppression": "fund." + }, + { + "suppression": "Mons." + }, + { + "suppression": "Lcdo." + }, + { + "suppression": "afmo." + }, + { + "suppression": "C." + }, + { + "suppression": "A.C." + }, + { + "suppression": "dptos." + }, + { + "suppression": "Col." + }, + { + "suppression": "Srta." + }, + { + "suppression": "Av." + }, + { + "suppression": "Ant." + }, + { + "suppression": "depto." + }, + { + "suppression": "Var." + }, + { + "suppression": "H.P." + }, + { + "suppression": "D." + }, + { + "suppression": "M." + }, + { + "suppression": "C.P." + }, + { + "suppression": "Rev." + }, + { + "suppression": "Rvdmos." + }, + { + "suppression": "Fr." + }, + { + "suppression": "Ilmo." + }, + { + "suppression": "afmos." + }, + { + "suppression": "Ltd." + }, + { + "suppression": "afmas." + }, + { + "suppression": "prof." + }, + { + "suppression": "lun." + }, + { + "suppression": "SS.AA." + }, + { + "suppression": "Sol." + }, + { + "suppression": "nov." + }, + { + "suppression": "mss." + }, + { + "suppression": "Dña." + }, + { + "suppression": "Seg." + }, + { + "suppression": "mar." + }, + { + "suppression": "Rvdmo." + }, + { + "suppression": "Reg." + }, + { + "suppression": "ms." + }, + { + "suppression": "Sras." + }, + { + "suppression": "sres." + }, + { + "suppression": "U.S.A." + }, + { + "suppression": "Sta." + }, + { + "suppression": "Sdad." + }, + { + "suppression": "Dra." + }, + { + "suppression": "srs." + }, + { + "suppression": "R.U." + }, + { + "suppression": "deptos." + }, + { + "suppression": "dpto." + }, + { + "suppression": "jun." + }, + { + "suppression": "bco." + }, + { + "suppression": "Cía." + }, + { + "suppression": "Id." + }, + { + "suppression": "Mr." + }, + { + "suppression": "e.g." + }, + { + "suppression": "C.S." + }, + { + "suppression": "Excmas." + }, + { + "suppression": "Dª." + }, + { + "suppression": "Rvdo." + }, + { + "suppression": "Lic." + }, + { + "suppression": "cfr." + }, + { + "suppression": "Corp." + }, + { + "suppression": "Dto." + }, + { + "suppression": "Ilma." + }, + { + "suppression": "L." + }, + { + "suppression": "All." + }, + { + "suppression": "PP." + }, + { + "suppression": "d. C." + }, + { + "suppression": "Ltdo." + }, + { + "suppression": "mtro." + }, + { + "suppression": "Mrs." + }, + { + "suppression": "Desc." + }, + { + "suppression": "Avda." + }, + { + "suppression": "Exmas." + }, + { + "suppression": "a. e. c." + }, + { + "suppression": "Bien." + }, + { + "suppression": "Exmos." + }, + { + "suppression": "AA." + }, + { + "suppression": "Sto." + }, + { + "suppression": "CA." + }, + { + "suppression": "sept." + }, + { + "suppression": "Exc." + }, + { + "suppression": "c/c." + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/fi/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/fi/suppressions.json new file mode 100644 index 0000000..963b215 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/fi/suppressions.json @@ -0,0 +1,30 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "fi" + }, + "segmentations": { + "LineBreak": { + "variables": [ + { + "$BA": "[[$BA] - [\\u2010]]" + }, + { + "$HH": "[\\u2010]" + }, + { + "$HH": "($HH $X)" + } + ], + "segmentRules": { + "20.09": " $SP ÷ ($HY | $HH) $AL ", + "21.01": " × ($BA | $HH) " + } + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/fr/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/fr/suppressions.json new file mode 100644 index 0000000..666dd90 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/fr/suppressions.json @@ -0,0 +1,263 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "fr" + }, + "segmentations": { + "SentenceBreak": { + "standard": [ + { + "suppression": "aux." + }, + { + "suppression": "config." + }, + { + "suppression": "collab." + }, + { + "suppression": "M." + }, + { + "suppression": "dim." + }, + { + "suppression": "imprim." + }, + { + "suppression": "oct." + }, + { + "suppression": "syst." + }, + { + "suppression": "bull." + }, + { + "suppression": "MM." + }, + { + "suppression": "doc." + }, + { + "suppression": "P.O." + }, + { + "suppression": "hôp." + }, + { + "suppression": "Mart." + }, + { + "suppression": "juil." + }, + { + "suppression": "broch." + }, + { + "suppression": "adr." + }, + { + "suppression": "symb." + }, + { + "suppression": "C." + }, + { + "suppression": "anc." + }, + { + "suppression": "voit." + }, + { + "suppression": "Jr." + }, + { + "suppression": "graph." + }, + { + "suppression": "dir." + }, + { + "suppression": "éd." + }, + { + "suppression": "fig." + }, + { + "suppression": "édit." + }, + { + "suppression": "niv." + }, + { + "suppression": "quart." + }, + { + "suppression": "cam." + }, + { + "suppression": "éval." + }, + { + "suppression": "anon." + }, + { + "suppression": "réf." + }, + { + "suppression": "Comm." + }, + { + "suppression": "Prof." + }, + { + "suppression": "févr." + }, + { + "suppression": "indus." + }, + { + "suppression": "DC." + }, + { + "suppression": "équiv." + }, + { + "suppression": "illustr." + }, + { + "suppression": "acoust." + }, + { + "suppression": "nov." + }, + { + "suppression": "L." + }, + { + "suppression": "All." + }, + { + "suppression": "U.S." + }, + { + "suppression": "S.M.A.R.T." + }, + { + "suppression": "sept." + }, + { + "suppression": "avr." + }, + { + "suppression": "jeu." + }, + { + "suppression": "dest." + }, + { + "suppression": "P.-D. G." + }, + { + "suppression": "ill." + }, + { + "suppression": "coll." + }, + { + "suppression": "encycl." + }, + { + "suppression": "mer." + }, + { + "suppression": "Desc." + }, + { + "suppression": "ven." + }, + { + "suppression": "P." + }, + { + "suppression": "lun." + }, + { + "suppression": "Inc." + }, + { + "suppression": "sam." + }, + { + "suppression": "D." + }, + { + "suppression": "append." + }, + { + "suppression": "Var." + }, + { + "suppression": "categ." + }, + { + "suppression": "janv." + }, + { + "suppression": "S.A." + }, + { + "suppression": "imm." + }, + { + "suppression": "U.S.A." + }, + { + "suppression": "mar." + }, + { + "suppression": "exempl." + }, + { + "suppression": "déc." + }, + { + "suppression": "ann." + }, + { + "suppression": "U." + }, + { + "suppression": "synth." + }, + { + "suppression": "dict." + }, + { + "suppression": "av. J.-C." + }, + { + "suppression": "W." + }, + { + "suppression": "Op." + }, + { + "suppression": "ap. J.-C." + }, + { + "suppression": "gouv." + }, + { + "suppression": "trav. publ." + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/ja/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/ja/suppressions.json new file mode 100644 index 0000000..c71fd5d --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/ja/suppressions.json @@ -0,0 +1,43 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "ja" + }, + "segmentations": { + "LineBreak": { + "variables": [ + { + "$ID": "[[\\\\p{Line_Break=Ideographic}] [$CJ]]" + }, + { + "$NS": "\\\\p{Line_Break=Nonstarter}" + } + ] + }, + "WordBreak": { + "variables": [ + { + "$Hiragana": "\\\\p{Hiragana}" + }, + { + "$Hiragana": "($Hiragana $X)" + }, + { + "$Ideographic": "[[\\\\p{Ideographic}] [\\u3005 \\u3007 \\u303B]]" + }, + { + "$Ideographic": "($Ideographic $X)" + } + ], + "segmentRules": { + "13.05": " $Hiragana × $Hiragana ", + "13.06": " $Ideographic × $Ideographic " + } + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/pt/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/pt/suppressions.json new file mode 100644 index 0000000..d8669eb --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/pt/suppressions.json @@ -0,0 +1,533 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "pt" + }, + "segmentations": { + "SentenceBreak": { + "standard": [ + { + "suppression": "psicol." + }, + { + "suppression": "fig." + }, + { + "suppression": "compl." + }, + { + "suppression": "rep." + }, + { + "suppression": "cap." + }, + { + "suppression": "doc." + }, + { + "suppression": "fisiol." + }, + { + "suppression": "dipl." + }, + { + "suppression": "astron." + }, + { + "suppression": "port." + }, + { + "suppression": "eletrôn." + }, + { + "suppression": "geom." + }, + { + "suppression": "mov." + }, + { + "suppression": "ago." + }, + { + "suppression": "trad." + }, + { + "suppression": "arquit." + }, + { + "suppression": "dez." + }, + { + "suppression": "ed." + }, + { + "suppression": "apt." + }, + { + "suppression": "Exmo." + }, + { + "suppression": "col." + }, + { + "suppression": "ff." + }, + { + "suppression": "univ." + }, + { + "suppression": "res." + }, + { + "suppression": "R." + }, + { + "suppression": "transp." + }, + { + "suppression": "D.C" + }, + { + "suppression": "l." + }, + { + "suppression": "des." + }, + { + "suppression": "fev." + }, + { + "suppression": "abr." + }, + { + "suppression": "liter." + }, + { + "suppression": "lat." + }, + { + "suppression": "Dir." + }, + { + "suppression": "cf." + }, + { + "suppression": "adm." + }, + { + "suppression": "fot." + }, + { + "suppression": "p.m." + }, + { + "suppression": "P.M." + }, + { + "suppression": "créd." + }, + { + "suppression": "jur." + }, + { + "suppression": "com." + }, + { + "suppression": "anat." + }, + { + "suppression": "dir." + }, + { + "suppression": "end." + }, + { + "suppression": "fís." + }, + { + "suppression": "E." + }, + { + "suppression": "Est." + }, + { + "suppression": "cont." + }, + { + "suppression": "matem." + }, + { + "suppression": "Drs." + }, + { + "suppression": "gên." + }, + { + "suppression": "neol." + }, + { + "suppression": "pág." + }, + { + "suppression": "índ." + }, + { + "suppression": "Ltda." + }, + { + "suppression": "Exma." + }, + { + "suppression": "esp." + }, + { + "suppression": "ingl." + }, + { + "suppression": "tecnol." + }, + { + "suppression": "Mar." + }, + { + "suppression": "símb." + }, + { + "suppression": "Pe." + }, + { + "suppression": "pal." + }, + { + "suppression": "filos." + }, + { + "suppression": "V.T." + }, + { + "suppression": "fasc." + }, + { + "suppression": "vs." + }, + { + "suppression": "mai." + }, + { + "suppression": "S.A." + }, + { + "suppression": "profa." + }, + { + "suppression": "N.Sra." + }, + { + "suppression": "r.s.v.p." + }, + { + "suppression": "cel." + }, + { + "suppression": "mat." + }, + { + "suppression": "abrev." + }, + { + "suppression": "out." + }, + { + "suppression": "long." + }, + { + "suppression": "aux." + }, + { + "suppression": "arit." + }, + { + "suppression": "aer." + }, + { + "suppression": "jul." + }, + { + "suppression": "lin." + }, + { + "suppression": "S." + }, + { + "suppression": "méd." + }, + { + "suppression": "odontol." + }, + { + "suppression": "org." + }, + { + "suppression": "A.C." + }, + { + "suppression": "jun." + }, + { + "suppression": "déb." + }, + { + "suppression": "Av." + }, + { + "suppression": "álg." + }, + { + "suppression": "sup." + }, + { + "suppression": "fl." + }, + { + "suppression": "odont." + }, + { + "suppression": "caps." + }, + { + "suppression": "relat." + }, + { + "suppression": "organiz." + }, + { + "suppression": "hist." + }, + { + "suppression": "Fr." + }, + { + "suppression": "Ilmo." + }, + { + "suppression": "fem." + }, + { + "suppression": "ap." + }, + { + "suppression": "Ltd." + }, + { + "suppression": "pol." + }, + { + "suppression": "séc." + }, + { + "suppression": "prof." + }, + { + "suppression": "cx." + }, + { + "suppression": "nov." + }, + { + "suppression": "quím." + }, + { + "suppression": "mús." + }, + { + "suppression": "agric." + }, + { + "suppression": "mar." + }, + { + "suppression": "W.C." + }, + { + "suppression": "fr." + }, + { + "suppression": "cat." + }, + { + "suppression": "jan." + }, + { + "suppression": "pron." + }, + { + "suppression": "rel." + }, + { + "suppression": "autom." + }, + { + "suppression": "Sta." + }, + { + "suppression": "Dra." + }, + { + "suppression": "p." + }, + { + "suppression": "tel." + }, + { + "suppression": "div." + }, + { + "suppression": "p. ex." + }, + { + "suppression": "a.C." + }, + { + "suppression": "bras." + }, + { + "suppression": "Alm." + }, + { + "suppression": "Dr." + }, + { + "suppression": "comp." + }, + { + "suppression": "pq." + }, + { + "suppression": "arqueol." + }, + { + "suppression": "náut." + }, + { + "suppression": "biogr." + }, + { + "suppression": "f." + }, + { + "suppression": "círc." + }, + { + "suppression": "fac." + }, + { + "suppression": "d.C." + }, + { + "suppression": "apart." + }, + { + "suppression": "ex." + }, + { + "suppression": "Jr." + }, + { + "suppression": "set." + }, + { + "suppression": "tec." + }, + { + "suppression": "sociol." + }, + { + "suppression": "gram." + }, + { + "suppression": "ind." + }, + { + "suppression": "Ilma." + }, + { + "suppression": "vol." + }, + { + "suppression": "eng." + }, + { + "suppression": "rod." + }, + { + "suppression": "Ph.D." + }, + { + "suppression": "Dras." + }, + { + "suppression": "pp." + }, + { + "suppression": "elem." + }, + { + "suppression": "máq." + }, + { + "suppression": "cód." + }, + { + "suppression": "eletr." + }, + { + "suppression": "prod." + }, + { + "suppression": "ref." + }, + { + "suppression": "fil." + }, + { + "suppression": "a.m." + }, + { + "suppression": "A.M" + }, + { + "suppression": "obs." + }, + { + "suppression": "N.T." + }, + { + "suppression": "contab." + }, + { + "suppression": "Sto." + }, + { + "suppression": "lit." + }, + { + "suppression": "educ." + }, + { + "suppression": "rementente" + }, + { + "suppression": "desc." + }, + { + "suppression": "próx." + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/root/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/root/suppressions.json new file mode 100644 index 0000000..a3c61ee --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/root/suppressions.json @@ -0,0 +1,562 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 12321 $", + "_cldrVersion": "29" + }, + "language": "root" + }, + "segmentations": { + "GraphemeClusterBreak": { + "variables": [ + { + "$CR": "\\\\p{Grapheme_Cluster_Break=CR}" + }, + { + "$LF": "\\\\p{Grapheme_Cluster_Break=LF}" + }, + { + "$Control": "\\\\p{Grapheme_Cluster_Break=Control}" + }, + { + "$Extend": "\\\\p{Grapheme_Cluster_Break=Extend}" + }, + { + "$SpacingMark": "\\\\p{Grapheme_Cluster_Break=SpacingMark}" + }, + { + "$L": "\\\\p{Grapheme_Cluster_Break=L}" + }, + { + "$V": "\\\\p{Grapheme_Cluster_Break=V}" + }, + { + "$T": "\\\\p{Grapheme_Cluster_Break=T}" + }, + { + "$LV": "\\\\p{Grapheme_Cluster_Break=LV}" + }, + { + "$LVT": "\\\\p{Grapheme_Cluster_Break=LVT}" + }, + { + "$Regional_Indicator": "\\\\p{Grapheme_Cluster_Break=Regional_Indicator}" + } + ], + "segmentRules": { + "3": " $CR × $LF ", + "4": " ( $Control | $CR | $LF ) ÷ ", + "5": " ÷ ( $Control | $CR | $LF ) ", + "6": " $L × ( $L | $V | $LV | $LVT ) ", + "7": " ( $LV | $V ) × ( $V | $T ) ", + "8": " ( $LVT | $T) × $T ", + "8.1": " $Regional_Indicator × $Regional_Indicator ", + "9": " × $Extend ", + "9.1": " × $SpacingMark " + } + }, + "LineBreak": { + "variables": [ + { + "$AI": "\\\\p{Line_Break=Ambiguous}" + }, + { + "$AL": "\\\\p{Line_Break=Alphabetic}" + }, + { + "$B2": "\\\\p{Line_Break=Break_Both}" + }, + { + "$BA": "\\\\p{Line_Break=Break_After}" + }, + { + "$BB": "\\\\p{Line_Break=Break_Before}" + }, + { + "$BK": "\\\\p{Line_Break=Mandatory_Break}" + }, + { + "$CB": "\\\\p{Line_Break=Contingent_Break}" + }, + { + "$CL": "\\\\p{Line_Break=Close_Punctuation}" + }, + { + "$CP": "\\\\p{Line_Break=CP}" + }, + { + "$CM": "\\\\p{Line_Break=Combining_Mark}" + }, + { + "$CR": "\\\\p{Line_Break=Carriage_Return}" + }, + { + "$EX": "\\\\p{Line_Break=Exclamation}" + }, + { + "$GL": "\\\\p{Line_Break=Glue}" + }, + { + "$H2": "\\\\p{Line_Break=H2}" + }, + { + "$H3": "\\\\p{Line_Break=H3}" + }, + { + "$HL": "\\\\p{Line_Break=HL}" + }, + { + "$HY": "\\\\p{Line_Break=Hyphen}" + }, + { + "$ID": "\\\\p{Line_Break=Ideographic}" + }, + { + "$IN": "\\\\p{Line_Break=Inseparable}" + }, + { + "$IS": "\\\\p{Line_Break=Infix_Numeric}" + }, + { + "$JL": "\\\\p{Line_Break=JL}" + }, + { + "$JT": "\\\\p{Line_Break=JT}" + }, + { + "$JV": "\\\\p{Line_Break=JV}" + }, + { + "$LF": "\\\\p{Line_Break=Line_Feed}" + }, + { + "$NL": "\\\\p{Line_Break=Next_Line}" + }, + { + "$NS": "\\\\p{Line_Break=Nonstarter}" + }, + { + "$NU": "\\\\p{Line_Break=Numeric}" + }, + { + "$OP": "\\\\p{Line_Break=Open_Punctuation}" + }, + { + "$PO": "\\\\p{Line_Break=Postfix_Numeric}" + }, + { + "$PR": "\\\\p{Line_Break=Prefix_Numeric}" + }, + { + "$QU": "\\\\p{Line_Break=Quotation}" + }, + { + "$SA": "\\\\p{Line_Break=Complex_Context}" + }, + { + "$SG": "\\\\p{Line_Break=Surrogate}" + }, + { + "$SP": "\\\\p{Line_Break=Space}" + }, + { + "$SY": "\\\\p{Line_Break=Break_Symbols}" + }, + { + "$WJ": "\\\\p{Line_Break=Word_Joiner}" + }, + { + "$XX": "\\\\p{Line_Break=Unknown}" + }, + { + "$ZW": "\\\\p{Line_Break=ZWSpace}" + }, + { + "$CJ": "\\\\p{Line_Break=Conditional_Japanese_Starter}" + }, + { + "$RI": "\\\\p{Line_Break=Regional_Indicator}" + }, + { + "$AL": "[$AI $AL $XX $SA $SG]" + }, + { + "$NS": "[$NS $CJ]" + }, + { + "$X": "$CM*" + }, + { + "$Spec1_": "[$SP $BK $CR $LF $NL $ZW]" + }, + { + "$Spec2_": "[^ $SP $BK $CR $LF $NL $ZW]" + }, + { + "$Spec3a_": "[^ $SP $BA $HY $CM]" + }, + { + "$Spec3b_": "[^ $BA $HY $CM]" + }, + { + "$Spec4_": "[^ $NU $CM]" + }, + { + "$AI": "($AI $X)" + }, + { + "$AL": "($AL $X)" + }, + { + "$B2": "($B2 $X)" + }, + { + "$BA": "($BA $X)" + }, + { + "$BB": "($BB $X)" + }, + { + "$CB": "($CB $X)" + }, + { + "$CL": "($CL $X)" + }, + { + "$CP": "($CP $X)" + }, + { + "$CM": "($CM $X)" + }, + { + "$CM": "($CM $X)" + }, + { + "$GL": "($GL $X)" + }, + { + "$H2": "($H2 $X)" + }, + { + "$H3": "($H3 $X)" + }, + { + "$HL": "($HL $X)" + }, + { + "$HY": "($HY $X)" + }, + { + "$ID": "($ID $X)" + }, + { + "$IN": "($IN $X)" + }, + { + "$IS": "($IS $X)" + }, + { + "$JL": "($JL $X)" + }, + { + "$JT": "($JT $X)" + }, + { + "$JV": "($JV $X)" + }, + { + "$NS": "($NS $X)" + }, + { + "$NU": "($NU $X)" + }, + { + "$OP": "($OP $X)" + }, + { + "$PO": "($PO $X)" + }, + { + "$PR": "($PR $X)" + }, + { + "$QU": "($QU $X)" + }, + { + "$SA": "($SA $X)" + }, + { + "$SG": "($SG $X)" + }, + { + "$SY": "($SY $X)" + }, + { + "$WJ": "($WJ $X)" + }, + { + "$XX": "($XX $X)" + }, + { + "$RI": "($RI $X)" + }, + { + "$AL": "($AL | ^ $CM | (?<=$Spec1_) $CM)" + } + ], + "segmentRules": { + "4": " $BK ÷ ", + "5.01": " $CR × $LF ", + "5.02": " $CR ÷ ", + "5.03": " $LF ÷ ", + "5.04": " $NL ÷ ", + "6": " × ( $BK | $CR | $LF | $NL ) ", + "7.01": " × $SP ", + "7.02": " × $ZW ", + "8": " $ZW $SP* ÷ ", + "9": " $Spec2_ × $CM ", + "11.01": " × $WJ ", + "11.02": " $WJ × ", + "12": " $GL × ", + "12.1": " $Spec3a_ × $GL ", + "12.2": " $Spec3b_ $CM+ × $GL ", + "12.3": " ^ $CM+ × $GL ", + "13.01": " × $EX ", + "13.02": " $Spec4_ × ($CL | $CP | $IS | $SY) ", + "13.03": " $Spec4_ $CM+ × ($CL | $CP | $IS | $SY) ", + "13.04": " ^ $CM+ × ($CL | $CP | $IS | $SY) ", + "14": " $OP $SP* × ", + "15": " $QU $SP* × $OP ", + "16": " ($CL | $CP) $SP* × $NS ", + "17": " $B2 $SP* × $B2 ", + "18": " $SP ÷ ", + "19.01": " × $QU ", + "19.02": " $QU × ", + "20.01": " ÷ $CB ", + "20.02": " $CB ÷ ", + "21.01": " × $BA ", + "21.02": " × $HY ", + "21.03": " × $NS ", + "21.04": " $BB × ", + "21.1": " $HL ($HY | $BA) × ", + "21.2": " $SY × $HL ", + "22.01": " ($AL | $HL) × $IN ", + "22.02": " $ID × $IN ", + "22.03": " $IN × $IN ", + "22.04": " $NU × $IN ", + "22.05": " $EX × $IN ", + "23.01": " $ID × $PO ", + "23.02": " ($AL | $HL) × $NU ", + "23.03": " $NU × ($AL | $HL) ", + "24.01": " $PR × $ID ", + "24.02": " $PR × ($AL | $HL) ", + "24.03": " $PO × ($AL | $HL) ", + "25.01": " ($PR | $PO) × ( $OP | $HY )? $NU ", + "25.02": " ( $OP | $HY ) × $NU ", + "25.03": " $NU × ($NU | $SY | $IS) ", + "25.04": " $NU ($NU | $SY | $IS)* × ($NU | $SY | $IS | $CL | $CP) ", + "25.05": " $NU ($NU | $SY | $IS)* ($CL | $CP)? × ($PO | $PR) ", + "26.01": " $JL × $JL | $JV | $H2 | $H3 ", + "26.02": " $JV | $H2 × $JV | $JT ", + "26.03": " $JT | $H3 × $JT ", + "27.01": " $JL | $JV | $JT | $H2 | $H3 × $IN ", + "27.02": " $JL | $JV | $JT | $H2 | $H3 × $PO ", + "27.03": " $PR × $JL | $JV | $JT | $H2 | $H3 ", + "28": " ($AL | $HL) × ($AL | $HL) ", + "29": " $IS × ($AL | $HL) ", + "30.01": " ($AL | $HL | $NU) × $OP ", + "30.02": " $CP × ($AL | $HL | $NU) ", + "30.11": " $RI × $RI " + } + }, + "SentenceBreak": { + "variables": [ + { + "$CR": "\\\\p{Sentence_Break=CR}" + }, + { + "$LF": "\\\\p{Sentence_Break=LF}" + }, + { + "$Extend": "\\\\p{Sentence_Break=Extend}" + }, + { + "$Format": "\\\\p{Sentence_Break=Format}" + }, + { + "$Sep": "\\\\p{Sentence_Break=Sep}" + }, + { + "$Sp": "\\\\p{Sentence_Break=Sp}" + }, + { + "$Lower": "\\\\p{Sentence_Break=Lower}" + }, + { + "$Upper": "\\\\p{Sentence_Break=Upper}" + }, + { + "$OLetter": "\\\\p{Sentence_Break=OLetter}" + }, + { + "$Numeric": "\\\\p{Sentence_Break=Numeric}" + }, + { + "$ATerm": "\\\\p{Sentence_Break=ATerm}" + }, + { + "$STerm": "\\\\p{Sentence_Break=STerm}" + }, + { + "$Close": "\\\\p{Sentence_Break=Close}" + }, + { + "$SContinue": "\\\\p{Sentence_Break=SContinue}" + }, + { + "$Any": "." + }, + { + "$FE": "[$Format $Extend]" + }, + { + "$NotPreLower_": "[^ $OLetter $Upper $Lower $Sep $CR $LF $STerm $ATerm]" + }, + { + "$Sp": "($Sp $FE*)" + }, + { + "$Lower": "($Lower $FE*)" + }, + { + "$Upper": "($Upper $FE*)" + }, + { + "$OLetter": "($OLetter $FE*)" + }, + { + "$Numeric": "($Numeric $FE*)" + }, + { + "$ATerm": "($ATerm $FE*)" + }, + { + "$STerm": "($STerm $FE*)" + }, + { + "$Close": "($Close $FE*)" + }, + { + "$SContinue": "($SContinue $FE*)" + } + ], + "segmentRules": { + "3": " $CR × $LF ", + "4": " ($Sep | $CR | $LF) ÷ ", + "5": " × [$Format $Extend] ", + "6": " $ATerm × $Numeric ", + "7": " ($Upper | $Lower) $ATerm × $Upper ", + "8": " $ATerm $Close* $Sp* × $NotPreLower_* $Lower ", + "8.1": " ($STerm | $ATerm) $Close* $Sp* × ($SContinue | $STerm | $ATerm) ", + "9": " ( $STerm | $ATerm ) $Close* × ( $Close | $Sp | $Sep | $CR | $LF ) ", + "10": " ( $STerm | $ATerm ) $Close* $Sp* × ( $Sp | $Sep | $CR | $LF ) ", + "11": " ( $STerm | $ATerm ) $Close* $Sp* ($Sep | $CR | $LF)? ÷ ", + "12": " × $Any " + }, + "standard": {} + }, + "WordBreak": { + "variables": [ + { + "$CR": "\\\\p{Word_Break=CR}" + }, + { + "$LF": "\\\\p{Word_Break=LF}" + }, + { + "$Newline": "\\\\p{Word_Break=Newline}" + }, + { + "$Extend": "\\\\p{Word_Break=Extend}" + }, + { + "$Format": "\\\\p{Word_Break=Format}" + }, + { + "$Katakana": "\\\\p{Word_Break=Katakana}" + }, + { + "$ALetter": "\\\\p{Word_Break=ALetter}" + }, + { + "$MidLetter": "\\\\p{Word_Break=MidLetter}" + }, + { + "$MidNum": "\\\\p{Word_Break=MidNum}" + }, + { + "$MidNumLet": "\\\\p{Word_Break=MidNumLet}" + }, + { + "$Numeric": "\\\\p{Word_Break=Numeric}" + }, + { + "$ExtendNumLet": "\\\\p{Word_Break=ExtendNumLet}" + }, + { + "$Regional_Indicator": "\\\\p{Word_Break=Regional_Indicator}" + }, + { + "$FE": "[$Format $Extend]" + }, + { + "$NotBreak_": "[^ $Newline $CR $LF ]" + }, + { + "$Katakana": "($Katakana $FE*)" + }, + { + "$ALetter": "($ALetter $FE*)" + }, + { + "$MidLetter": "($MidLetter $FE*)" + }, + { + "$MidNum": "($MidNum $FE*)" + }, + { + "$MidNumLet": "($MidNumLet $FE*)" + }, + { + "$Numeric": "($Numeric $FE*)" + }, + { + "$ExtendNumLet": "($ExtendNumLet $FE*)" + }, + { + "$Regional_Indicator": "($Regional_Indicator $FE*)" + } + ], + "segmentRules": { + "3": " $CR × $LF ", + "3.1": " ($Newline | $CR | $LF) ÷ ", + "3.2": " ÷ ($Newline | $CR | $LF) ", + "4": " $NotBreak_ × [$Format $Extend] ", + "5": " $ALetter × $ALetter ", + "6": " $ALetter × ($MidLetter | $MidNumLet) $ALetter ", + "7": " $ALetter ($MidLetter | $MidNumLet) × $ALetter ", + "8": " $Numeric × $Numeric ", + "9": " $ALetter × $Numeric ", + "10": " $Numeric × $ALetter ", + "11": " $Numeric ($MidNum | $MidNumLet) × $Numeric ", + "12": " $Numeric × ($MidNum | $MidNumLet) $Numeric ", + "13": " $Katakana × $Katakana ", + "13.1": " ($ALetter | $Numeric | $Katakana | $ExtendNumLet) × $ExtendNumLet ", + "13.2": " $ExtendNumLet × ($ALetter | $Numeric | $Katakana) ", + "13.3": " $Regional_Indicator × $Regional_Indicator " + } + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/ru/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/ru/suppressions.json new file mode 100644 index 0000000..4ae5e13 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/ru/suppressions.json @@ -0,0 +1,71 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "ru" + }, + "segmentations": { + "SentenceBreak": { + "standard": [ + { + "suppression": "руб." + }, + { + "suppression": "янв." + }, + { + "suppression": "до н. э." + }, + { + "suppression": "сент." + }, + { + "suppression": "тел." + }, + { + "suppression": "дек." + }, + { + "suppression": "февр." + }, + { + "suppression": "нояб." + }, + { + "suppression": "апр." + }, + { + "suppression": "н. э." + }, + { + "suppression": "окт." + }, + { + "suppression": "тыс." + }, + { + "suppression": "авг." + }, + { + "suppression": "проф." + }, + { + "suppression": "н.э." + }, + { + "suppression": "кв." + }, + { + "suppression": "ул." + }, + { + "suppression": "отд." + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/zh-Hant/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/zh-Hant/suppressions.json new file mode 100644 index 0000000..ba398e1 --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/zh-Hant/suppressions.json @@ -0,0 +1,23 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "zh-Hant" + }, + "segmentations": { + "LineBreak": { + "variables": [ + { + "$ID": "[[\\\\p{Line_Break=Ideographic}] [$CJ]]" + }, + { + "$NS": "\\\\p{Line_Break=Nonstarter}" + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldr-data/segments/zh/suppressions.json b/StockManMVC/bower_components/cldr-data/segments/zh/suppressions.json new file mode 100644 index 0000000..37efe7c --- /dev/null +++ b/StockManMVC/bower_components/cldr-data/segments/zh/suppressions.json @@ -0,0 +1,23 @@ +{ + "segments": { + "identity": { + "version": { + "_number": "$Revision: 11914 $", + "_cldrVersion": "29" + }, + "language": "zh" + }, + "segmentations": { + "LineBreak": { + "variables": [ + { + "$ID": "[[\\\\p{Line_Break=Ideographic}] [$CJ]]" + }, + { + "$NS": "\\\\p{Line_Break=Nonstarter}" + } + ] + } + } + } +} diff --git a/StockManMVC/bower_components/cldrjs/dist/cldr.js b/StockManMVC/bower_components/cldrjs/dist/cldr.js new file mode 100644 index 0000000..956afca --- /dev/null +++ b/StockManMVC/bower_components/cldrjs/dist/cldr.js @@ -0,0 +1,676 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( root, factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory(); + } else { + // Global + root.Cldr = factory(); + } + +}( this, function() { + + + var arrayIsArray = Array.isArray || function( obj ) { + return Object.prototype.toString.call( obj ) === "[object Array]"; + }; + + + + + var pathNormalize = function( path, attributes ) { + if ( arrayIsArray( path ) ) { + path = path.join( "/" ); + } + if ( typeof path !== "string" ) { + throw new Error( "invalid path \"" + path + "\"" ); + } + // 1: Ignore leading slash `/` + // 2: Ignore leading `cldr/` + path = path + .replace( /^\// , "" ) /* 1 */ + .replace( /^cldr\// , "" ); /* 2 */ + + // Replace {attribute}'s + path = path.replace( /{[a-zA-Z]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return attributes[ name ]; + }); + + return path.split( "/" ); + }; + + + + + var arraySome = function( array, callback ) { + var i, length; + if ( array.some ) { + return array.some( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + if ( callback( array[ i ], i, array ) ) { + return true; + } + } + return false; + }; + + + + + /** + * Return the maximized language id as defined in + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. Canonicalize. + * 1.1 Make sure the input locale is in canonical form: uses the right + * separator, and has the right casing. + * TODO Right casing? What df? It seems languages are lowercase, scripts are + * Capitalized, territory is uppercase. I am leaving this as an exercise to + * the user. + * + * 1.2 Replace any deprecated subtags with their canonical values using the + * data in supplemental metadata. Use the first value in the + * replacement list, if it exists. Language tag replacements may have multiple + * parts, such as "sh" ➞ "sr_Latn" or mo" ➞ "ro_MD". In such a case, the + * original script and/or region are retained if there is one. Thus + * "sh_Arab_AQ" ➞ "sr_Arab_AQ", not "sr_Latn_AQ". + * TODO What data? + * + * 1.3 If the tag is grandfathered (see in the supplemental data), then return it. + * TODO grandfathered? + * + * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur. + * 1.5 Get the components of the cleaned-up source tag (languages, scripts, + * and regions), plus any variants and extensions. + * 2. Lookup. Lookup each of the following in order, and stop on the first + * match: + * 2.1 languages_scripts_regions + * 2.2 languages_regions + * 2.3 languages_scripts + * 2.4 languages + * 2.5 und_scripts + * 3. Return + * 3.1 If there is no match, either return an error value, or the match for + * "und" (in APIs where a valid language tag is required). + * 3.2 Otherwise there is a match = languagem_scriptm_regionm + * 3.3 Let xr = xs if xs is not empty, and xm otherwise. + * 3.4 Return the language tag composed of languager _ scriptr _ regionr + + * variants + extensions. + * + * @subtags [Array] normalized language id subtags tuple (see init.js). + */ + var coreLikelySubtags = function( Cldr, cldr, subtags, options ) { + var match, matchFound, + language = subtags[ 0 ], + script = subtags[ 1 ], + sep = Cldr.localeSep, + territory = subtags[ 2 ], + variantsAndUnicodeLocaleExtensions = subtags.slice( 3, 4 ); + options = options || {}; + + // Skip if (language, script, territory) is not empty [3.3] + if ( language !== "und" && script !== "Zzzz" && territory !== "ZZ" ) { + return [ language, script, territory ].concat( variantsAndUnicodeLocaleExtensions ); + } + + // Skip if no supplemental likelySubtags data is present + if ( typeof cldr.get( "supplemental/likelySubtags" ) === "undefined" ) { + return; + } + + // [2] + matchFound = arraySome([ + [ language, script, territory ], + [ language, territory ], + [ language, script ], + [ language ], + [ "und", script ] + ], function( test ) { + return match = !(/\b(Zzzz|ZZ)\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ "supplemental/likelySubtags", test.join( sep ) ] ); + }); + + // [3] + if ( matchFound ) { + // [3.2 .. 3.4] + match = match.split( sep ); + return [ + language !== "und" ? language : match[ 0 ], + script !== "Zzzz" ? script : match[ 1 ], + territory !== "ZZ" ? territory : match[ 2 ] + ].concat( + variantsAndUnicodeLocaleExtensions + ); + } else if ( options.force ) { + // [3.1.2] + return cldr.get( "supplemental/likelySubtags/und" ).split( sep ); + } else { + // [3.1.1] + return; + } + }; + + + + /** + * Given a locale, remove any fields that Add Likely Subtags would add. + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled, + * return it. + * 2. Remove the variants from max. + * 3. Then for trial in {language, language _ region, language _ script}. If + * AddLikelySubtags(trial) = max, then return trial + variants. + * 4. If you do not get a match, return max + variants. + * + * @maxLanguageId [Array] maxLanguageId tuple (see init.js). + */ + var coreRemoveLikelySubtags = function( Cldr, cldr, maxLanguageId ) { + var match, matchFound, + language = maxLanguageId[ 0 ], + script = maxLanguageId[ 1 ], + territory = maxLanguageId[ 2 ], + variants = maxLanguageId[ 3 ]; + + // [3] + matchFound = arraySome([ + [ [ language, "Zzzz", "ZZ" ], [ language ] ], + [ [ language, "Zzzz", territory ], [ language, territory ] ], + [ [ language, script, "ZZ" ], [ language, script ] ] + ], function( test ) { + var result = coreLikelySubtags( Cldr, cldr, test[ 0 ] ); + match = test[ 1 ]; + return result && result[ 0 ] === maxLanguageId[ 0 ] && + result[ 1 ] === maxLanguageId[ 1 ] && + result[ 2 ] === maxLanguageId[ 2 ]; + }); + + if ( matchFound ) { + if ( variants ) { + match.push( variants ); + } + return match; + } + + // [4] + return maxLanguageId; + }; + + + + + /** + * subtags( locale ) + * + * @locale [String] + */ + var coreSubtags = function( locale ) { + var aux, unicodeLanguageId, + subtags = []; + + locale = locale.replace( /_/, "-" ); + + // Unicode locale extensions. + aux = locale.split( "-u-" ); + if ( aux[ 1 ] ) { + aux[ 1 ] = aux[ 1 ].split( "-t-" ); + locale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? "-t-" + aux[ 1 ][ 1 ] : ""); + subtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ]; + } + + // TODO normalize transformed extensions. Currently, skipped. + // subtags[ x ] = locale.split( "-t-" )[ 1 ]; + unicodeLanguageId = locale.split( "-t-" )[ 0 ]; + + // unicode_language_id = "root" + // | unicode_language_subtag + // (sep unicode_script_subtag)? + // (sep unicode_region_subtag)? + // (sep unicode_variant_subtag)* ; + // + // Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3. + aux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)((-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*)$|^(root)$/ ); + if ( aux === null ) { + return [ "und", "Zzzz", "ZZ" ]; + } + subtags[ 0 /* language */ ] = aux[ 10 ] /* root */ || aux[ 2 ] || "und"; + subtags[ 1 /* script */ ] = aux[ 4 ] || "Zzzz"; + subtags[ 2 /* territory */ ] = aux[ 6 ] || "ZZ"; + if ( aux[ 7 ] && aux[ 7 ].length ) { + subtags[ 3 /* variant */ ] = aux[ 7 ].slice( 1 ) /* remove leading "-" */; + } + + // 0: language + // 1: script + // 2: territory (aka region) + // 3: variant + // 4: unicodeLocaleExtensions + return subtags; + }; + + + + + var arrayForEach = function( array, callback ) { + var i, length; + if ( array.forEach ) { + return array.forEach( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + callback( array[ i ], i, array ); + } + }; + + + + + /** + * bundleLookup( minLanguageId ) + * + * @Cldr [Cldr class] + * + * @cldr [Cldr instance] + * + * @minLanguageId [String] requested languageId after applied remove likely subtags. + */ + var bundleLookup = function( Cldr, cldr, minLanguageId ) { + var availableBundleMap = Cldr._availableBundleMap, + availableBundleMapQueue = Cldr._availableBundleMapQueue; + + if ( availableBundleMapQueue.length ) { + arrayForEach( availableBundleMapQueue, function( bundle ) { + var existing, maxBundle, minBundle, subtags; + subtags = coreSubtags( bundle ); + maxBundle = coreLikelySubtags( Cldr, cldr, subtags ); + minBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle ); + minBundle = minBundle.join( Cldr.localeSep ); + existing = availableBundleMapQueue[ minBundle ]; + if ( existing && existing.length < bundle.length ) { + return; + } + availableBundleMap[ minBundle ] = bundle; + }); + Cldr._availableBundleMapQueue = []; + } + + return availableBundleMap[ minLanguageId ] || null; + }; + + + + + var objectKeys = function( object ) { + var i, + result = []; + + if ( Object.keys ) { + return Object.keys( object ); + } + + for ( i in object ) { + result.push( i ); + } + + return result; + }; + + + + + var createError = function( code, attributes ) { + var error, message; + + message = code + ( attributes && JSON ? ": " + JSON.stringify( attributes ) : "" ); + error = new Error( message ); + error.code = code; + + // extend( error, attributes ); + arrayForEach( objectKeys( attributes ), function( attribute ) { + error[ attribute ] = attributes[ attribute ]; + }); + + return error; + }; + + + + + var validate = function( code, check, attributes ) { + if ( !check ) { + throw createError( code, attributes ); + } + }; + + + + + var validatePresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", typeof value !== "undefined", { + name: name + }); + }; + + + + + var validateType = function( value, name, check, expected ) { + validate( "E_INVALID_PAR_TYPE", check, { + expected: expected, + name: name, + value: value + }); + }; + + + + + var validateTypePath = function( value, name ) { + validateType( value, name, typeof value === "string" || arrayIsArray( value ), "String or Array" ); + }; + + + + + /** + * Function inspired by jQuery Core, but reduced to our use case. + */ + var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; + }; + + + + + var validateTypePlainObject = function( value, name ) { + validateType( value, name, typeof value === "undefined" || isPlainObject( value ), "Plain Object" ); + }; + + + + + var validateTypeString = function( value, name ) { + validateType( value, name, typeof value === "string", "a string" ); + }; + + + + + // @path: normalized path + var resourceGet = function( data, path ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + node = node[ path[ i ] ]; + if ( !node ) { + return undefined; + } + } + return node[ path[ i ] ]; + }; + + + + + /** + * setAvailableBundles( Cldr, json ) + * + * @Cldr [Cldr class] + * + * @json resolved/unresolved cldr data. + * + * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}. + */ + var coreSetAvailableBundles = function( Cldr, json ) { + var bundle, + availableBundleMapQueue = Cldr._availableBundleMapQueue, + main = resourceGet( json, [ "main" ] ); + + if ( main ) { + for ( bundle in main ) { + if ( main.hasOwnProperty( bundle ) && bundle !== "root" && + availableBundleMapQueue.indexOf( bundle ) === -1 ) { + availableBundleMapQueue.push( bundle ); + } + } + } + }; + + + + var alwaysArray = function( somethingOrArray ) { + return arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ]; + }; + + + var jsonMerge = (function() { + + // Returns new deeply merged JSON. + // + // Eg. + // merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } ) + // -> { a: { b: 3, c: 2, d: 4 } } + // + // @arguments JSON's + // + var merge = function() { + var destination = {}, + sources = [].slice.call( arguments, 0 ); + arrayForEach( sources, function( source ) { + var prop; + for ( prop in source ) { + if ( prop in destination && typeof destination[ prop ] === "object" && !arrayIsArray( destination[ prop ] ) ) { + + // Merge Objects + destination[ prop ] = merge( destination[ prop ], source[ prop ] ); + + } else { + + // Set new values + destination[ prop ] = source[ prop ]; + + } + } + }); + return destination; + }; + + return merge; + +}()); + + + /** + * load( Cldr, source, jsons ) + * + * @Cldr [Cldr class] + * + * @source [Object] + * + * @jsons [arguments] + */ + var coreLoad = function( Cldr, source, jsons ) { + var i, j, json; + + validatePresence( jsons[ 0 ], "json" ); + + // Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`. + for ( i = 0; i < jsons.length; i++ ) { + + // Support array parameters, e.g., `Cldr.load([{...}, {...}])`. + json = alwaysArray( jsons[ i ] ); + + for ( j = 0; j < json.length; j++ ) { + validateTypePlainObject( json[ j ], "json" ); + source = jsonMerge( source, json[ j ] ); + coreSetAvailableBundles( Cldr, json[ j ] ); + } + } + + return source; + }; + + + + var itemGetResolved = function( Cldr, path, attributes ) { + // Resolve path + var normalizedPath = pathNormalize( path, attributes ); + + return resourceGet( Cldr._resolved, normalizedPath ); + }; + + + + + /** + * new Cldr() + */ + var Cldr = function( locale ) { + this.init( locale ); + }; + + // Build optimization hack to avoid duplicating functions across modules. + Cldr._alwaysArray = alwaysArray; + Cldr._coreLoad = coreLoad; + Cldr._createError = createError; + Cldr._itemGetResolved = itemGetResolved; + Cldr._jsonMerge = jsonMerge; + Cldr._pathNormalize = pathNormalize; + Cldr._resourceGet = resourceGet; + Cldr._validatePresence = validatePresence; + Cldr._validateType = validateType; + Cldr._validateTypePath = validateTypePath; + Cldr._validateTypePlainObject = validateTypePlainObject; + + Cldr._availableBundleMap = {}; + Cldr._availableBundleMapQueue = []; + Cldr._resolved = {}; + + // Allow user to override locale separator "-" (default) | "_". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both "-" and "_" are valid locale separators (eg. "en_GB", "en-GB"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set. + Cldr.localeSep = "-"; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved cldr data. + */ + Cldr.load = function() { + Cldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments ); + }; + + /** + * .init() automatically run on instantiation/construction. + */ + Cldr.prototype.init = function( locale ) { + var attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant, + sep = Cldr.localeSep; + + validatePresence( locale, "locale" ); + validateTypeString( locale, "locale" ); + + subtags = coreSubtags( locale ); + + unicodeLocaleExtensions = subtags[ 4 ]; + variant = subtags[ 3 ]; + + // Normalize locale code. + // Get (or deduce) the "triple subtags": language, territory (also aliased as region), and script subtags. + // Get the variant subtags (calendar, collation, currency, etc). + // refs: + // - http://www.unicode.org/reports/tr35/#Field_Definitions + // - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs + // - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier + + // When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags. + maxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags; + language = maxLanguageId[ 0 ]; + script = maxLanguageId[ 1 ]; + territory = maxLanguageId[ 2 ]; + + minLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep ); + + // Set attributes + this.attributes = attributes = { + bundle: bundleLookup( Cldr, this, minLanguageId ), + + // Unicode Language Id + minlanguageId: minLanguageId, + maxLanguageId: maxLanguageId.join( sep ), + + // Unicode Language Id Subtabs + language: language, + script: script, + territory: territory, + region: territory, /* alias */ + variant: variant + }; + + // Unicode locale extensions. + unicodeLocaleExtensions && ( "-" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) { + + if ( key ) { + + // Extension is in the `keyword` form. + attributes[ "u" + key ] = type; + } else { + + // Extension is in the `attribute` form. + attributes[ "u" + attribute ] = true; + } + }); + + this.locale = locale; + }; + + /** + * .get() + */ + Cldr.prototype.get = function( path ) { + + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + return itemGetResolved( Cldr, path, this.attributes ); + }; + + /** + * .main() + */ + Cldr.prototype.main = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + validate( "E_MISSING_BUNDLE", this.attributes.bundle !== null, { + locale: this.locale + }); + + path = alwaysArray( path ); + return this.get( [ "main/{bundle}" ].concat( path ) ); + }; + + return Cldr; + + + + +})); diff --git a/StockManMVC/bower_components/cldrjs/dist/cldr/event.js b/StockManMVC/bower_components/cldrjs/dist/cldr/event.js new file mode 100644 index 0000000..121b5c8 --- /dev/null +++ b/StockManMVC/bower_components/cldrjs/dist/cldr/event.js @@ -0,0 +1,585 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var pathNormalize = Cldr._pathNormalize, + validatePresence = Cldr._validatePresence, + validateType = Cldr._validateType; + +/*! + * EventEmitter v4.2.7 - git.io/ee + * Oliver Caldwell + * MIT license + * @preserve + */ + +var EventEmitter; +/* jshint ignore:start */ +EventEmitter = (function () { + + + /** + * Class for managing events. + * Can be extended to provide event functionality in other classes. + * + * @class EventEmitter Manages event registering and emitting. + */ + function EventEmitter() {} + + // Shortcuts to improve speed and size + var proto = EventEmitter.prototype; + var exports = this; + var originalGlobalValue = exports.EventEmitter; + + /** + * Finds the index of the listener for the event in it's storage array. + * + * @param {Function[]} listeners Array of listeners to search through. + * @param {Function} listener Method to look for. + * @return {Number} Index of the specified listener, -1 if not found + * @api private + */ + function indexOfListener(listeners, listener) { + var i = listeners.length; + while (i--) { + if (listeners[i].listener === listener) { + return i; + } + } + + return -1; + } + + /** + * Alias a method while keeping the context correct, to allow for overwriting of target method. + * + * @param {String} name The name of the target method. + * @return {Function} The aliased method + * @api private + */ + function alias(name) { + return function aliasClosure() { + return this[name].apply(this, arguments); + }; + } + + /** + * Returns the listener array for the specified event. + * Will initialise the event object and listener arrays if required. + * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them. + * Each property in the object response is an array of listener functions. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Function[]|Object} All listener functions for the event. + */ + proto.getListeners = function getListeners(evt) { + var events = this._getEvents(); + var response; + var key; + + // Return a concatenated array of all matching events if + // the selector is a regular expression. + if (evt instanceof RegExp) { + response = {}; + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + response[key] = events[key]; + } + } + } + else { + response = events[evt] || (events[evt] = []); + } + + return response; + }; + + /** + * Takes a list of listener objects and flattens it into a list of listener functions. + * + * @param {Object[]} listeners Raw listener objects. + * @return {Function[]} Just the listener functions. + */ + proto.flattenListeners = function flattenListeners(listeners) { + var flatListeners = []; + var i; + + for (i = 0; i < listeners.length; i += 1) { + flatListeners.push(listeners[i].listener); + } + + return flatListeners; + }; + + /** + * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Object} All listener functions for an event in an object. + */ + proto.getListenersAsObject = function getListenersAsObject(evt) { + var listeners = this.getListeners(evt); + var response; + + if (listeners instanceof Array) { + response = {}; + response[evt] = listeners; + } + + return response || listeners; + }; + + /** + * Adds a listener function to the specified event. + * The listener will not be added if it is a duplicate. + * If the listener returns true then it will be removed after it is called. + * If you pass a regular expression as the event name then the listener will be added to all events that match it. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListener = function addListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var listenerIsWrapped = typeof listener === 'object'; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) { + listeners[key].push(listenerIsWrapped ? listener : { + listener: listener, + once: false + }); + } + } + + return this; + }; + + /** + * Alias of addListener + */ + proto.on = alias('addListener'); + + /** + * Semi-alias of addListener. It will add a listener that will be + * automatically removed after it's first execution. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addOnceListener = function addOnceListener(evt, listener) { + return this.addListener(evt, { + listener: listener, + once: true + }); + }; + + /** + * Alias of addOnceListener. + */ + proto.once = alias('addOnceListener'); + + /** + * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad. + * You need to tell it what event names should be matched by a regex. + * + * @param {String} evt Name of the event to create. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvent = function defineEvent(evt) { + this.getListeners(evt); + return this; + }; + + /** + * Uses defineEvent to define multiple events. + * + * @param {String[]} evts An array of event names to define. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvents = function defineEvents(evts) { + for (var i = 0; i < evts.length; i += 1) { + this.defineEvent(evts[i]); + } + return this; + }; + + /** + * Removes a listener function from the specified event. + * When passed a regular expression as the event name, it will remove the listener from all events that match it. + * + * @param {String|RegExp} evt Name of the event to remove the listener from. + * @param {Function} listener Method to remove from the event. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListener = function removeListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var index; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + index = indexOfListener(listeners[key], listener); + + if (index !== -1) { + listeners[key].splice(index, 1); + } + } + } + + return this; + }; + + /** + * Alias of removeListener + */ + proto.off = alias('removeListener'); + + /** + * Adds listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added. + * You can also pass it a regular expression to add the array of listeners to all events that match it. + * Yeah, this function does quite a bit. That's probably a bad thing. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListeners = function addListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(false, evt, listeners); + }; + + /** + * Removes listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be removed. + * You can also pass it a regular expression to remove the listeners from all events that match it. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListeners = function removeListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(true, evt, listeners); + }; + + /** + * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level. + * The first argument will determine if the listeners are removed (true) or added (false). + * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be added/removed. + * You can also pass it a regular expression to manipulate the listeners of all events that match it. + * + * @param {Boolean} remove True if you want to remove listeners, false if you want to add. + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add/remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) { + var i; + var value; + var single = remove ? this.removeListener : this.addListener; + var multiple = remove ? this.removeListeners : this.addListeners; + + // If evt is an object then pass each of it's properties to this method + if (typeof evt === 'object' && !(evt instanceof RegExp)) { + for (i in evt) { + if (evt.hasOwnProperty(i) && (value = evt[i])) { + // Pass the single listener straight through to the singular method + if (typeof value === 'function') { + single.call(this, i, value); + } + else { + // Otherwise pass back to the multiple function + multiple.call(this, i, value); + } + } + } + } + else { + // So evt must be a string + // And listeners must be an array of listeners + // Loop over it and pass each one to the multiple method + i = listeners.length; + while (i--) { + single.call(this, evt, listeners[i]); + } + } + + return this; + }; + + /** + * Removes all listeners from a specified event. + * If you do not specify an event then all listeners will be removed. + * That means every event will be emptied. + * You can also pass a regex to remove all events that match it. + * + * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeEvent = function removeEvent(evt) { + var type = typeof evt; + var events = this._getEvents(); + var key; + + // Remove different things depending on the state of evt + if (type === 'string') { + // Remove all listeners for the specified event + delete events[evt]; + } + else if (evt instanceof RegExp) { + // Remove all events matching the regex. + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + delete events[key]; + } + } + } + else { + // Remove all listeners in all events + delete this._events; + } + + return this; + }; + + /** + * Alias of removeEvent. + * + * Added to mirror the node API. + */ + proto.removeAllListeners = alias('removeEvent'); + + /** + * Emits an event of your choice. + * When emitted, every listener attached to that event will be executed. + * If you pass the optional argument array then those arguments will be passed to every listener upon execution. + * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately. + * So they will not arrive within the array on the other side, they will be separate. + * You can also pass a regular expression to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {Array} [args] Optional array of arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emitEvent = function emitEvent(evt, args) { + var listeners = this.getListenersAsObject(evt); + var listener; + var i; + var key; + var response; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + i = listeners[key].length; + + while (i--) { + // If the listener returns true then it shall be removed from the event + // The function is executed either with a basic call or an apply if there is an args array + listener = listeners[key][i]; + + if (listener.once === true) { + this.removeListener(evt, listener.listener); + } + + response = listener.listener.apply(this, args || []); + + if (response === this._getOnceReturnValue()) { + this.removeListener(evt, listener.listener); + } + } + } + } + + return this; + }; + + /** + * Alias of emitEvent + */ + proto.trigger = alias('emitEvent'); + + /** + * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on. + * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {...*} Optional additional arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emit = function emit(evt) { + var args = Array.prototype.slice.call(arguments, 1); + return this.emitEvent(evt, args); + }; + + /** + * Sets the current value to check against when executing listeners. If a + * listeners return value matches the one set here then it will be removed + * after execution. This value defaults to true. + * + * @param {*} value The new value to check for when executing listeners. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.setOnceReturnValue = function setOnceReturnValue(value) { + this._onceReturnValue = value; + return this; + }; + + /** + * Fetches the current value to check against when executing listeners. If + * the listeners return value matches this one then it should be removed + * automatically. It will return true by default. + * + * @return {*|Boolean} The current value to check for or the default, true. + * @api private + */ + proto._getOnceReturnValue = function _getOnceReturnValue() { + if (this.hasOwnProperty('_onceReturnValue')) { + return this._onceReturnValue; + } + else { + return true; + } + }; + + /** + * Fetches the events object and creates one if required. + * + * @return {Object} The events storage object. + * @api private + */ + proto._getEvents = function _getEvents() { + return this._events || (this._events = {}); + }; + + /** + * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version. + * + * @return {Function} Non conflicting EventEmitter class. + */ + EventEmitter.noConflict = function noConflict() { + exports.EventEmitter = originalGlobalValue; + return EventEmitter; + }; + + return EventEmitter; +}()); +/* jshint ignore:end */ + + + + var validateTypeFunction = function( value, name ) { + validateType( value, name, typeof value === "undefined" || typeof value === "function", "Function" ); + }; + + + + + var superGet, superInit, + globalEe = new EventEmitter(); + + function validateTypeEvent( value, name ) { + validateType( value, name, typeof value === "string" || value instanceof RegExp, "String or RegExp" ); + } + + function validateThenCall( method, self ) { + return function( event, listener ) { + validatePresence( event, "event" ); + validateTypeEvent( event, "event" ); + + validatePresence( listener, "listener" ); + validateTypeFunction( listener, "listener" ); + + return self[ method ].apply( self, arguments ); + }; + } + + function off( self ) { + return validateThenCall( "off", self ); + } + + function on( self ) { + return validateThenCall( "on", self ); + } + + function once( self ) { + return validateThenCall( "once", self ); + } + + Cldr.off = off( globalEe ); + Cldr.on = on( globalEe ); + Cldr.once = once( globalEe ); + + /** + * Overload Cldr.prototype.init(). + */ + superInit = Cldr.prototype.init; + Cldr.prototype.init = function() { + var ee; + this.ee = ee = new EventEmitter(); + this.off = off( ee ); + this.on = on( ee ); + this.once = once( ee ); + superInit.apply( this, arguments ); + }; + + /** + * getOverload is encapsulated, because of cldr/unresolved. If it's loaded + * after cldr/event (and note it overwrites .get), it can trigger this + * overload again. + */ + function getOverload() { + + /** + * Overload Cldr.prototype.get(). + */ + superGet = Cldr.prototype.get; + Cldr.prototype.get = function( path ) { + var value = superGet.apply( this, arguments ); + path = pathNormalize( path, this.attributes ).join( "/" ); + globalEe.trigger( "get", [ path, value ] ); + this.ee.trigger( "get", [ path, value ] ); + return value; + }; + } + + Cldr._eventInit = getOverload; + getOverload(); + + return Cldr; + + + + +})); diff --git a/StockManMVC/bower_components/cldrjs/dist/cldr/supplemental.js b/StockManMVC/bower_components/cldrjs/dist/cldr/supplemental.js new file mode 100644 index 0000000..855de02 --- /dev/null +++ b/StockManMVC/bower_components/cldrjs/dist/cldr/supplemental.js @@ -0,0 +1,101 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var alwaysArray = Cldr._alwaysArray; + + + + var supplementalMain = function( cldr ) { + + var prepend, supplemental; + + prepend = function( prepend ) { + return function( path ) { + path = alwaysArray( path ); + return cldr.get( [ prepend ].concat( path ) ); + }; + }; + + supplemental = prepend( "supplemental" ); + + // Week Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data + supplemental.weekData = prepend( "supplemental/weekData" ); + + supplemental.weekData.firstDay = function() { + return cldr.get( "supplemental/weekData/firstDay/{territory}" ) || + cldr.get( "supplemental/weekData/firstDay/001" ); + }; + + supplemental.weekData.minDays = function() { + var minDays = cldr.get( "supplemental/weekData/minDays/{territory}" ) || + cldr.get( "supplemental/weekData/minDays/001" ); + return parseInt( minDays, 10 ); + }; + + // Time Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + supplemental.timeData = prepend( "supplemental/timeData" ); + + supplemental.timeData.allowed = function() { + return cldr.get( "supplemental/timeData/{territory}/_allowed" ) || + cldr.get( "supplemental/timeData/001/_allowed" ); + }; + + supplemental.timeData.preferred = function() { + return cldr.get( "supplemental/timeData/{territory}/_preferred" ) || + cldr.get( "supplemental/timeData/001/_preferred" ); + }; + + return supplemental; + + }; + + + + + var initSuper = Cldr.prototype.init; + + /** + * .init() automatically ran on construction. + * + * Overload .init(). + */ + Cldr.prototype.init = function() { + initSuper.apply( this, arguments ); + this.supplemental = supplementalMain( this ); + }; + + return Cldr; + + + + +})); diff --git a/StockManMVC/bower_components/cldrjs/dist/cldr/unresolved.js b/StockManMVC/bower_components/cldrjs/dist/cldr/unresolved.js new file mode 100644 index 0000000..0248ccb --- /dev/null +++ b/StockManMVC/bower_components/cldrjs/dist/cldr/unresolved.js @@ -0,0 +1,164 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var coreLoad = Cldr._coreLoad; + var jsonMerge = Cldr._jsonMerge; + var pathNormalize = Cldr._pathNormalize; + var resourceGet = Cldr._resourceGet; + var validatePresence = Cldr._validatePresence; + var validateTypePath = Cldr._validateTypePath; + + + + var bundleParentLookup = function( Cldr, locale ) { + var normalizedPath, parent; + + if ( locale === "root" ) { + return; + } + + // First, try to find parent on supplemental data. + normalizedPath = pathNormalize( [ "supplemental/parentLocales/parentLocale", locale ] ); + parent = resourceGet( Cldr._resolved, normalizedPath ) || resourceGet( Cldr._raw, normalizedPath ); + if ( parent ) { + return parent; + } + + // Or truncate locale. + parent = locale.substr( 0, locale.lastIndexOf( Cldr.localeSep ) ); + if ( !parent ) { + return "root"; + } + + return parent; + }; + + + + + // @path: normalized path + var resourceSet = function( data, path, value ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + if ( !node[ path[ i ] ] ) { + node[ path[ i ] ] = {}; + } + node = node[ path[ i ] ]; + } + node[ path[ i ] ] = value; + }; + + + var itemLookup = (function() { + + var lookup; + + lookup = function( Cldr, locale, path, attributes, childLocale ) { + var normalizedPath, parent, value; + + // 1: Finish recursion + // 2: Avoid infinite loop + if ( typeof locale === "undefined" /* 1 */ || locale === childLocale /* 2 */ ) { + return; + } + + // Resolve path + normalizedPath = pathNormalize( path, attributes ); + + // Check resolved (cached) data first + // 1: Due to #16, never use the cached resolved non-leaf nodes. It may not + // represent its leafs in its entirety. + value = resourceGet( Cldr._resolved, normalizedPath ); + if ( value && typeof value !== "object" /* 1 */ ) { + return value; + } + + // Check raw data + value = resourceGet( Cldr._raw, normalizedPath ); + + if ( !value ) { + // Or, lookup at parent locale + parent = bundleParentLookup( Cldr, locale ); + value = lookup( Cldr, parent, path, jsonMerge( attributes, { bundle: parent }), locale ); + } + + if ( value ) { + // Set resolved (cached) + resourceSet( Cldr._resolved, normalizedPath, value ); + } + + return value; + }; + + return lookup; + +}()); + + + Cldr._raw = {}; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved or unresolved cldr data. + * Overwrite Cldr.load(). + */ + Cldr.load = function() { + Cldr._raw = coreLoad( Cldr, Cldr._raw, arguments ); + }; + + /** + * Overwrite Cldr.prototype.get(). + */ + Cldr.prototype.get = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + // 1: use bundle as locale on item lookup for simplification purposes, because no other extended subtag is used anyway on bundle parent lookup. + // 2: during init(), this method is called, but bundle is yet not defined. Use "" as a workaround in this very specific scenario. + return itemLookup( Cldr, this.attributes && this.attributes.bundle /* 1 */ || "" /* 2 */, path, this.attributes ); + }; + + // In case cldr/unresolved is loaded after cldr/event, we trigger its overloads again. Because, .get is overwritten in here. + if ( Cldr._eventInit ) { + Cldr._eventInit(); + } + + return Cldr; + + + + +})); diff --git a/StockManMVC/bower_components/cldrjs/dist/node_main.js b/StockManMVC/bower_components/cldrjs/dist/node_main.js new file mode 100644 index 0000000..371f288 --- /dev/null +++ b/StockManMVC/bower_components/cldrjs/dist/node_main.js @@ -0,0 +1,22 @@ +/** + * CLDR JavaScript Library v0.4.4 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-18T12:25Z + */ +/*! + * CLDR JavaScript Library v0.4.4 2016-01-18T12:25Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ + +// Cldr +module.exports = require( "./cldr" ); + +// Extent Cldr with the following modules +require( "./cldr/event" ); +require( "./cldr/supplemental" ); +require( "./cldr/unresolved" ); diff --git a/StockManMVC/bower_components/cldrjs/doc/api/core/constructor.md b/StockManMVC/bower_components/cldrjs/doc/api/core/constructor.md index b29cc8d..a6c3b86 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/core/constructor.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/core/constructor.md @@ -2,7 +2,7 @@ Create a new instance of Cldr. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *locale* | String | `"en"`, `"pt-BR"` | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/core/get.md b/StockManMVC/bower_components/cldrjs/doc/api/core/get.md index 0a96f4f..eaf6f88 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/core/get.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/core/get.md @@ -2,7 +2,7 @@ Get the item data given its path, or `undefined` if missing. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *path* | String or
Array | `"/cldr/main/{languageId}/numbers/symbols-numberSystem-latn/decimal"`
`[ "cldr", "main", "{languageId}", "numbers", "symbols-numberSystem-latn", "decimal" ]` | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/core/main.md b/StockManMVC/bower_components/cldrjs/doc/api/core/main.md index 856279a..ce7e69b 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/core/main.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/core/main.md @@ -2,7 +2,7 @@ It's an alias for `.get([ "main/{languageId}", ... ])`. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *path* | String or
Array | See `cldr.get()` for more information | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/global_off.md b/StockManMVC/bower_components/cldrjs/doc/api/event/global_off.md index 2a2db5f..8c3072c 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/global_off.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/global_off.md @@ -2,7 +2,7 @@ Removes a listener function from the specified event globally (for all instances). -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/global_on.md b/StockManMVC/bower_components/cldrjs/doc/api/event/global_on.md index 96f63a3..5e7decc 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/global_on.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/global_on.md @@ -2,7 +2,7 @@ Add a listener function to the specified event globally (for all instances). -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/global_once.md b/StockManMVC/bower_components/cldrjs/doc/api/event/global_once.md index 8aec636..54c4956 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/global_once.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/global_once.md @@ -2,7 +2,7 @@ Add a listener function to the specified event globally (for all instances). It will be automatically removed after it's first execution. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/off.md b/StockManMVC/bower_components/cldrjs/doc/api/event/off.md index e0191a1..bf74ded 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/off.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/off.md @@ -2,7 +2,7 @@ Removes a listener function from the specified event for this instance. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/on.md b/StockManMVC/bower_components/cldrjs/doc/api/event/on.md index f7cd83f..d9915b1 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/on.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/on.md @@ -2,7 +2,7 @@ Add a listener function to the specified event for this instance. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/event/once.md b/StockManMVC/bower_components/cldrjs/doc/api/event/once.md index 5011cce..39e8979 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/event/once.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/event/once.md @@ -2,7 +2,7 @@ Add a listener function to the specified event for this instance. It will be automatically removed after it's first execution. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *event* | String | `"get"` | | *listener* | Function | | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/supplemental.md b/StockManMVC/bower_components/cldrjs/doc/api/supplemental.md index b083226..ceb2231 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/supplemental.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/supplemental.md @@ -2,7 +2,7 @@ It's an alias for `.get([ "supplemental", ... ])`. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *path* | String or
Array | See `cldr.get()` for more information | diff --git a/StockManMVC/bower_components/cldrjs/doc/api/unresolved/get.md b/StockManMVC/bower_components/cldrjs/doc/api/unresolved/get.md index f37dd06..bc35931 100644 --- a/StockManMVC/bower_components/cldrjs/doc/api/unresolved/get.md +++ b/StockManMVC/bower_components/cldrjs/doc/api/unresolved/get.md @@ -2,7 +2,7 @@ Overload (extend) `.get()` to get the item data or lookup by following [locale inheritance](http://www.unicode.org/reports/tr35/#Locale_Inheritance), set a local resolved cache if it's found (for subsequent faster access), or return `undefined`. -| Parameter | Type | Example | +| Parameter | Type | Exampe | | --- | --- | --- | | *path* | String or
Array | See `cldr.get()` above for more information | diff --git a/StockManMVC/bower_components/cldrjs/package.json b/StockManMVC/bower_components/cldrjs/package.json index 6b3bb03..e11167d 100644 --- a/StockManMVC/bower_components/cldrjs/package.json +++ b/StockManMVC/bower_components/cldrjs/package.json @@ -1,6 +1,6 @@ { "name": "cldrjs", - "version": "0.4.5", + "version": "0.4.4", "description": "Simple CLDR traverser", "keywords": [ "utility", diff --git a/StockManMVC/bower_components/cldrjs/src/core.js b/StockManMVC/bower_components/cldrjs/src/core.js index e8f0cd0..7244c4a 100644 --- a/StockManMVC/bower_components/cldrjs/src/core.js +++ b/StockManMVC/bower_components/cldrjs/src/core.js @@ -61,22 +61,14 @@ define([ */ Cldr.prototype.init = function( locale ) { var attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant, - sep = Cldr.localeSep, - unicodeLocaleExtensionsRaw = ""; + sep = Cldr.localeSep; validatePresence( locale, "locale" ); validateTypeString( locale, "locale" ); subtags = coreSubtags( locale ); - if ( subtags.length === 5 ) { - unicodeLocaleExtensions = subtags.pop(); - unicodeLocaleExtensionsRaw = sep + "u" + sep + unicodeLocaleExtensions; - // Remove trailing null when there is unicodeLocaleExtensions but no variants. - if ( !subtags[ 3 ] ) { - subtags.pop(); - } - } + unicodeLocaleExtensions = subtags[ 4 ]; variant = subtags[ 3 ]; // Normalize locale code. @@ -100,8 +92,8 @@ define([ bundle: bundleLookup( Cldr, this, minLanguageId ), // Unicode Language Id - minLanguageId: minLanguageId + unicodeLocaleExtensionsRaw, - maxLanguageId: maxLanguageId.join( sep ) + unicodeLocaleExtensionsRaw, + minlanguageId: minLanguageId, + maxLanguageId: maxLanguageId.join( sep ), // Unicode Language Id Subtabs language: language, diff --git a/StockManMVC/bower_components/cldrjs/src/core/likely_subtags.js b/StockManMVC/bower_components/cldrjs/src/core/likely_subtags.js index 0d6d366..20d7392 100644 --- a/StockManMVC/bower_components/cldrjs/src/core/likely_subtags.js +++ b/StockManMVC/bower_components/cldrjs/src/core/likely_subtags.js @@ -51,12 +51,12 @@ define([ script = subtags[ 1 ], sep = Cldr.localeSep, territory = subtags[ 2 ], - variants = subtags.slice( 3, 4 ); + variantsAndUnicodeLocaleExtensions = subtags.slice( 3, 4 ); options = options || {}; // Skip if (language, script, territory) is not empty [3.3] if ( language !== "und" && script !== "Zzzz" && territory !== "ZZ" ) { - return [ language, script, territory ].concat( variants ); + return [ language, script, territory ].concat( variantsAndUnicodeLocaleExtensions ); } // Skip if no supplemental likelySubtags data is present @@ -83,7 +83,9 @@ define([ language !== "und" ? language : match[ 0 ], script !== "Zzzz" ? script : match[ 1 ], territory !== "ZZ" ? territory : match[ 2 ] - ].concat( variants ); + ].concat( + variantsAndUnicodeLocaleExtensions + ); } else if ( options.force ) { // [3.1.2] return cldr.get( "supplemental/likelySubtags/und" ).split( sep ); diff --git a/StockManMVC/bower_components/cldrjs/test/unit/core.js b/StockManMVC/bower_components/cldrjs/test/unit/core.js index 35c7e2b..764ddc3 100644 --- a/StockManMVC/bower_components/cldrjs/test/unit/core.js +++ b/StockManMVC/bower_components/cldrjs/test/unit/core.js @@ -71,20 +71,6 @@ define([ expect( cldr.attributes[ "u-nu" ] ).to.equal( "arab" ); }); - it( "should set minLanguageId and maxLanguageId attributes", function() { - cldr = new Cldr( "en" ); - expect( cldr.attributes.minLanguageId ).to.equal( "en" ); - expect( cldr.attributes.maxLanguageId ).to.equal( "en-Latn-US" ); - - cldr = new Cldr( "zh-Hant-HK-u-nu-native" ); - expect( cldr.attributes.minLanguageId ).to.equal( "zh-HK-u-nu-native" ); - expect( cldr.attributes.maxLanguageId ).to.equal( "zh-Hant-HK-u-nu-native" ); - - cldr = new Cldr( "en-POSIX-u-nu-native" ); - expect( cldr.attributes.minLanguageId ).to.equal( "en-POSIX-u-nu-native" ); - expect( cldr.attributes.maxLanguageId ).to.equal( "en-Latn-US-POSIX-u-nu-native" ); - }); - it( "should implement cldr.main as an alias of get( \"main/{bundle}...\" )", function() { cldr = new Cldr( "en" ); expect( cldr.main( "numbers/symbols-numberSystem-latn/decimal" ) ).to.equal( "." ); diff --git a/StockManMVC/bower_components/globalize/README.md b/StockManMVC/bower_components/globalize/README.md index 2d00775..7968a4e 100644 --- a/StockManMVC/bower_components/globalize/README.md +++ b/StockManMVC/bower_components/globalize/README.md @@ -742,7 +742,7 @@ writing code, be sure to read [CONTRIBUTING.md](CONTRIBUTING.md). [StackOverflow with the "javascript-globalize" tag]: http://stackoverflow.com/tags/javascript-globalize For ideas where to start contributing, see the following queries to find what -best suites your interest: [quick change][], [new features][], [bug fixes][], +best suites your interest: [quick changes][], [new features][], [bug fixes][], [documentation improvements][], [date module][], [currency module][], [message module][], [number module][], [plural module][], [relative time module][]. Last but not least, feel free to [get in touch](http://irc.jquery.org/). @@ -750,7 +750,7 @@ but not least, feel free to [get in touch](http://irc.jquery.org/). [bug fixes]: https://github.com/jquery/globalize/labels/bug [documentation improvements]: https://github.com/jquery/globalize/labels/docs [new features]: https://github.com/jquery/globalize/labels/new%20feature -[quick change]: https://github.com/jquery/globalize/labels/quick%20change +[quick changes]: https://github.com/jquery/globalize/labels/quick%20changes [currency module]: https://github.com/jquery/globalize/labels/currency%20module [date module]: https://github.com/jquery/globalize/labels/date%20module diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime.js new file mode 100644 index 0000000..1d451d5 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime.js @@ -0,0 +1,236 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define( factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory(); + } else { + + // Globalize + root.Globalize = factory(); + } +}( this, function() { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +var stringHash = function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + + + + +var runtimeKey = function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeString( locale, "locale" ); + + this._locale = locale; +} + +Globalize.locale = function( locale ) { + validateParameterTypeString( locale, "locale" ); + + if ( arguments.length ) { + this._locale = locale; + } + return this._locale; +}; + +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeKey = runtimeKey; +Globalize._stringPad = stringPad; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeString = validateParameterTypeString; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/currency.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/currency.js new file mode 100644 index 0000000..b5c61ca --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/currency.js @@ -0,0 +1,119 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +var currencyNameFormat = function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + + + + +var currencyFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + var fn; + + // Return formatter when style is "code" or "name". + if ( pluralGenerator && properties ) { + fn = function currencyFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( + numberFormatter( value ), + pluralGenerator( value ), + properties + ); + }; + + // Return formatter when style is "symbol" or "accounting". + } else { + fn = function currencyFormatter( value ) { + return numberFormatter( value ); + }; + } + + return fn; +}; + + + + +Globalize._currencyFormatterFn = currencyFormatterFn; +Globalize._currencyNameFormat = currencyNameFormat; + +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + options = options || {}; + return Globalize[ runtimeKey( "currencyFormatter", this._locale, [ currency, options ] ) ]; +}; + +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/date.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/date.js new file mode 100644 index 0000000..528678e --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/date.js @@ -0,0 +1,1300 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var validateParameterTypeDate = function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + + + + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +var dateDayOfWeek = function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + + + + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +var dateDistanceInDays = function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + + + + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +var dateStartOf = function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + + + + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +var dateDayOfYear = function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + + + + +/** + * millisecondsInDay + */ +var dateMillisecondsInDay = function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + + + + +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + + + + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + + + + +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +var dateFormat = function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + + + + +var dateFormatterFn = function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return dateFormat( value, numberFormatters, properties ); + }; + +}; + + + + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +var dateIsLeapYear = function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + + + + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +var dateLastDayOfMonth = function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + + + + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +var dateSetDate = function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + + + + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +var dateSetMonth = function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + + + + +var outOfRange = function( value, low, high ) { + return value < low || value > high; +}; + + + + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +var dateParse = function( value, tokens, properties ) { + var amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + + // Setting the month later so that we have the correct year and can determine + // the correct last day of February in case of leap year. + month = value; + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( month !== undefined ) { + dateSetMonth( date, month - 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + + + + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + + + + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +var dateTokenizer = function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + + + + +var dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + + + + +Globalize._dateFormatterFn = dateFormatterFn; +Globalize._dateParserFn = dateParserFn; +Globalize._dateFormat = dateFormat; +Globalize._dateParser = dateParse; +Globalize._dateTokenizer = dateTokenizer; +Globalize._validateParameterTypeDate = validateParameterTypeDate; + +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + options = options || { skeleton: "yMd" }; + return Globalize[ runtimeKey( "dateParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/message.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/message.js new file mode 100644 index 0000000..2637d11 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/message.js @@ -0,0 +1,116 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterType = Globalize._validateParameterType; + + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + + + + +var validateParameterTypeMessageVariables = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + + + + +var messageFormatterFn = function( formatter ) { + return function messageFormatter( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = [].slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + + + + +Globalize._messageFormatterFn = messageFormatterFn; +/* jshint ignore:start */ +Globalize._messageFormat = (function() { +var number = function (value, offset) { + if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + return value - (offset || 0); +}; +var plural = function (value, offset, lcfunc, data, isOrdinal) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + if (offset) value -= offset; + var key = lcfunc(value, isOrdinal); + if (key in data) return data[key](); + return data.other(); +}; +var select = function (value, data) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + return data.other() +}; + +return {number: number, plural: plural, select: select}; +}()); +/* jshint ignore:end */ +Globalize._validateParameterTypeMessageVariables = validateParameterTypeMessageVariables; + +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( /* path */ ) { + return Globalize[ + runtimeKey( "messageFormatter", this._locale, [].slice.call( arguments, 0 ) ) + ]; +}; + +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, [].slice.call( arguments, 1 ) ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/number.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/number.js new file mode 100644 index 0000000..8ff668b --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/number.js @@ -0,0 +1,682 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createError = Globalize._createError, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterType = Globalize._validateParameterType, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +var numberFormatterFn = function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +var numberParserFn = function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberFormat = numberFormat; +Globalize._numberFormatterFn = numberFormatterFn; +Globalize._numberParse = numberParse; +Globalize._numberParserFn = numberParserFn; +Globalize._numberRound = numberRound; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/plural.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/plural.js new file mode 100644 index 0000000..146142a --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/plural.js @@ -0,0 +1,86 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType; + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var pluralGeneratorFn = function( plural ) { + return function pluralGenerator( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return plural( value ); + }; +}; + + + + +Globalize._pluralGeneratorFn = pluralGeneratorFn; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; + +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "pluralGenerator", this._locale, [ options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/relative-time.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/relative-time.js new file mode 100644 index 0000000..41e6ec5 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/relative-time.js @@ -0,0 +1,116 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, properties ) + * + * @value [Number] The number to format + * + * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter + * + * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator + * + * @properties [Object] containing relative time plural message. + * + * Format relative time. + */ +var relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) { + + var relativeTime, + message = properties[ "relative-type-" + value ]; + + if ( message ) { + return message; + } + + relativeTime = value <= 0 ? properties[ "relativeTime-type-past" ] + : properties[ "relativeTime-type-future" ]; + + value = Math.abs( value ); + + message = relativeTime[ "relativeTimePattern-count-" + pluralGenerator( value ) ]; + return formatMessage( message, [ numberFormatter( value ) ] ); +}; + + + + +var relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + return function relativeTimeFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return relativeTimeFormat( value, numberFormatter, pluralGenerator, properties ); + }; + +}; + + + + +Globalize._relativeTimeFormatterFn = relativeTimeFormatterFn; + +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "relativeTimeFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize-runtime/unit.js b/StockManMVC/bower_components/globalize/dist/globalize-runtime/unit.js new file mode 100644 index 0000000..5b5f3e9 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize-runtime/unit.js @@ -0,0 +1,127 @@ +/** + * Globalize Runtime v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize Runtime v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ), + require( "./plural" ) + ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeKey = Globalize._runtimeKey, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, unitProperies ) + * + * @value [Number] + * + * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter. + * + * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator. + * + * @unitProperies [Object]: localized unit data from cldr. + * + * Format units such as seconds, minutes, days, weeks, etc. + * + * OBS: + * + * Unit Sequences are not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences + * + * Duration Unit (for composed time unit durations) is not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit + */ +var unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) { + var compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties, + formattedValue, divisor, divisorProperties, message, pluralValue; + + unitProperties = unitProperties.unitProperties; + formattedValue = numberFormatter( value ); + pluralValue = pluralGenerator( value ); + + // computed compound unit, eg. "megabyte-per-second". + if ( unitProperties instanceof Array ) { + dividendProperties = unitProperties[ 0 ]; + divisorProperties = unitProperties[ 1 ]; + + dividend = formatMessage( dividendProperties[ pluralValue ], [ value ] ); + divisor = formatMessage( divisorProperties.one, [ "" ] ).trim(); + + return formatMessage( compoundUnitPattern, [ dividend, divisor ] ); + } + + message = unitProperties[ pluralValue ]; + + return formatMessage( message, [ formattedValue ] ); +}; + + + + +var unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) { + return function unitFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return unitFormat( value, numberFormatter, pluralGenerator, unitProperties ); + }; + +}; + + + + +Globalize._unitFormatterFn = unitFormatterFn; + +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + return this.unitFormatter( unit, options )( value ); +}; + +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + options = options || {}; + return Globalize[ runtimeKey( "unitFormatter", this._locale, [ unit, options ] ) ]; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize.js b/StockManMVC/bower_components/globalize/dist/globalize.js new file mode 100644 index 0000000..1426c4f --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize.js @@ -0,0 +1,421 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ) ); + } else { + + // Global + root.Globalize = factory( root.Cldr ); + } +}( this, function( Cldr ) { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +var stringHash = function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + + + + +var runtimeKey = function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + + + + +var functionName = function( fn ) { + if ( fn.name !== undefined ) { + return fn.name; + } + + // fn.name is not supported by IE. + var matches = /^function\s+([\w\$]+)\s*\(/.exec( fn.toString() ); + + if ( matches && matches.length > 0 ) { + return matches[ 1 ]; + } +}; + + + + +var runtimeBind = function( args, cldr, fn, runtimeArgs ) { + + var argsStr = JSON.stringify( args ), + fnName = functionName( fn ), + locale = cldr.locale; + + // If name of the function is not available, this is most likely due uglification, + // which most likely means we are in production, and runtimeBind here is not necessary. + if ( !fnName ) { + return fn; + } + + fn.runtimeKey = runtimeKey( fnName, locale, null, argsStr ); + + fn.generatorString = function() { + return "Globalize(\"" + locale + "\")." + fnName + "(" + argsStr.slice( 1, -1 ) + ")"; + }; + + fn.runtimeArgs = runtimeArgs; + + return fn; +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var alwaysArray = function( stringOrArray ) { + return Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : []; +}; + + + + +var validateCldr = function( path, value, options ) { + var skipBoolean; + options = options || {}; + + skipBoolean = alwaysArray( options.skip ).some(function( pathRe ) { + return pathRe.test( path ); + }); + + validate( "E_MISSING_CLDR", "Missing required CLDR content `{path}`.", value || skipBoolean, { + path: path + }); +}; + + + + +var validateDefaultLocale = function( value ) { + validate( "E_DEFAULT_LOCALE_NOT_DEFINED", "Default locale has not been defined.", + value !== undefined, {} ); +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +/** + * range( value, name, minimum, maximum ) + * + * @value [Number]. + * + * @name [String] name of variable. + * + * @minimum [Number]. The lowest valid value, inclusive. + * + * @maximum [Number]. The greatest valid value, inclusive. + */ +var validateParameterRange = function( value, name, minimum, maximum ) { + validate( + "E_PAR_OUT_OF_RANGE", + "Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].", + value === undefined || value >= minimum && value <= maximum, + { + maximum: maximum, + minimum: minimum, + name: name, + value: value + } + ); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeLocale = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" || value instanceof Cldr, + "String or Cldr instance" + ); +}; + + + + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + + + + +var validateParameterTypePlainObject = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ), + "Plain Object" + ); +}; + + + + +var alwaysCldr = function( localeOrCldr ) { + return localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function validateLikelySubtags( cldr ) { + cldr.once( "get", validateCldr ); + cldr.get( "supplemental/likelySubtags" ); +} + +/** + * [new] Globalize( locale|cldr ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Create a Globalize instance. + */ +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeLocale( locale, "locale" ); + + this.cldr = alwaysCldr( locale ); + + validateLikelySubtags( this.cldr ); +} + +/** + * Globalize.load( json, ... ) + * + * @json [JSON] + * + * Load resolved or unresolved cldr data. + * Somewhat equivalent to previous Globalize.addCultureInfo(...). + */ +Globalize.load = function() { + + // validations are delegated to Cldr.load(). + Cldr.load.apply( Cldr, arguments ); +}; + +/** + * Globalize.locale( [locale|cldr] ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Set default Cldr instance if locale or cldr argument is passed. + * + * Return the default Cldr instance. + */ +Globalize.locale = function( locale ) { + validateParameterTypeLocale( locale, "locale" ); + + if ( arguments.length ) { + this.cldr = alwaysCldr( locale ); + validateLikelySubtags( this.cldr ); + } + return this.cldr; +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._alwaysArray = alwaysArray; +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._isPlainObject = isPlainObject; +Globalize._objectExtend = objectExtend; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeBind = runtimeBind; +Globalize._stringPad = stringPad; +Globalize._validate = validate; +Globalize._validateCldr = validateCldr; +Globalize._validateDefaultLocale = validateDefaultLocale; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterRange = validateParameterRange; +Globalize._validateParameterTypePlainObject = validateParameterTypePlainObject; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/currency.js b/StockManMVC/bower_components/globalize/dist/globalize/currency.js new file mode 100644 index 0000000..8b68100 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/currency.js @@ -0,0 +1,439 @@ +/*! + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + formatMessage = Globalize._formatMessage, + numberNumberingSystem = Globalize._numberNumberingSystem, + numberPattern = Globalize._numberPattern, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var validateParameterTypeCurrency = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" && ( /^[A-Za-z]{3}$/ ).test( value ), + "3-letter currency code string as defined by ISO 4217" + ); +}; + + + + +/** + * supplementalOverride( currency, pattern, cldr ) + * + * Return pattern with fraction digits overriden by supplemental currency data. + */ +var currencySupplementalOverride = function( currency, pattern, cldr ) { + var digits, + fraction = "", + fractionData = cldr.supplemental([ "currencyData/fractions", currency ]) || + cldr.supplemental( "currencyData/fractions/DEFAULT" ); + + digits = +fractionData._digits; + + if ( digits ) { + fraction = "." + stringPad( "0", digits ).slice( 0, -1 ) + fractionData._rounding; + } + + return pattern.replace( /\.(#+|0*[0-9]|0+[0-9]?)/g, fraction ); +}; + + + + +var objectFilter = function( object, testRe ) { + var key, + copy = {}; + + for ( key in object ) { + if ( testRe.test( key ) ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +var currencyUnitPatterns = function( cldr ) { + return objectFilter( cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ) + ]), /^unitPattern/ ); +}; + + + + +/** + * codeProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyCodeProperties = function( currency, cldr ) { + var pattern = numberPattern( "decimal", cldr ); + + // The number of decimal places and the rounding for each currency is not locale-specific. Those + // values overridden by Supplemental Currency Data. + pattern = currencySupplementalOverride( currency, pattern, cldr ); + + return { + currency: currency, + pattern: pattern, + unitPatterns: currencyUnitPatterns( cldr ) + }; +}; + + + + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +var currencyNameFormat = function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + + + + +var currencyFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + var fn; + + // Return formatter when style is "code" or "name". + if ( pluralGenerator && properties ) { + fn = function currencyFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( + numberFormatter( value ), + pluralGenerator( value ), + properties + ); + }; + + // Return formatter when style is "symbol" or "accounting". + } else { + fn = function currencyFormatter( value ) { + return numberFormatter( value ); + }; + } + + return fn; +}; + + + + +/** + * nameProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyNameProperties = function( currency, cldr ) { + var properties = currencyCodeProperties( currency, cldr ); + + properties.displayNames = objectFilter( cldr.main([ + "numbers/currencies", + currency + ]), /^displayName/ ); + + return properties; +}; + + + + +/** + * Unicode regular expression for: everything except math symbols, currency signs, dingbats, and + * box-drawing characters. + * + * Generated by: + * + * regenerate() + * .addRange( 0x0, 0x10FFFF ) + * .remove( require( "unicode-7.0.0/categories/S/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpNotS = /[\0-#%-\*,-;\?-\]_a-\{\}\x7F-\xA1\xA7\xAA\xAB\xAD\xB2\xB3\xB5-\xB7\xB9-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0383\u0386-\u03F5\u03F7-\u0481\u0483-\u058C\u0590-\u0605\u0609\u060A\u060C\u060D\u0610-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF-\u07F5\u07F7-\u09F1\u09F4-\u09F9\u09FC-\u0AF0\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C7E\u0C80-\u0D78\u0D7A-\u0E3E\u0E40-\u0F00\u0F04-\u0F12\u0F14\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39-\u0FBD\u0FC6\u0FCD\u0FD0-\u0FD4\u0FD9-\u109D\u10A0-\u138F\u139A-\u17DA\u17DC-\u193F\u1941-\u19DD\u1A00-\u1B60\u1B6B-\u1B73\u1B7D-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF-\u2043\u2045-\u2051\u2053-\u2079\u207D-\u2089\u208D-\u209F\u20BE-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u218F\u2308-\u230B\u2329\u232A\u23FB-\u23FF\u2427-\u243F\u244B-\u249B\u24EA-\u24FF\u2768-\u2793\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2CE4\u2CEB-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u3003\u3005-\u3011\u3014-\u301F\u3021-\u3035\u3038-\u303D\u3040-\u309A\u309D-\u318F\u3192-\u3195\u31A0-\u31BF\u31E4-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u32FF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uAA76\uAA7A-\uAB5A\uAB5C-\uD7FF\uDC00-\uFB28\uFB2A-\uFBB1\uFBC2-\uFDFB\uFDFE-\uFE61\uFE63\uFE67\uFE68\uFE6A-\uFF03\uFF05-\uFF0A\uFF0C-\uFF1B\uFF1F-\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5F-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8D-\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDFFF]|[\uD801\uD803-\uD819\uD81B-\uD82E\uD830-\uD833\uD836-\uD83A\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD802[\uDC00-\uDC76\uDC79-\uDEC7\uDEC9-\uDFFF]|\uD81A[\uDC00-\uDF3B\uDF40-\uDF44\uDF46-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDDE-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD83B[\uDC00-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0F\uDD2F\uDD6C-\uDD6F\uDD9B-\uDDE5\uDE03-\uDE0F\uDE3B-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF\uDF2D-\uDF2F\uDF7E\uDF7F\uDFCF-\uDFD3\uDFF8-\uDFFF]|\uD83D[\uDCFF\uDD4B-\uDD4F\uDD7A\uDDA4\uDE43\uDE44\uDED0-\uDEDF\uDEED-\uDEEF\uDEF4-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDFFF]|[\uD800-\uDBFF]/; + + + + +/** + * symbolProperties( currency, cldr ) + * + * Return pattern replacing `¤` with the appropriate currency symbol literal. + */ +var currencySymbolProperties = function( currency, cldr, options ) { + var currencySpacing, pattern, + regexp = { + "[:digit:]": /\d/, + "[:^S:]": regexpNotS + }, + symbol = cldr.main([ + "numbers/currencies", + currency, + "symbol" + ]); + + currencySpacing = [ "beforeCurrency", "afterCurrency" ].map(function( position ) { + return cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + "currencySpacing", + position + ]); + }); + + pattern = cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + options.style === "accounting" ? "accounting" : "standard" + ]); + + pattern = + + // The number of decimal places and the rounding for each currency is not locale-specific. + // Those values are overridden by Supplemental Currency Data. + currencySupplementalOverride( currency, pattern, cldr ) + + // Replace "¤" (\u00A4) with the appropriate symbol literal. + .split( ";" ).map(function( pattern ) { + + return pattern.split( "\u00A4" ).map(function( part, i ) { + var currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ], + surroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ], + insertBetween = ""; + + // For currencyMatch and surroundingMatch definitions, read [1]. + // When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency. + // 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies + currencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) ); + surroundingMatch = surroundingMatch.test( + part.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, "0" ) + ); + + if ( currencyMatch && part && surroundingMatch ) { + insertBetween = currencySpacing[ i ].insertBetween; + } + + return ( i ? insertBetween : "" ) + part + ( i ? "" : insertBetween ); + }).join( "'" + symbol + "'" ); + }).join( ";" ); + + return { + pattern: pattern + }; +}; + + + + +/** + * objectOmit( object, keys ) + * + * Return a copy of the object, filtered to omit the blacklisted key or array of keys. + */ +var objectOmit = function( object, keys ) { + var key, + copy = {}; + + keys = alwaysArray( keys ); + + for ( key in object ) { + if ( keys.indexOf( key ) === -1 ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ /supplemental\/currencyData\/fractions\/[A-Za-z]{3}$/ ] + }); +} + +/** + * .currencyFormatter( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: + * - style: [String] "symbol" (default), "accounting", "code" or "name". + * - see also number/format options. + * + * Return a function that formats a currency according to the given options and default/instance + * locale. + */ +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn, style; + + validateParameterPresence( currency, "currency" ); + validateParameterTypeCurrency( currency, "currency" ); + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || {}; + + args = [ currency, options ]; + style = options.style || "symbol"; + + validateDefaultLocale( cldr ); + + // Get properties given style ("symbol" default, "code" or "name"). + cldr.on( "get", validateRequiredCldr ); + properties = ({ + accounting: currencySymbolProperties, + code: currencyCodeProperties, + name: currencyNameProperties, + symbol: currencySymbolProperties + }[ style ] )( currency, cldr, options ); + cldr.off( "get", validateRequiredCldr ); + + // options = options minus style, plus raw pattern. + options = objectOmit( options, "style" ); + options.raw = properties.pattern; + + // Return formatter when style is "symbol" or "accounting". + if ( style === "symbol" || style === "accounting" ) { + numberFormatter = this.numberFormatter( options ); + + returnFn = currencyFormatterFn( numberFormatter ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter ] ); + + // Return formatter when style is "code" or "name". + } else { + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = currencyFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + } + + return returnFn; +}; + +/** + * .currencyParser( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Return the currency parser according to the given options and the default/instance locale. + */ +Globalize.currencyParser = +Globalize.prototype.currencyParser = function( /* currency, options */ ) { + + // TODO implement parser. + +}; + +/** + * .formatCurrency( value, currency [, options] ) + * + * @value [Number] number to be formatted. + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Format a currency according to the given options and the default/instance locale. + */ +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.currencyFormatter( currency, options )( value ); +}; + +/** + * .parseCurrency( value, currency [, options] ) + * + * @value [String] + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: See currencyFormatter. + * + * Return the parsed currency or NaN when value is invalid. + */ +Globalize.parseCurrency = +Globalize.prototype.parseCurrency = function( /* value, currency, options */ ) { +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/date.js b/StockManMVC/bower_components/globalize/dist/globalize/date.js new file mode 100644 index 0000000..4fa68ce --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/date.js @@ -0,0 +1,1923 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + formatMessage = Globalize._formatMessage, + numberSymbol = Globalize._numberSymbol, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var validateParameterTypeDate = function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + + + + +var createErrorInvalidParameterValue = function( name, value ) { + return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", { + name: name, + value: value + }); +}; + + + + +/** + * expandPattern( options, cldr ) + * + * @options [Object] if String, it's considered a skeleton. Object accepts: + * - skeleton: [String] lookup availableFormat; + * - date: [String] ( "full" | "long" | "medium" | "short" ); + * - time: [String] ( "full" | "long" | "medium" | "short" ); + * - datetime: [String] ( "full" | "long" | "medium" | "short" ); + * - raw: [String] For more info see datetime/format.js. + * + * @cldr [Cldr instance]. + * + * Return the corresponding pattern. + * Eg for "en": + * - "GyMMMd" returns "MMM d, y G"; + * - { skeleton: "GyMMMd" } returns "MMM d, y G"; + * - { date: "full" } returns "EEEE, MMMM d, y"; + * - { time: "full" } returns "h:mm:ss a zzzz"; + * - { datetime: "full" } returns "EEEE, MMMM d, y 'at' h:mm:ss a zzzz"; + * - { raw: "dd/mm" } returns "dd/mm"; + */ + +var dateExpandPattern = function( options, cldr ) { + var dateSkeleton, result, skeleton, timeSkeleton, type; + + function combineDateTime( type, datePattern, timePattern ) { + return formatMessage( + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats", + type + ]), + [ timePattern, datePattern ] + ); + } + + switch ( true ) { + case "skeleton" in options: + skeleton = options.skeleton; + result = cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + skeleton + ]); + if ( !result ) { + timeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ]; + dateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ]; + if ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) { + type = "full"; + } else if ( /MMMM/g.test( dateSkeleton ) ) { + type = "long"; + } else if ( /MMM/g.test( dateSkeleton ) || /LLL/g.test( dateSkeleton ) ) { + type = "medium"; + } else { + type = "short"; + } + result = combineDateTime( type, + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + dateSkeleton + ]), + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + timeSkeleton + ]) + ); + } + break; + + case "date" in options: + case "time" in options: + result = cldr.main([ + "dates/calendars/gregorian", + "date" in options ? "dateFormats" : "timeFormats", + ( options.date || options.time ) + ]); + break; + + case "datetime" in options: + result = combineDateTime( options.datetime, + cldr.main([ "dates/calendars/gregorian/dateFormats", options.datetime ]), + cldr.main([ "dates/calendars/gregorian/timeFormats", options.datetime ]) + ); + break; + + case "raw" in options: + result = options.raw; + break; + + default: + throw createErrorInvalidParameterValue({ + name: "options", + value: options + }); + } + + return result; +}; + + + + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +var dateDayOfWeek = function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + + + + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +var dateDistanceInDays = function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + + + + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +var dateStartOf = function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + + + + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +var dateDayOfYear = function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + + + + +/** + * millisecondsInDay + */ +var dateMillisecondsInDay = function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + + + + +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + + + + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + + + + +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +var dateFormat = function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + + + + +var dateFormatterFn = function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return dateFormat( value, numberFormatters, properties ); + }; + +}; + + + + +/** + * firstDayOfWeek + */ +var dateFirstDayOfWeek = function( cldr ) { + return dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() ); +}; + + + + +/** + * properties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + * + * @cldr [Cldr instance]. + * + * Return the properties given the pattern and cldr. + * + * TODO Support other calendar types. + */ +var dateFormatProperties = function( pattern, cldr ) { + var properties = { + numberFormatters: {}, + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function setNumberFormatterPattern( pad ) { + properties.numberFormatters[ pad ] = stringPad( "", pad ); + } + + pattern.replace( datePatternRe, function( current ) { + var formatNumber, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + properties.preferredTime = chr = cldr.supplemental.timeData.preferred(); + } + + // ZZZZ: same as "OOOO". + if ( chr === "Z" && length === 4 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + properties.eras = cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + + // Plain year. + formatNumber = true; + break; + + case "Y": + + // Year in "Week of Year" + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + if ( !properties.quarters ) { + properties.quarters = {}; + } + if ( !properties.quarters[ chr ] ) { + properties.quarters[ chr ] = {}; + } + properties.quarters[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Month + case "M": + case "L": + if ( length > 2 ) { + if ( !properties.months ) { + properties.months = {}; + } + if ( !properties.months[ chr ] ) { + properties.months[ chr ] = {}; + } + properties.months[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Week - Week of Year (w) or Week of Month (W). + case "w": + case "W": + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + // Day + case "d": + case "D": + case "F": + formatNumber = true; + break; + + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + properties.firstDay = dateFirstDayOfWeek( cldr ); + formatNumber = true; + break; + } + + /* falls through */ + case "E": + if ( !properties.days ) { + properties.days = {}; + } + if ( !properties.days[ chr ] ) { + properties.days[ chr ] = {}; + } + if ( length === 6 ) { + + // If short day names are not explicitly specified, abbreviated day names are + // used instead. + // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + // http://unicode.org/cldr/trac/ticket/6790 + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "abbreviated" + ]); + } else { + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + properties.dayPeriods = cldr.main( + "dates/calendars/gregorian/dayPeriods/format/wide" + ); + break; + + // Hour + case "h": // 1-12 + case "H": // 0-23 + case "K": // 0-11 + case "k": // 1-24 + + // Minute + case "m": + + // Second + case "s": + case "S": + case "A": + formatNumber = true; + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + properties.gmtFormat = cldr.main( "dates/timeZoneNames/gmtFormat" ); + properties.gmtZeroFormat = cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" ); + + /* falls through */ + case "Z": + case "X": + case "x": + setNumberFormatterPattern( 1 ); + setNumberFormatterPattern( 2 ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + + if ( formatNumber ) { + setNumberFormatterPattern( length ); + } + }); + + return properties; +}; + + + + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +var dateIsLeapYear = function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + + + + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +var dateLastDayOfMonth = function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + + + + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +var dateSetDate = function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + + + + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +var dateSetMonth = function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + + + + +var outOfRange = function( value, low, high ) { + return value < low || value > high; +}; + + + + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +var dateParse = function( value, tokens, properties ) { + var amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + + // Setting the month later so that we have the correct year and can determine + // the correct last day of February in case of leap year. + month = value; + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( month !== undefined ) { + dateSetMonth( date, month - 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + + + + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + + + + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +var dateTokenizer = function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + + + + +var dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + + + + +/** + * parseProperties( cldr ) + * + * @cldr [Cldr instance]. + * + * Return parser properties. + */ +var dateParseProperties = function( cldr ) { + return { + preferredTimeData: cldr.supplemental.timeData.preferred() + }; +}; + + + + +/** + * tokenizerProperties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * + * @cldr [Cldr instance]. + * + * Return Object with data that will be used by tokenizer. + */ +var dateTokenizerProperties = function( pattern, cldr ) { + var properties = { + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function populateProperties( path, value ) { + + // The `dates` and `calendars` trim's purpose is to reduce properties' key size only. + properties[ path.replace( /^.*\/dates\//, "" ).replace( /calendars\//, "" ) ] = value; + } + + cldr.on( "get", populateProperties ); + + pattern.match( datePatternRe ).forEach(function( current ) { + var chr, length; + + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" && length < 5 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Day + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + + // lookup for length >=3. + if ( length <= 2 ) { + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + cldr.main([ + "dates/calendars/gregorian/dayPeriods/format/wide" + ]); + break; + + // Zone + case "z": + case "O": + cldr.main( "dates/timeZoneNames/gmtFormat" ); + cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + cldr.main( "dates/timeZoneNames/hourFormat" ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + }); + + cldr.off( "get", populateProperties ); + + return properties; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ + /dates\/calendars\/gregorian\/dateTimeFormats\/availableFormats/, + /dates\/calendars\/gregorian\/days\/.*\/short/, + /supplemental\/timeData\/(?!001)/, + /supplemental\/weekData\/(?!001)/ + ] + }); +} + +/** + * .dateFormatter( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a date formatter function (of the form below) according to the given options and the + * default/instance locale. + * + * fn( value ) + * + * @value [Date] + * + * Return a function that formats a date according to the given `format` and the default/instance + * locale. + */ +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + var args, cldr, numberFormatters, pad, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + properties = dateFormatProperties( pattern, cldr ); + cldr.off( "get", validateRequiredCldr ); + + // Create needed number formatters. + numberFormatters = properties.numberFormatters; + delete properties.numberFormatters; + for ( pad in numberFormatters ) { + numberFormatters[ pad ] = this.numberFormatter({ + raw: numberFormatters[ pad ] + }); + } + + returnFn = dateFormatterFn( numberFormatters, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatters, properties ] ); + + return returnFn; +}; + +/** + * .dateParser( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a function that parses a string date according to the given `formats` and the + * default/instance locale. + */ +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + var args, cldr, numberParser, parseProperties, pattern, tokenizerProperties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + tokenizerProperties = dateTokenizerProperties( pattern, cldr ); + parseProperties = dateParseProperties( cldr ); + cldr.off( "get", validateRequiredCldr ); + + numberParser = this.numberParser({ raw: "0" }); + + returnFn = dateParserFn( numberParser, parseProperties, tokenizerProperties ); + + runtimeBind( args, cldr, returnFn, [ numberParser, parseProperties, tokenizerProperties ] ); + + return returnFn; +}; + +/** + * .formatDate( value, options ) + * + * @value [Date] + * + * @options [Object] see date/expand_pattern for more info. + * + * Formats a date or number according to the given options string and the default/instance locale. + */ +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +/** + * .parseDate( value, options ) + * + * @value [String] + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a Date instance or null. + */ +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/message.js b/StockManMVC/bower_components/globalize/dist/globalize/message.js new file mode 100644 index 0000000..5de252b --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/message.js @@ -0,0 +1,2076 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + createError = Globalize._createError, + isPlainObject = Globalize._isPlainObject, + runtimeBind = Globalize._runtimeBind, + validateDefaultLocale = Globalize._validateDefaultLocale, + validate = Globalize._validate, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; +var MessageFormat; +/* jshint ignore:start */ +MessageFormat = (function() { +MessageFormat._parse = (function() { + + /* + * Generated by PEG.js 0.8.0. + * + * http://pegjs.majda.cz/ + */ + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function SyntaxError(message, expected, found, offset, line, column) { + this.message = message; + this.expected = expected; + this.found = found; + this.offset = offset; + this.line = line; + this.column = column; + + this.name = "SyntaxError"; + } + + peg$subclass(SyntaxError, Error); + + function parse(input) { + var options = arguments.length > 1 ? arguments[1] : {}, + + peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = [], + peg$c1 = function(st) { + return { type: 'messageFormatPattern', statements: st }; + }, + peg$c2 = peg$FAILED, + peg$c3 = "{", + peg$c4 = { type: "literal", value: "{", description: "\"{\"" }, + peg$c5 = null, + peg$c6 = ",", + peg$c7 = { type: "literal", value: ",", description: "\",\"" }, + peg$c8 = "}", + peg$c9 = { type: "literal", value: "}", description: "\"}\"" }, + peg$c10 = function(argIdx, efmt) { + var res = { + type: "messageFormatElement", + argumentIndex: argIdx + }; + if (efmt && efmt.length) { + res.elementFormat = efmt[1]; + } else { + res.output = true; + } + return res; + }, + peg$c11 = "plural", + peg$c12 = { type: "literal", value: "plural", description: "\"plural\"" }, + peg$c13 = function(t, s) { + return { type: "elementFormat", key: t, val: s }; + }, + peg$c14 = "selectordinal", + peg$c15 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, + peg$c16 = "select", + peg$c17 = { type: "literal", value: "select", description: "\"select\"" }, + peg$c18 = function(t, p) { + return { type: "elementFormat", key: t, val: p }; + }, + peg$c19 = function(op, pf) { + return { type: "pluralFormatPattern", pluralForms: pf, offset: op || 0 }; + }, + peg$c20 = "offset", + peg$c21 = { type: "literal", value: "offset", description: "\"offset\"" }, + peg$c22 = ":", + peg$c23 = { type: "literal", value: ":", description: "\":\"" }, + peg$c24 = function(d) { return d; }, + peg$c25 = function(k, mfp) { + return { key: k, val: mfp }; + }, + peg$c26 = function(i) { return i; }, + peg$c27 = "=", + peg$c28 = { type: "literal", value: "=", description: "\"=\"" }, + peg$c29 = function(pf) { return { type: "selectFormatPattern", pluralForms: pf }; }, + peg$c30 = function(p) { return p; }, + peg$c31 = "#", + peg$c32 = { type: "literal", value: "#", description: "\"#\"" }, + peg$c33 = function() { return {type: 'octothorpe'}; }, + peg$c34 = function(s) { return { type: "string", val: s.join('') }; }, + peg$c35 = { type: "other", description: "identifier" }, + peg$c36 = /^[0-9a-zA-Z$_]/, + peg$c37 = { type: "class", value: "[0-9a-zA-Z$_]", description: "[0-9a-zA-Z$_]" }, + peg$c38 = /^[^ \t\n\r,.+={}]/, + peg$c39 = { type: "class", value: "[^ \\t\\n\\r,.+={}]", description: "[^ \\t\\n\\r,.+={}]" }, + peg$c40 = function(s) { return s; }, + peg$c41 = function(chars) { return chars.join(''); }, + peg$c42 = /^[^{}#\\\0-\x1F \t\n\r]/, + peg$c43 = { type: "class", value: "[^{}#\\\\\\0-\\x1F \\t\\n\\r]", description: "[^{}#\\\\\\0-\\x1F \\t\\n\\r]" }, + peg$c44 = function(x) { return x; }, + peg$c45 = "\\\\", + peg$c46 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" }, + peg$c47 = function() { return "\\"; }, + peg$c48 = "\\#", + peg$c49 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, + peg$c50 = function() { return "#"; }, + peg$c51 = "\\{", + peg$c52 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, + peg$c53 = function() { return "\u007B"; }, + peg$c54 = "\\}", + peg$c55 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, + peg$c56 = function() { return "\u007D"; }, + peg$c57 = "\\u", + peg$c58 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, + peg$c59 = function(h1, h2, h3, h4) { + return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); + }, + peg$c60 = /^[0-9]/, + peg$c61 = { type: "class", value: "[0-9]", description: "[0-9]" }, + peg$c62 = function(ds) { + //the number might start with 0 but must not be interpreted as an octal number + //Hence, the base is passed to parseInt explicitely + return parseInt((ds.join('')), 10); + }, + peg$c63 = /^[0-9a-fA-F]/, + peg$c64 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" }, + peg$c65 = { type: "other", description: "whitespace" }, + peg$c66 = function(w) { return w.join(''); }, + peg$c67 = /^[ \t\n\r]/, + peg$c68 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, + + peg$currPos = 0, + peg$reportedPos = 0, + peg$cachedPos = 0, + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }, + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$reportedPos, peg$currPos); + } + + function offset() { + return peg$reportedPos; + } + + function line() { + return peg$computePosDetails(peg$reportedPos).line; + } + + function column() { + return peg$computePosDetails(peg$reportedPos).column; + } + + function expected(description) { + throw peg$buildException( + null, + [{ type: "other", description: description }], + peg$reportedPos + ); + } + + function error(message) { + throw peg$buildException(message, null, peg$reportedPos); + } + + function peg$computePosDetails(pos) { + function advance(details, startPos, endPos) { + var p, ch; + + for (p = startPos; p < endPos; p++) { + ch = input.charAt(p); + if (ch === "\n") { + if (!details.seenCR) { details.line++; } + details.column = 1; + details.seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + details.line++; + details.column = 1; + details.seenCR = true; + } else { + details.column++; + details.seenCR = false; + } + } + } + + if (peg$cachedPos !== pos) { + if (peg$cachedPos > pos) { + peg$cachedPos = 0; + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }; + } + advance(peg$cachedPosDetails, peg$cachedPos, pos); + peg$cachedPos = pos; + } + + return peg$cachedPosDetails; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildException(message, expected, pos) { + function cleanupExpected(expected) { + var i = 1; + + expected.sort(function(a, b) { + if (a.description < b.description) { + return -1; + } else if (a.description > b.description) { + return 1; + } else { + return 0; + } + }); + + while (i < expected.length) { + if (expected[i - 1] === expected[i]) { + expected.splice(i, 1); + } else { + i++; + } + } + } + + function buildMessage(expected, found) { + function stringEscape(s) { + function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } + + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\x08/g, '\\b') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\f/g, '\\f') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) + .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) + .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); + } + + var expectedDescs = new Array(expected.length), + expectedDesc, foundDesc, i; + + for (i = 0; i < expected.length; i++) { + expectedDescs[i] = expected[i].description; + } + + expectedDesc = expected.length > 1 + ? expectedDescs.slice(0, -1).join(", ") + + " or " + + expectedDescs[expected.length - 1] + : expectedDescs[0]; + + foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; + + return "Expected " + expectedDesc + " but " + foundDesc + " found."; + } + + var posDetails = peg$computePosDetails(pos), + found = pos < input.length ? input.charAt(pos) : null; + + if (expected !== null) { + cleanupExpected(expected); + } + + return new SyntaxError( + message !== null ? message : buildMessage(expected, found), + expected, + found, + pos, + posDetails.line, + posDetails.column + ); + } + + function peg$parsestart() { + var s0; + + s0 = peg$parsemessageFormatPattern(); + + return s0; + } + + function peg$parsemessageFormatPattern() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsemessageFormatElement(); + if (s2 === peg$FAILED) { + s2 = peg$parsestring(); + if (s2 === peg$FAILED) { + s2 = peg$parseoctothorpe(); + } + } + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsemessageFormatElement(); + if (s2 === peg$FAILED) { + s2 = peg$parsestring(); + if (s2 === peg$FAILED) { + s2 = peg$parseoctothorpe(); + } + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c1(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsemessageFormatElement() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c3; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse_(); + if (s2 !== peg$FAILED) { + s3 = peg$parseid(); + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s5 = peg$c6; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parseelementFormat(); + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$c2; + } + } else { + peg$currPos = s4; + s4 = peg$c2; + } + if (s4 === peg$FAILED) { + s4 = peg$c5; + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s6 = peg$c8; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s6 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c10(s3, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseelementFormat() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c11) { + s2 = peg$c11; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsepluralFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 13) === peg$c14) { + s2 = peg$c14; + peg$currPos += 13; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c15); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsepluralFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c16) { + s2 = peg$c16; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c17); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c6; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parseselectFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parseid(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseargStylePattern(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseargStylePattern(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c18(s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + } + + return s0; + } + + function peg$parsepluralFormatPattern() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseoffsetPattern(); + if (s1 === peg$FAILED) { + s1 = peg$c5; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsepluralForm(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsepluralForm(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c19(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseoffsetPattern() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c20) { + s2 = peg$c20; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c21); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c22; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsedigits(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c24(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parsepluralForm() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parsepluralKey(); + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c3; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsemessageFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s8 = peg$c8; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s8 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c25(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parsepluralKey() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 61) { + s1 = peg$c27; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsedigits(); + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c24(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + + return s0; + } + + function peg$parseselectFormatPattern() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parseselectForm(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseselectForm(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c29(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseselectForm() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parseid(); + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c3; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsemessageFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s8 = peg$c8; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + if (s8 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c25(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseargStylePattern() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c6; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + s4 = peg$parseid(); + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c30(s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + + return s0; + } + + function peg$parseoctothorpe() { + var s0, s1; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 35) { + s1 = peg$c31; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c33(); + } + s0 = s1; + + return s0; + } + + function peg$parsestring() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsechars(); + if (s2 === peg$FAILED) { + s2 = peg$parsewhitespace(); + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsechars(); + if (s2 === peg$FAILED) { + s2 = peg$parsewhitespace(); + } + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c34(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseid() { + var s0, s1, s2, s3, s4, s5, s6; + + peg$silentFails++; + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$currPos; + if (peg$c36.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c37); } + } + if (s4 !== peg$FAILED) { + s5 = []; + if (peg$c38.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c38.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + } else { + peg$currPos = s3; + s3 = peg$c2; + } + if (s3 !== peg$FAILED) { + s3 = input.substring(s2, peg$currPos); + } + s2 = s3; + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c40(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c35); } + } + + return s0; + } + + function peg$parsechars() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsechar(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsechar(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c41(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsechar() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (peg$c42.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c44(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c45) { + s1 = peg$c45; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c47(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c48) { + s1 = peg$c48; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c50(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c51) { + s1 = peg$c51; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c53(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c54) { + s1 = peg$c54; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c55); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c56(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c57) { + s1 = peg$c57; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsehexDigit(); + if (s2 !== peg$FAILED) { + s3 = peg$parsehexDigit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsehexDigit(); + if (s4 !== peg$FAILED) { + s5 = peg$parsehexDigit(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c59(s2, s3, s4, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + } + } + } + + return s0; + } + + function peg$parsedigits() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c60.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c60.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c62(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsehexDigit() { + var s0; + + if (peg$c63.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c64); } + } + + return s0; + } + + function peg$parse_() { + var s0, s1, s2; + + peg$silentFails++; + s0 = peg$currPos; + s1 = []; + s2 = peg$parsewhitespace(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsewhitespace(); + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c66(s1); + } + s0 = s1; + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + + return s0; + } + + function peg$parsewhitespace() { + var s0; + + if (peg$c67.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c68); } + } + + return s0; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail({ type: "end", description: "end of input" }); + } + + throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos); + } + } + + return { + SyntaxError: SyntaxError, + parse: parse + }; +}()).parse; + + +/** @file messageformat.js - ICU PluralFormat + SelectFormat for JavaScript + * @author Alex Sexton - @SlexAxton + * @version 0.3.0-1 + * @copyright 2012-2015 Alex Sexton, Eemeli Aro, and Contributors + * @license To use or fork, MIT. To contribute back, Dojo CLA */ + + +/** Utility function for quoting an Object's key value iff required + * @private */ +function propname(key, obj) { + if (/^[A-Z_$][0-9A-Z_$]*$/i.test(key)) { + return obj ? obj + '.' + key : key; + } else { + var jkey = JSON.stringify(key); + return obj ? obj + '[' + jkey + ']' : jkey; + } +}; + + +/** Create a new message formatter + * + * @class + * @global + * @param {string|string[]} [locale="en"] - The locale to use, with fallbacks + * @param {function} [pluralFunc] - Optional custom pluralization function + * @param {function[]} [formatters] - Optional custom formatting functions */ +function MessageFormat(locale, pluralFunc, formatters) { + this.lc = [locale]; + this.runtime.pluralFuncs = {}; + this.runtime.pluralFuncs[this.lc[0]] = pluralFunc; + this.runtime.fmt = {}; + if (formatters) for (var f in formatters) { + this.runtime.fmt[f] = formatters[f]; + } +} + + + + +/** Parse an input string to its AST + * + * Precompiled from `lib/messageformat-parser.pegjs` by + * {@link http://pegjs.org/ PEG.js}. Included in MessageFormat object + * to enable testing. + * + * @private */ + + + +/** Pluralization functions from + * {@link http://github.com/eemeli/make-plural.js make-plural} + * + * @memberof MessageFormat + * @type Object. */ +MessageFormat.plurals = {}; + + +/** Default number formatting functions in the style of ICU's + * {@link http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html simpleArg syntax} + * implemented using the + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl} + * object defined by ECMA-402. + * + * **Note**: Intl is not defined in default Node until 0.11.15 / 0.12.0, so + * earlier versions require a {@link https://www.npmjs.com/package/intl polyfill}. + * Therefore {@link MessageFormat.withIntlSupport} needs to be true for these + * functions to be available for inclusion in the output. + * + * @see MessageFormat#setIntlSupport + * + * @namespace + * @memberof MessageFormat + * @property {function} number - Represent a number as an integer, percent or currency value + * @property {function} date - Represent a date as a full/long/default/short string + * @property {function} time - Represent a time as a full/long/default/short string + * + * @example + * > var MessageFormat = require('messageformat'); + * > var mf = (new MessageFormat('en')).setIntlSupport(true); + * > mf.currency = 'EUR'; + * > var mfunc = mf.compile("The total is {V,number,currency}."); + * > mfunc({V:5.5}) + * "The total is €5.50." + * + * @example + * > var MessageFormat = require('messageformat'); + * > var mf = new MessageFormat('en', null, {number: MessageFormat.number}); + * > mf.currency = 'EUR'; + * > var mfunc = mf.compile("The total is {V,number,currency}."); + * > mfunc({V:5.5}) + * "The total is €5.50." */ +MessageFormat.formatters = {}; + +/** Enable or disable support for the default formatters, which require the + * `Intl` object. Note that this can't be autodetected, as the environment + * in which the formatted text is compiled into Javascript functions is not + * necessarily the same environment in which they will get executed. + * + * @see MessageFormat.formatters + * + * @memberof MessageFormat + * @param {boolean} [enable=true] + * @returns {Object} The MessageFormat instance, to allow for chaining + * @example + * > var Intl = require('intl'); + * > var MessageFormat = require('messageformat'); + * > var mf = (new MessageFormat('en')).setIntlSupport(true); + * > mf.currency = 'EUR'; + * > mf.compile("The total is {V,number,currency}.")({V:5.5}); + * "The total is €5.50." */ + + + +/** A set of utility functions that are called by the compiled Javascript + * functions, these are included locally in the output of {@link + * MessageFormat#compile compile()}. + * + * @namespace + * @memberof MessageFormat */ +MessageFormat.prototype.runtime = { + + /** Utility function for `#` in plural rules + * + * @param {number} value - The value to operate on + * @param {number} [offset=0] - An optional offset, set by the surrounding context */ + number: function(value, offset) { + if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + return value - (offset || 0); + }, + + /** Utility function for `{N, plural|selectordinal, ...}` + * + * @param {number} value - The key to use to find a pluralization rule + * @param {number} offset - An offset to apply to `value` + * @param {function} lcfunc - A locale function from `pluralFuncs` + * @param {Object.} data - The object from which results are looked up + * @param {?boolean} isOrdinal - If true, use ordinal rather than cardinal rules + * @returns {string} The result of the pluralization */ + plural: function(value, offset, lcfunc, data, isOrdinal) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + if (offset) value -= offset; + var key = lcfunc(value, isOrdinal); + if (key in data) return data[key](); + return data.other(); + }, + + /** Utility function for `{N, select, ...}` + * + * @param {number} value - The key to use to find a selection + * @param {Object.} data - The object from which results are looked up + * @returns {string} The result of the select statement */ + select: function(value, data) { + if ({}.hasOwnProperty.call(data, value)) return data[value](); + return data.other() + }, + + /** Pluralization functions included in compiled output + * @instance + * @type Object. */ + pluralFuncs: {}, + + /** Custom formatting functions called by `{var, fn[, args]*}` syntax + * + * For examples, see {@link MessageFormat.formatters} + * + * @instance + * @see MessageFormat.formatters + * @type Object. */ + fmt: {}, + + /** Custom stringifier to clean up browser inconsistencies + * @instance */ + toString: function () { + var _stringify = function(o, level) { + if (typeof o != 'object') { + var funcStr = o.toString().replace(/^(function )\w*/, '$1'); + var indent = /([ \t]*)\S.*$/.exec(funcStr); + return indent ? funcStr.replace(new RegExp('^' + indent[1], 'mg'), '') : funcStr; + } + var s = []; + for (var i in o) if (i != 'toString') { + if (level == 0) s.push('var ' + i + ' = ' + _stringify(o[i], level + 1) + ';\n'); + else s.push(propname(i) + ': ' + _stringify(o[i], level + 1)); + } + if (level == 0) return s.join(''); + if (s.length == 0) return '{}'; + var indent = ' '; while (--level) indent += ' '; + return '{\n' + s.join(',\n').replace(/^/gm, indent) + '\n}'; + }; + return _stringify(this, 0); + } +}; + + +/** Recursively map an AST to its resulting string + * + * @memberof MessageFormat + * + * @param ast - the Ast node for which the JS code should be generated + * + * @private */ +MessageFormat.prototype._precompile = function(ast, data) { + data = data || { keys: {}, offset: {} }; + var r = [], i, tmp, args = []; + + switch ( ast.type ) { + case 'messageFormatPattern': + for ( i = 0; i < ast.statements.length; ++i ) { + r.push(this._precompile( ast.statements[i], data )); + } + tmp = r.join(' + ') || '""'; + return data.pf_count ? tmp : 'function(d) { return ' + tmp + '; }'; + + case 'messageFormatElement': + data.pf_count = data.pf_count || 0; + if ( ast.output ) { + return propname(ast.argumentIndex, 'd'); + } + else { + data.keys[data.pf_count] = ast.argumentIndex; + return this._precompile( ast.elementFormat, data ); + } + return ''; + + case 'elementFormat': + args = [ propname(data.keys[data.pf_count], 'd') ]; + switch (ast.key) { + case 'select': + args.push(this._precompile(ast.val, data)); + return 'select(' + args.join(', ') + ')'; + case 'selectordinal': + args = args.concat([ 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data), 1 ]); + return 'plural(' + args.join(', ') + ')'; + case 'plural': + data.offset[data.pf_count || 0] = ast.val.offset || 0; + args = args.concat([ data.offset[data.pf_count] || 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data) ]); + return 'plural(' + args.join(', ') + ')'; + default: + if (this.withIntlSupport && !(ast.key in this.runtime.fmt) && (ast.key in MessageFormat.formatters)) { + tmp = MessageFormat.formatters[ast.key]; + this.runtime.fmt[ast.key] = (typeof tmp(this) == 'function') ? tmp(this) : tmp; + } + args.push(JSON.stringify(this.lc)); + if (ast.val && ast.val.length) args.push(JSON.stringify(ast.val.length == 1 ? ast.val[0] : ast.val)); + return 'fmt.' + ast.key + '(' + args.join(', ') + ')'; + } + + case 'pluralFormatPattern': + case 'selectFormatPattern': + data.pf_count = data.pf_count || 0; + if (ast.type == 'selectFormatPattern') data.offset[data.pf_count] = 0; + var needOther = true; + for (i = 0; i < ast.pluralForms.length; ++i) { + var key = ast.pluralForms[i].key; + if (key === 'other') needOther = false; + var data_copy = JSON.parse(JSON.stringify(data)); + data_copy.pf_count++; + r.push(propname(key) + ': function() { return ' + this._precompile(ast.pluralForms[i].val, data_copy) + ';}'); + } + if (needOther) throw new Error("No 'other' form found in " + ast.type + " " + data.pf_count); + return '{ ' + r.join(', ') + ' }'; + + case 'string': + return JSON.stringify(ast.val || ""); + + case 'octothorpe': + if (!data.pf_count) return '"#"'; + args = [ propname(data.keys[data.pf_count-1], 'd') ]; + if (data.offset[data.pf_count-1]) args.push(data.offset[data.pf_count-1]); + return 'number(' + args.join(', ') + ')'; + + default: + throw new Error( 'Bad AST type: ' + ast.type ); + } +}; + +/** Compile messages into an executable function with clean string + * representation. + * + * If `messages` is a single string including ICU MessageFormat declarations, + * `opt` is ignored and the returned function takes a single Object parameter + * `d` representing each of the input's defined variables. The returned + * function will be defined in a local scope that includes all the required + * runtime variables. + * + * If `messages` is a map of keys to strings, or a map of namespace keys to + * such key/string maps, the returned function will fill the specified global + * with javascript functions matching the structure of the input. In such use, + * the output of `compile()` is expected to be serialized using `.toString()`, + * and will include definitions of the runtime functions. If `opt.global` is + * null, calling the output function will return the object itself. + * + * Together, the input parameters should match the following patterns: + * ```js + * messages = "string" || { key0: "string0", key1: "string1", ... } || { + * ns0: { key0: "string0", key1: "string1", ... }, + * ns1: { key0: "string0", key1: "string1", ... }, + * ... + * } + * + * opt = null || { + * locale: null || { + * ns0: "lc0" || [ "lc0", ... ], + * ns1: "lc1" || [ "lc1", ... ], + * ... + * }, + * global: null || "module.exports" || "exports" || "i18n" || ... + * } + * ``` + * + * @memberof MessageFormat + * @param {string|Object} + * messages - The input message(s) to be compiled, in ICU MessageFormat + * @param {Object} [opt={}] - Options controlling output for non-simple intput + * @param {Object} [opt.locale] - The locales to use for the messages, with a + * structure matching that of `messages` + * @param {string} [opt.global=""] - The global variable that the output + * function should use, or a null string for none. "exports" and + * "module.exports" are recognised as special cases. + * @returns {function} The first match found for the given locale(s) + * + * @example + * > var MessageFormat = require('messageformat'), + * ... mf = new MessageFormat('en'), + * ... mfunc0 = mf.compile('A {TYPE} example.'); + * > mfunc0({TYPE:'simple'}) + * 'A simple example.' + * > mfunc0.toString() + * 'function (d) { return "A " + d.TYPE + " example."; }' + * + * @example + * > var msgSet = { a: 'A {TYPE} example.', + * ... b: 'This has {COUNT, plural, one{one member} other{# members}}.' }, + * ... mfuncSet = mf.compile(msgSet); + * > mfuncSet().a({TYPE:'more complex'}) + * 'A more complex example.' + * > mfuncSet().b({COUNT:2}) + * 'This has 2 members.' + * + * > console.log(mfuncSet.toString()) + * function anonymous() { + * var number = function (value, offset) { + * if (isNaN(value)) throw new Error("'" + value + "' isn't a number."); + * return value - (offset || 0); + * }; + * var plural = function (value, offset, lcfunc, data, isOrdinal) { + * if ({}.hasOwnProperty.call(data, value)) return data[value](); + * if (offset) value -= offset; + * var key = lcfunc(value, isOrdinal); + * if (key in data) return data[key](); + * return data.other(); + * }; + * var select = function (value, data) { + * if ({}.hasOwnProperty.call(data, value)) return data[value](); + * return data.other() + * }; + * var pluralFuncs = { + * en: function (n, ord) { + * var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, + * n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2); + * if (ord) return (n10 == 1 && n100 != 11) ? 'one' + * : (n10 == 2 && n100 != 12) ? 'two' + * : (n10 == 3 && n100 != 13) ? 'few' + * : 'other'; + * return (n == 1 && v0) ? 'one' : 'other'; + * } + * }; + * var fmt = {}; + * + * return { + * a: function(d) { return "A " + d.TYPE + " example."; }, + * b: function(d) { return "This has " + plural(d.COUNT, 0, pluralFuncs.en, { one: function() { return "one member";}, other: function() { return number(d.COUNT)+" members";} }) + "."; } + * } + * } + * + * @example + * > mf.runtime.pluralFuncs.fi = MessageFormat.plurals.fi; + * > var multiSet = { en: { a: 'A {TYPE} example.', + * ... b: 'This is the {COUNT, selectordinal, one{#st} two{#nd} few{#rd} other{#th}} example.' }, + * ... fi: { a: '{TYPE} esimerkki.', + * ... b: 'Tämä on {COUNT, selectordinal, other{#.}} esimerkki.' } }, + * ... multiSetLocales = { en: 'en', fi: 'fi' }, + * ... mfuncSet = mf.compile(multiSet, { locale: multiSetLocales, global: 'i18n' }); + * > mfuncSet(this); + * > i18n.en.b({COUNT:3}) + * 'This is the 3rd example.' + * > i18n.fi.b({COUNT:3}) + * 'Tämä on 3. esimerkki.' */ +MessageFormat.prototype.compile = function ( messages, opt ) { + var r = {}, lc0 = this.lc, + compileMsg = function(self, msg) { + try { + var ast = MessageFormat._parse(msg); + return self._precompile(ast); + } catch (e) { + throw new Error((ast ? 'Precompiler' : 'Parser') + ' error: ' + e.toString()); + } + }, + stringify = function(r, level) { + if (!level) level = 0; + if (typeof r != 'object') return r; + var o = [], indent = ''; + for (var i = 0; i < level; ++i) indent += ' '; + for (var k in r) o.push('\n' + indent + ' ' + propname(k) + ': ' + stringify(r[k], level + 1)); + return '{' + o.join(',') + '\n' + indent + '}'; + }; + + if (typeof messages == 'string') { + var f = new Function( + 'number, plural, select, pluralFuncs, fmt', + 'return ' + compileMsg(this, messages)); + return f(this.runtime.number, this.runtime.plural, this.runtime.select, + this.runtime.pluralFuncs, this.runtime.fmt); + } + + opt = opt || {}; + + for (var ns in messages) { + if (opt.locale) this.lc = opt.locale[ns] && [].concat(opt.locale[ns]) || lc0; + if (typeof messages[ns] == 'string') { + try { r[ns] = compileMsg(this, messages[ns]); } + catch (e) { e.message = e.message.replace(':', ' with `' + ns + '`:'); throw e; } + } else { + r[ns] = {}; + for (var key in messages[ns]) { + try { r[ns][key] = compileMsg(this, messages[ns][key]); } + catch (e) { e.message = e.message.replace(':', ' with `' + key + '` in `' + ns + '`:'); throw e; } + } + } + } + + this.lc = lc0; + var s = this.runtime.toString() + '\n'; + switch (opt.global || '') { + case 'exports': + var o = []; + for (var k in r) o.push(propname(k, 'exports') + ' = ' + stringify(r[k])); + return new Function(s + o.join(';\n')); + case 'module.exports': + return new Function(s + 'module.exports = ' + stringify(r)); + case '': + return new Function(s + 'return ' + stringify(r)); + default: + return new Function('G', s + propname(opt.global, 'G') + ' = ' + stringify(r)); + } +}; + + +return MessageFormat; +}()); +/* jshint ignore:end */ + + +var createErrorPluralModulePresence = function() { + return createError( "E_MISSING_PLURAL_MODULE", "Plural module not loaded." ); +}; + + + + +var validateMessageBundle = function( cldr ) { + validate( + "E_MISSING_MESSAGE_BUNDLE", + "Missing message bundle for locale `{locale}`.", + cldr.attributes.bundle && cldr.get( "globalize-messages/{bundle}" ) !== undefined, + { + locale: cldr.locale + } + ); +}; + + + + +var validateMessagePresence = function( path, value ) { + path = path.join( "/" ); + validate( "E_MISSING_MESSAGE", "Missing required message content `{path}`.", + value !== undefined, { path: path } ); +}; + + + + +var validateMessageType = function( path, value ) { + path = path.join( "/" ); + validate( + "E_INVALID_MESSAGE", + "Invalid message content `{path}`. {expected} expected.", + typeof value === "string", + { + expected: "a string", + path: path + } + ); +}; + + + + +var validateParameterTypeMessageVariables = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + + + + +var messageFormatterFn = function( formatter ) { + return function messageFormatter( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = [].slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + + + + +var messageFormatterRuntimeBind = function( cldr, messageformatter ) { + var locale = cldr.locale, + origToString = messageformatter.toString; + + messageformatter.toString = function() { + var argNames, argValues, output, + args = {}; + + // Properly adjust SlexAxton/messageformat.js compiled variables with Globalize variables: + output = origToString.call( messageformatter ); + + if ( /number\(/.test( output ) ) { + args.number = "messageFormat.number"; + } + + if ( /plural\(/.test( output ) ) { + args.plural = "messageFormat.plural"; + } + + if ( /select\(/.test( output ) ) { + args.select = "messageFormat.select"; + } + + output.replace( /pluralFuncs(\[([^\]]+)\]|\.([a-zA-Z]+))/, function( match ) { + args.pluralFuncs = "{" + + "\"" + locale + "\": Globalize(\"" + locale + "\").pluralGenerator()" + + "}"; + return match; + }); + + argNames = Object.keys( args ).join( ", " ); + argValues = Object.keys( args ).map(function( key ) { + return args[ key ]; + }).join( ", " ); + + return "(function( " + argNames + " ) {\n" + + " return " + output + "\n" + + "})(" + argValues + ")"; + }; + + return messageformatter; +}; + + + + +var slice = [].slice; + +/** + * .loadMessages( json ) + * + * @json [JSON] + * + * Load translation data. + */ +Globalize.loadMessages = function( json ) { + var locale, + customData = { + "globalize-messages": json, + "main": {} + }; + + validateParameterPresence( json, "json" ); + validateParameterTypePlainObject( json, "json" ); + + // Set available bundles by populating customData main dataset. + for ( locale in json ) { + if ( json.hasOwnProperty( locale ) ) { + customData.main[ locale ] = {}; + } + } + + Cldr.load( customData ); +}; + +/** + * .messageFormatter( path ) + * + * @path [String or Array] + * + * Format a message given its path. + */ +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( path ) { + var cldr, formatter, message, pluralGenerator, returnFn, + args = slice.call( arguments, 0 ); + + validateParameterPresence( path, "path" ); + validateParameterType( path, "path", typeof path === "string" || Array.isArray( path ), + "a String nor an Array" ); + + path = alwaysArray( path ); + cldr = this.cldr; + + validateDefaultLocale( cldr ); + validateMessageBundle( cldr ); + + message = cldr.get( [ "globalize-messages/{bundle}" ].concat( path ) ); + validateMessagePresence( path, message ); + + // If message is an Array, concatenate it. + if ( Array.isArray( message ) ) { + message = message.join( " " ); + } + validateMessageType( path, message ); + + // Is plural module present? Yes, use its generator. Nope, use an error generator. + pluralGenerator = this.plural !== undefined ? + this.pluralGenerator() : + createErrorPluralModulePresence; + + formatter = new MessageFormat( cldr.locale, pluralGenerator ).compile( message ); + + returnFn = messageFormatterFn( formatter ); + + runtimeBind( args, cldr, returnFn, + [ messageFormatterRuntimeBind( cldr, formatter ), pluralGenerator ] ); + + return returnFn; +}; + +/** + * .formatMessage( path [, variables] ) + * + * @path [String or Array] + * + * @variables [Number, String, Array or Object] + * + * Format a message given its path. + */ +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) ); +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/number.js b/StockManMVC/bower_components/globalize/dist/globalize/number.js new file mode 100644 index 0000000..c2a859c --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/number.js @@ -0,0 +1,1311 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + objectExtend = Globalize._objectExtend, + regexpEscape = Globalize._regexpEscape, + runtimeBind = Globalize._runtimeBind, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterRange = Globalize._validateParameterRange, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +var numberFormatterFn = function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + + + + +/** + * NumberingSystem( cldr ) + * + * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems + * - http://cldr.unicode.org/index/bcp47-extension + * - http://www.unicode.org/reports/tr35/#u_Extension + */ +var numberNumberingSystem = function( cldr ) { + var nu = cldr.attributes[ "u-nu" ]; + + if ( nu ) { + if ( nu === "traditio" ) { + nu = "traditional"; + } + if ( [ "native", "traditional", "finance" ].indexOf( nu ) !== -1 ) { + + // Unicode locale extension `u-nu` is set using either (native, traditional or + // finance). So, lookup the respective locale's numberingSystem and return it. + return cldr.main([ "numbers/otherNumberingSystems", nu ]); + } + + // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it. + return nu; + } + + // Return the default numberingSystem. + return cldr.main( "numbers/defaultNumberingSystem" ); +}; + + + + +/** + * nuMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return digits map if numbering system is different than `latn`. + */ +var numberNumberingSystemDigitsMap = function( cldr ) { + var aux, + nu = numberNumberingSystem( cldr ); + + if ( nu === "latn" ) { + return; + } + + aux = cldr.supplemental([ "numberingSystems", nu ]); + + if ( aux._type !== "numeric" ) { + throw createErrorUnsupportedFeature( "`" + aux._type + "` numbering system" ); + } + + return aux._digits; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix? + * padding? + * (integer_fraction_pattern | significant_pattern) + * scientific_notation? + * suffix? + * + * prefix = non_number_stuff + * + * padding = "*" regexp(.) + * + * integer_fraction_pattern = integer_pattern + * fraction_pattern? + * + * integer_pattern = regexp([#,]*[0,]*0+) + * + * fraction_pattern = "." regexp(0*[0-9]*#*) + * + * significant_pattern = regexp([#,]*@+#*) + * + * scientific_notation = regexp(E\+?0+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: - + * 3: padding + * 4: (integer_fraction_pattern | significant_pattern) + * 5: integer_fraction_pattern + * 6: integer_pattern + * 7: fraction_pattern + * 8: significant_pattern + * 9: scientific_notation + * 10: suffix + * 11: - + */ +var numberPatternRe = ( /^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ ); + + + + +/** + * format( number, pattern ) + * + * @number [Number]. + * + * @pattern [String] raw pattern for numbers. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberPatternProperties = function( pattern ) { + var aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern, + maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize, + roundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix; + + pattern = pattern.match( numberPatternRe ); + if ( !pattern ) { + throw new Error( "Invalid pattern: " + pattern ); + } + + prefix = pattern[ 1 ]; + padding = pattern[ 3 ]; + integerFractionOrSignificantPattern = pattern[ 4 ]; + significantPattern = pattern[ 8 ]; + scientificNotation = pattern[ 9 ]; + suffix = pattern[ 10 ]; + + // Significant digit format + if ( significantPattern ) { + significantPattern.replace( /(@+)(#*)/, function( match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) { + minimumSignificantDigits = minimumSignificantDigitsMatch.length; + maximumSignificantDigits = minimumSignificantDigits + + maximumSignificantDigitsMatch.length; + }); + + // Integer and fractional format + } else { + fractionPattern = pattern[ 7 ]; + integerPattern = pattern[ 6 ]; + + if ( fractionPattern ) { + + // Minimum fraction digits, and rounding. + fractionPattern.replace( /[0-9]+/, function( match ) { + minimumFractionDigits = match; + }); + if ( minimumFractionDigits ) { + roundIncrement = +( "0." + minimumFractionDigits ); + minimumFractionDigits = minimumFractionDigits.length; + } else { + minimumFractionDigits = 0; + } + + // Maximum fraction digits + // 1: ignore decimal character + maximumFractionDigits = fractionPattern.length - 1 /* 1 */; + } + + // Minimum integer digits + integerPattern.replace( /0+$/, function( match ) { + minimumIntegerDigits = match.length; + }); + } + + // Scientific notation + if ( scientificNotation ) { + throw createErrorUnsupportedFeature({ + feature: "scientific notation (not implemented)" + }); + } + + // Padding + if ( padding ) { + throw createErrorUnsupportedFeature({ + feature: "padding (not implemented)" + }); + } + + // Grouping + if ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( "," ) ) !== -1 ) { + + // Primary grouping size is the interval between the last group separator and the end of + // the integer (or the end of the significant pattern). + aux2 = integerFractionOrSignificantPattern.split( "." )[ 0 ]; + primaryGroupingSize = aux2.length - aux1 - 1; + + // Secondary grouping size is the interval between the last two group separators. + if ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( ",", aux1 - 1 ) ) !== -1 ) { + secondaryGroupingSize = aux1 - 1 - aux2; + } + } + + // Return: + // 0: @prefix String + // 1: @padding Array [ , ] TODO + // 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer + // digits to be used. Numbers will be padded with leading zeroes if necessary. + // 3: @minimumFractionDigits and + // 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and + // maximum fraction digits to be used. Numbers will be rounded or padded with trailing + // zeroes if necessary. + // 5: @minimumSignificantDigits and + // 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and + // maximum fraction digits to be shown. Either none or both of these properties are + // present; if they are, they override minimum and maximum integer and fraction digits + // – the formatter uses however many integer and fraction digits are required to display + // the specified number of significant digits. + // 7: @roundIncrement Decimal round increment or null + // 8: @primaryGroupingSize + // 9: @secondaryGroupingSize + // 10: @suffix String + return [ + prefix, + padding, + minimumIntegerDigits, + minimumFractionDigits, + maximumFractionDigits, + minimumSignificantDigits, + maximumSignificantDigits, + roundIncrement, + primaryGroupingSize, + secondaryGroupingSize, + suffix + ]; +}; + + + + +/** + * Symbol( name, cldr ) + * + * @name [String] Symbol name. + * + * @cldr [Cldr instance]. + * + * Return the localized symbol given its name. + */ +var numberSymbol = function( name, cldr ) { + return cldr.main([ + "numbers/symbols-numberSystem-" + numberNumberingSystem( cldr ), + name + ]); +}; + + + + +var numberSymbolName = { + ".": "decimal", + ",": "group", + "%": "percentSign", + "+": "plusSign", + "-": "minusSign", + "E": "exponential", + "\u2030": "perMille" +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * ".": "٫", + * ",": "٬", + * "%": "٪", + * ... + * }; + */ +var numberSymbolMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr ); + } + + return symbolMap; +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +/** + * formatProperties( pattern, cldr [, options] ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * @options [Object]: + * - minimumIntegerDigits [Number] + * - minimumFractionDigits, maximumFractionDigits [Number] + * - minimumSignificantDigits, maximumSignificantDigits [Number] + * - round [String] "ceil", "floor", "round" (default), or "truncate". + * - useGrouping [Boolean] default true. + * + * Return the processed properties that will be used in number/format. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormatProperties = function( pattern, cldr, options ) { + var negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern, + roundFn, properties; + + function getOptions( attribute, propertyIndex ) { + if ( attribute in options ) { + properties[ propertyIndex ] = options[ attribute ]; + } + } + + options = options || {}; + pattern = pattern.split( ";" ); + + positivePattern = pattern[ 0 ]; + + negativePattern = pattern[ 1 ] || "-" + positivePattern; + negativeProperties = numberPatternProperties( negativePattern ); + negativePrefix = negativeProperties[ 0 ]; + negativeSuffix = negativeProperties[ 10 ]; + + // Have runtime code to refer to numberRound() instead of including it explicitly. + roundFn = numberRound( options.round ); + roundFn.generatorString = function() { + return "numberRound(" + ( options.round ? "\"" + options.round + "\"" : "" ) + ")"; + }; + + properties = numberPatternProperties( positivePattern ).concat([ + positivePattern, + negativePrefix + positivePattern + negativeSuffix, + negativePrefix, + negativeSuffix, + roundFn, + numberSymbol( "infinity", cldr ), + numberSymbol( "nan", cldr ), + numberSymbolMap( cldr ), + numberNumberingSystemDigitsMap( cldr ) + ]); + + getOptions( "minimumIntegerDigits", 2 ); + getOptions( "minimumFractionDigits", 3 ); + getOptions( "maximumFractionDigits", 4 ); + getOptions( "minimumSignificantDigits", 5 ); + getOptions( "maximumSignificantDigits", 6 ); + + // Grouping separators + if ( options.useGrouping === false ) { + properties[ 8 ] = null; + } + + // Normalize number of digits if only one of either minimumFractionDigits or + // maximumFractionDigits is passed in as an option + if ( "minimumFractionDigits" in options && !( "maximumFractionDigits" in options ) ) { + + // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits ); + properties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] ); + } else if ( !( "minimumFractionDigits" in options ) && + "maximumFractionDigits" in options ) { + + // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits ); + properties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] ); + } + + // Return: + // 0-10: see number/pattern-properties. + // 11: @positivePattern [String] Positive pattern. + // 12: @negativePattern [String] Negative pattern. + // 13: @negativePrefix [String] Negative prefix. + // 14: @negativeSuffix [String] Negative suffix. + // 15: @round [Function] Round function. + // 16: @infinitySymbol [String] Infinity symbol. + // 17: @nanSymbol [String] NaN symbol. + // 18: @symbolMap [Object] A bunch of other symbols. + // 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`. + return properties; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +var numberParserFn = function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * "٫": ".", + * "٬": ",", + * "٪": "%", + * ... + * }; + */ +var numberSymbolInvertedMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol; + } + + return symbolMap; +}; + + + + +/** + * parseProperties( pattern, cldr ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * Return parser properties, used to feed parser function. + */ +var numberParseProperties = function( pattern, cldr ) { + var invertedNuDigitsMap, invertedNuDigitsMapSanityCheck, negativePattern, negativeProperties, + nuDigitsMap = numberNumberingSystemDigitsMap( cldr ); + + pattern = pattern.split( ";" ); + negativePattern = pattern[ 1 ] || "-" + pattern[ 0 ]; + negativeProperties = numberPatternProperties( negativePattern ); + if ( nuDigitsMap ) { + invertedNuDigitsMap = nuDigitsMap.split( "" ).reduce(function( object, localizedDigit, i ) { + object[ localizedDigit ] = String( i ); + return object; + }, {} ); + invertedNuDigitsMapSanityCheck = "0123456789".split( "" ).reduce(function( object, digit ) { + object[ digit ] = "invalid"; + return object; + }, {} ); + invertedNuDigitsMap = objectExtend( + invertedNuDigitsMapSanityCheck, + invertedNuDigitsMap + ); + } + + // 0: @infinitySymbol [String] Infinity symbol. + // 1: @invertedSymbolMap [Object] Inverted symbol map augmented with sanity check. + // The sanity check prevents permissive parsing, i.e., it prevents symbols that doesn't + // belong to the localized set to pass through. This is obtained with the result of the + // inverted map object overloading symbol name map object (the remaining symbol name + // mappings will invalidate parsing, working as the sanity check). + // 2: @negativePrefix [String] Negative prefix. + // 3: @negativeSuffix [String] Negative suffix with percent or per mille stripped out. + // 4: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than + // `latn` augmented with sanity check (similar to invertedSymbolMap). + return [ + numberSymbol( "infinity", cldr ), + objectExtend( {}, numberSymbolName, numberSymbolInvertedMap( cldr ) ), + negativeProperties[ 0 ], + negativeProperties[ 10 ].replace( "%", "" ).replace( "\u2030", "" ), + invertedNuDigitsMap + ]; +}; + + + + +/** + * Pattern( style ) + * + * @style [String] "decimal" (default) or "percent". + * + * @cldr [Cldr instance]. + */ +var numberPattern = function( style, cldr ) { + if ( style !== "decimal" && style !== "percent" ) { + throw new Error( "Invalid style" ); + } + + return cldr.main([ + "numbers", + style + "Formats-numberSystem-" + numberNumberingSystem( cldr ), + "standard" + ]); +}; + + + + +function validateDigits( properties ) { + var minimumIntegerDigits = properties[ 2 ], + minimumFractionDigits = properties[ 3 ], + maximumFractionDigits = properties[ 4 ], + minimumSignificantDigits = properties[ 5 ], + maximumSignificantDigits = properties[ 6 ]; + + // Validate significant digit format properties + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + validateParameterRange( minimumSignificantDigits, "minimumSignificantDigits", 1, 21 ); + validateParameterRange( maximumSignificantDigits, "maximumSignificantDigits", + minimumSignificantDigits, 21 ); + + } else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) { + throw new Error( "Neither or both the minimum and maximum significant digits must be " + + "present" ); + + // Validate integer and fractional format + } else { + validateParameterRange( minimumIntegerDigits, "minimumIntegerDigits", 1, 21 ); + validateParameterRange( minimumFractionDigits, "minimumFractionDigits", 0, 20 ); + validateParameterRange( maximumFractionDigits, "maximumFractionDigits", + minimumFractionDigits, 20 ); + } +} + +/** + * .numberFormatter( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * - see also number/format options. + * + * Return a function that formats a number according to the given options and default/instance + * locale. + */ +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberFormatProperties( pattern, cldr, options ); + + cldr.off( "get", validateCldr ); + + validateDigits( properties ); + + returnFn = numberFormatterFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .numberParser( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * + * Return the number parser according to the default/instance locale. + */ +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + var args, cldr, pattern, properties, returnFn; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberParseProperties( pattern, cldr ); + + cldr.off( "get", validateCldr ); + + returnFn = numberParserFn( properties ); + + runtimeBind( args, cldr, returnFn, [ properties ] ); + + return returnFn; +}; + +/** + * .formatNumber( value [, options] ) + * + * @value [Number] number to be formatted. + * + * @options [Object]: see number/format-properties. + * + * Format a number according to the given options and default/instance locale. + */ +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +/** + * .parseNumber( value [, options] ) + * + * @value [String] + * + * @options [Object]: See numberParser(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + */ +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberNumberingSystem = numberNumberingSystem; +Globalize._numberPattern = numberPattern; +Globalize._numberSymbol = numberSymbol; +Globalize._stringPad = stringPad; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/plural.js b/StockManMVC/bower_components/globalize/dist/globalize/plural.js new file mode 100644 index 0000000..1fe38f2 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/plural.js @@ -0,0 +1,373 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; +var MakePlural; +/* jshint ignore:start */ +MakePlural = (function() { +'use strict'; + +var _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); }; + +var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }; + +var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + +/** + * make-plural.js -- https://github.com/eemeli/make-plural.js/ + * Copyright (c) 2014-2015 by Eemeli Aro + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * The software is provided "as is" and the author disclaims all warranties + * with regard to this software including all implied warranties of + * merchantability and fitness. In no event shall the author be liable for + * any special, direct, indirect, or consequential damages or any damages + * whatsoever resulting from loss of use, data or profits, whether in an + * action of contract, negligence or other tortious action, arising out of + * or in connection with the use or performance of this software. + */ + +var Parser = (function () { + function Parser() { + _classCallCheck(this, Parser); + } + + _createClass(Parser, [{ + key: 'parse', + value: function parse(cond) { + var _this = this; + + if (cond === 'i = 0 or n = 1') { + return 'n >= 0 && n <= 1'; + }if (cond === 'i = 0,1') { + return 'n >= 0 && n < 2'; + }if (cond === 'i = 1 and v = 0') { + this.v0 = 1; + return 'n == 1 && v0'; + } + return cond.replace(/([tv]) (!?)= 0/g, function (m, sym, noteq) { + var sn = sym + '0'; + _this[sn] = 1; + return noteq ? '!' + sn : sn; + }).replace(/\b[fintv]\b/g, function (m) { + _this[m] = 1; + return m; + }).replace(/([fin]) % (10+)/g, function (m, sym, num) { + var sn = sym + num; + _this[sn] = 1; + return sn; + }).replace(/n10+ = 0/g, 't0 && $&').replace(/(\w+ (!?)= )([0-9.]+,[0-9.,]+)/g, function (m, se, noteq, x) { + if (m === 'n = 0,1') return '(n == 0 || n == 1)'; + if (noteq) return se + x.split(',').join(' && ' + se); + return '(' + se + x.split(',').join(' || ' + se) + ')'; + }).replace(/(\w+) (!?)= ([0-9]+)\.\.([0-9]+)/g, function (m, sym, noteq, x0, x1) { + if (Number(x0) + 1 === Number(x1)) { + if (noteq) return '' + sym + ' != ' + x0 + ' && ' + sym + ' != ' + x1; + return '(' + sym + ' == ' + x0 + ' || ' + sym + ' == ' + x1 + ')'; + } + if (noteq) return '(' + sym + ' < ' + x0 + ' || ' + sym + ' > ' + x1 + ')'; + if (sym === 'n') { + _this.t0 = 1;return '(t0 && n >= ' + x0 + ' && n <= ' + x1 + ')'; + } + return '(' + sym + ' >= ' + x0 + ' && ' + sym + ' <= ' + x1 + ')'; + }).replace(/ and /g, ' && ').replace(/ or /g, ' || ').replace(/ = /g, ' == '); + } + }, { + key: 'vars', + value: (function (_vars) { + function vars() { + return _vars.apply(this, arguments); + } + + vars.toString = function () { + return _vars.toString(); + }; + + return vars; + })(function () { + var vars = []; + if (this.i) vars.push('i = s[0]'); + if (this.f || this.v) vars.push('f = s[1] || \'\''); + if (this.t) vars.push('t = (s[1] || \'\').replace(/0+$/, \'\')'); + if (this.v) vars.push('v = f.length'); + if (this.v0) vars.push('v0 = !s[1]'); + if (this.t0 || this.n10 || this.n100) vars.push('t0 = Number(s[0]) == n'); + for (var k in this) { + if (/^.10+$/.test(k)) { + var k0 = k[0] === 'n' ? 't0 && s[0]' : k[0]; + vars.push('' + k + ' = ' + k0 + '.slice(-' + k.substr(2).length + ')'); + } + }if (!vars.length) return ''; + return 'var ' + ['s = String(n).split(\'.\')'].concat(vars).join(', '); + }) + }]); + + return Parser; +})(); + + + +var MakePlural = (function () { + function MakePlural(lc) { + var _ref = arguments[1] === undefined ? MakePlural : arguments[1]; + + var cardinals = _ref.cardinals; + var ordinals = _ref.ordinals; + + _classCallCheck(this, MakePlural); + + if (!cardinals && !ordinals) throw new Error('At least one type of plural is required'); + this.lc = lc; + this.categories = { cardinal: [], ordinal: [] }; + this.parser = new Parser(); + + this.fn = this.buildFunction(cardinals, ordinals); + this.fn._obj = this; + this.fn.categories = this.categories; + + this.fn.toString = this.fnToString.bind(this); + return this.fn; + } + + _createClass(MakePlural, [{ + key: 'compile', + value: function compile(type, req) { + var cases = []; + var rules = MakePlural.rules[type][this.lc]; + if (!rules) { + if (req) throw new Error('Locale "' + this.lc + '" ' + type + ' rules not found'); + this.categories[type] = ['other']; + return '\'other\''; + } + for (var r in rules) { + var _rules$r$trim$split = rules[r].trim().split(/\s*@\w*/); + + var _rules$r$trim$split2 = _toArray(_rules$r$trim$split); + + var cond = _rules$r$trim$split2[0]; + var examples = _rules$r$trim$split2.slice(1); + var cat = r.replace('pluralRule-count-', ''); + if (cond) cases.push([this.parser.parse(cond), cat]); + + } + this.categories[type] = cases.map(function (c) { + return c[1]; + }).concat('other'); + if (cases.length === 1) { + return '(' + cases[0][0] + ') ? \'' + cases[0][1] + '\' : \'other\''; + } else { + return [].concat(_toConsumableArray(cases.map(function (c) { + return '(' + c[0] + ') ? \'' + c[1] + '\''; + })), ['\'other\'']).join('\n : '); + } + } + }, { + key: 'buildFunction', + value: function buildFunction(cardinals, ordinals) { + var _this3 = this; + + var compile = function compile(c) { + return c ? (c[1] ? 'return ' : 'if (ord) return ') + _this3.compile.apply(_this3, _toConsumableArray(c)) : ''; + }, + fold = { vars: function vars(str) { + return (' ' + str + ';').replace(/(.{1,78})(,|$) ?/g, '$1$2\n '); + }, + cond: function cond(str) { + return (' ' + str + ';').replace(/(.{1,78}) (\|\| |$) ?/gm, '$1\n $2'); + } }, + cond = [ordinals && ['ordinal', !cardinals], cardinals && ['cardinal', true]].map(compile).map(fold.cond), + body = [fold.vars(this.parser.vars())].concat(_toConsumableArray(cond)).join('\n').replace(/\s+$/gm, '').replace(/^[\s;]*[\r\n]+/gm, ''), + args = ordinals && cardinals ? 'n, ord' : 'n'; + return new Function(args, body); + } + }, { + key: 'fnToString', + value: function fnToString(name) { + return Function.prototype.toString.call(this.fn).replace(/^function( \w+)?/, name ? 'function ' + name : 'function').replace('\n/**/', ''); + } + }], [{ + key: 'load', + value: function load() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + args.forEach(function (cldr) { + var data = cldr && cldr.supplemental || null; + if (!data) throw new Error('Data does not appear to be CLDR data'); + MakePlural.rules = { + cardinal: data['plurals-type-cardinal'] || MakePlural.rules.cardinal, + ordinal: data['plurals-type-ordinal'] || MakePlural.rules.ordinal + }; + }); + return MakePlural; + } + }]); + + return MakePlural; +})(); + + + +MakePlural.cardinals = true; +MakePlural.ordinals = false; +MakePlural.rules = { cardinal: {}, ordinal: {} }; + + +return MakePlural; +}()); +/* jshint ignore:end */ + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var validateParameterTypePluralType = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || value === "cardinal" || value === "ordinal", + "String \"cardinal\" or \"ordinal\"" + ); +}; + + + + +var pluralGeneratorFn = function( plural ) { + return function pluralGenerator( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return plural( value ); + }; +}; + + + + +/** + * .plural( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a + * value given locale. + */ +Globalize.plural = +Globalize.prototype.plural = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return this.pluralGenerator( options )( value ); +}; + +/** + * .pluralGenerator( [options] ) + * + * Return a plural function (of the form below). + * + * fn( value ) + * + * @value [Number] + * + * Return the corresponding form (zero | one | two | few | many | other) of a value given the + * default/instance locale. + */ +Globalize.pluralGenerator = +Globalize.prototype.pluralGenerator = function( options ) { + var args, cldr, isOrdinal, plural, returnFn, type; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + args = [ options ]; + type = options.type || "cardinal"; + + validateParameterTypePluralType( options.type, "options.type" ); + + validateDefaultLocale( cldr ); + + isOrdinal = type === "ordinal"; + + cldr.on( "get", validateCldr ); + cldr.supplemental([ "plurals-type-" + type, "{language}" ]); + cldr.off( "get", validateCldr ); + + MakePlural.rules = {}; + MakePlural.rules[ type ] = cldr.supplemental( "plurals-type-" + type ); + + plural = new MakePlural( cldr.attributes.language, { + "ordinals": isOrdinal, + "cardinals": !isOrdinal + }); + + returnFn = pluralGeneratorFn( plural ); + + runtimeBind( args, cldr, returnFn, [ plural ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/relative-time.js b/StockManMVC/bower_components/globalize/dist/globalize/relative-time.js new file mode 100644 index 0000000..e179a80 --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/relative-time.js @@ -0,0 +1,201 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber; + + +/** + * format( value, numberFormatter, pluralGenerator, properties ) + * + * @value [Number] The number to format + * + * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter + * + * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator + * + * @properties [Object] containing relative time plural message. + * + * Format relative time. + */ +var relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) { + + var relativeTime, + message = properties[ "relative-type-" + value ]; + + if ( message ) { + return message; + } + + relativeTime = value <= 0 ? properties[ "relativeTime-type-past" ] + : properties[ "relativeTime-type-future" ]; + + value = Math.abs( value ); + + message = relativeTime[ "relativeTimePattern-count-" + pluralGenerator( value ) ]; + return formatMessage( message, [ numberFormatter( value ) ] ); +}; + + + + +var relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) { + return function relativeTimeFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return relativeTimeFormat( value, numberFormatter, pluralGenerator, properties ); + }; + +}; + + + + +/** + * properties( unit, cldr, options ) + * + * @unit [String] eg. "day", "week", "month", etc. + * + * @cldr [Cldr instance]. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Return relative time properties. + */ +var relativeTimeProperties = function( unit, cldr, options ) { + + var form = options.form, + raw, properties, key, match; + + if ( form ) { + unit = unit + "-" + form; + } + + raw = cldr.main( [ "dates", "fields", unit ] ); + properties = { + "relativeTime-type-future": raw[ "relativeTime-type-future" ], + "relativeTime-type-past": raw[ "relativeTime-type-past" ] + }; + for ( key in raw ) { + if ( raw.hasOwnProperty( key ) ) { + match = /relative-type-(-?[0-9]+)/.exec( key ); + if ( match ) { + properties[ key ] = raw[ key ]; + } + } + } + + return properties; +}; + + + + +/** + * .formatRelativeTime( value, unit [, options] ) + * + * @value [Number] The number of unit to format. + * + * @unit [String] see .relativeTimeFormatter() for details. + * + * @options [Object] see .relativeTimeFormatter() for details. + * + * Formats a relative time according to the given unit, options, and the default/instance locale. + */ +Globalize.formatRelativeTime = +Globalize.prototype.formatRelativeTime = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.relativeTimeFormatter( unit, options )( value ); +}; + +/** + * .relativeTimeFormatter( unit [, options ]) + * + * @unit [String] String value indicating the unit to be formatted. eg. "day", "week", "month", etc. + * + * @options [Object] + * - form: [String] eg. "short" or "narrow". Or falsy for default long form. + * + * Returns a function that formats a relative time according to the given unit, options, and the + * default/instance locale. + */ +Globalize.relativeTimeFormatter = +Globalize.prototype.relativeTimeFormatter = function( unit, options ) { + var args, cldr, numberFormatter, pluralGenerator, properties, returnFn; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + cldr = this.cldr; + options = options || {}; + + args = [ unit, options ]; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + properties = relativeTimeProperties( unit, cldr, options ); + cldr.off( "get", validateCldr ); + + numberFormatter = this.numberFormatter( options ); + pluralGenerator = this.pluralGenerator(); + + returnFn = relativeTimeFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/globalize/unit.js b/StockManMVC/bower_components/globalize/dist/globalize/unit.js new file mode 100644 index 0000000..a847a7d --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/globalize/unit.js @@ -0,0 +1,300 @@ +/** + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ +/*! + * Globalize v1.1.1 2016-02-04T12:01Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "./plural" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var formatMessage = Globalize._formatMessage, + runtimeBind = Globalize._runtimeBind, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +/** + * format( value, numberFormatter, pluralGenerator, unitProperies ) + * + * @value [Number] + * + * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter. + * + * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator. + * + * @unitProperies [Object]: localized unit data from cldr. + * + * Format units such as seconds, minutes, days, weeks, etc. + * + * OBS: + * + * Unit Sequences are not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences + * + * Duration Unit (for composed time unit durations) is not implemented. + * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit + */ +var unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) { + var compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties, + formattedValue, divisor, divisorProperties, message, pluralValue; + + unitProperties = unitProperties.unitProperties; + formattedValue = numberFormatter( value ); + pluralValue = pluralGenerator( value ); + + // computed compound unit, eg. "megabyte-per-second". + if ( unitProperties instanceof Array ) { + dividendProperties = unitProperties[ 0 ]; + divisorProperties = unitProperties[ 1 ]; + + dividend = formatMessage( dividendProperties[ pluralValue ], [ value ] ); + divisor = formatMessage( divisorProperties.one, [ "" ] ).trim(); + + return formatMessage( compoundUnitPattern, [ dividend, divisor ] ); + } + + message = unitProperties[ pluralValue ]; + + return formatMessage( message, [ formattedValue ] ); +}; + + + + +var unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) { + return function unitFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return unitFormat( value, numberFormatter, pluralGenerator, unitProperties ); + }; + +}; + + + + +/** + * categories() + * + * Return all unit categories. + */ +var unitCategories = [ "acceleration", "angle", "area", "digital", "duration", "length", "mass", "power", +"pressure", "speed", "temperature", "volume" ]; + + + + +function stripPluralGarbage( data ) { + var aux, pluralCount; + + if ( data ) { + aux = {}; + for ( pluralCount in data ) { + aux[ pluralCount.replace( /unitPattern-count-/, "" ) ] = data[ pluralCount ]; + } + } + + return aux; +} + +/** + * get( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + * + * Return the plural map of a unit, eg: "second" + * { "one": "{0} second", + * "other": "{0} seconds" } + * } + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Uses the precomputed form of a compound-unit if available, eg: "mile-per-hour" + * { "displayName": "miles per hour", + * "unitPattern-count-one": "{0} mile per hour", + * "unitPattern-count-other": "{0} miles per hour" + * }, + * + * Also supports "/" instead of "-per-", eg. "foot/second", using the precomputed form if + * available. + * + * Or the Array of plural maps of a compound-unit, eg: "foot-per-second" + * [ { "one": "{0} foot", + * "other": "{0} feet" }, + * { "one": "{0} second", + * "other": "{0} seconds" } ] + * + * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist. + */ +var get = function( unit, form, cldr ) { + var ret; + + // Ensure that we get the 'precomputed' form, if present. + unit = unit.replace( /\//, "-per-" ); + + // Get unit or -unit (eg. "duration-second"). + [ "" ].concat( unitCategories ).some(function( category ) { + return ret = cldr.main([ + "units", + form, + category.length ? category + "-" + unit : unit + ]); + }); + + // Rename keys s/unitPattern-count-//g. + ret = stripPluralGarbage( ret ); + + // Compound Unit, eg. "foot-per-second" or "foot/second". + if ( !ret && ( /-per-/ ).test( unit ) ) { + + // "Some units already have 'precomputed' forms, such as kilometer-per-hour; + // where such units exist, they should be used in preference" UTS#35. + // Note that precomputed form has already been handled above (!ret). + + // Get both recursively. + unit = unit.split( "-per-" ); + ret = unit.map(function( unit ) { + return get( unit, form, cldr ); + }); + if ( !ret[ 0 ] || !ret[ 1 ] ) { + return; + } + } + + return ret; +}; + +var unitGet = get; + + + + +/** + * properties( unit, form, cldr ) + * + * @unit [String] The full type-unit name (eg. duration-second), or the short unit name + * (eg. second). + * + * @form [String] A string describing the form of the unit representation (eg. long, + * short, narrow). + * + * @cldr [Cldr instance]. + */ +var unitProperties = function( unit, form, cldr ) { + var compoundUnitPattern, unitProperties; + + compoundUnitPattern = cldr.main( [ "units", form, "per/compoundUnitPattern" ] ); + unitProperties = unitGet( unit, form, cldr ); + + return { + compoundUnitPattern: compoundUnitPattern, + unitProperties: unitProperties + }; +}; + + + + +/** + * Globalize.formatUnit( value, unit, options ) + * + * @value [Number] + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * Format units such as seconds, minutes, days, weeks, etc. + */ +Globalize.formatUnit = +Globalize.prototype.formatUnit = function( value, unit, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.unitFormatter( unit, options )( value ); +}; + +/** + * Globalize.unitFormatter( unit, options ) + * + * @unit [String]: The unit (e.g "second", "day", "year") + * + * @options [Object] + * - form: [String] "long", "short" (default), or "narrow". + * + * - numberFormatter: [Function] a number formatter function. Defaults to Globalize + * `.numberFormatter()` for the current locale using the default options. + */ +Globalize.unitFormatter = +Globalize.prototype.unitFormatter = function( unit, options ) { + var args, form, numberFormatter, pluralGenerator, returnFn, properties; + + validateParameterPresence( unit, "unit" ); + validateParameterTypeString( unit, "unit" ); + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + + args = [ unit, options ]; + form = options.form || "long"; + properties = unitProperties( unit, form, this.cldr ); + + numberFormatter = options.numberFormatter || this.numberFormatter(); + pluralGenerator = this.pluralGenerator(); + returnFn = unitFormatterFn( numberFormatter, pluralGenerator, properties ); + + runtimeBind( args, this.cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] ); + + return returnFn; +}; + +return Globalize; + + + + +})); diff --git a/StockManMVC/bower_components/globalize/dist/node-main.js b/StockManMVC/bower_components/globalize/dist/node-main.js new file mode 100644 index 0000000..1e8a16d --- /dev/null +++ b/StockManMVC/bower_components/globalize/dist/node-main.js @@ -0,0 +1,27 @@ +/*! + * Globalize v1.1.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-02-04T12:01Z + */ + +// Core +module.exports = require( "./globalize" ); + +// Extent core with the following modules +require( "./globalize/message" ); +require( "./globalize/number" ); +require( "./globalize/plural" ); + +// Load after globalize/number +require( "./globalize/currency" ); +require( "./globalize/date" ); + +// Load after globalize/number and globalize/plural +require( "./globalize/relative-time" ); +require( "./globalize/unit" ); diff --git a/StockManMVC/bower_components/globalize/doc/api/date/date-formatter.md b/StockManMVC/bower_components/globalize/doc/api/date/date-formatter.md index 76013cf..8c3475c 100644 --- a/StockManMVC/bower_components/globalize/doc/api/date/date-formatter.md +++ b/StockManMVC/bower_components/globalize/doc/api/date/date-formatter.md @@ -21,7 +21,8 @@ A JSON object including one of the following. > list `full`, `long`, `medium`, or `short` represented by date, time, or > datetime. Instead, they are an open-ended list of patterns containing > only date field information, and in a canonical order. For a complete list of -> skeleton patterns [check the unicode CLDR documentation](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). +> skeleton patterns [check the unicode CLDR documentation](http://www.unicode.o +> rg/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). > > For example: > diff --git a/StockManMVC/bower_components/globalize/examples/app-npm-webpack/package.json b/StockManMVC/bower_components/globalize/examples/app-npm-webpack/package.json index 051b438..dbf4619 100644 --- a/StockManMVC/bower_components/globalize/examples/app-npm-webpack/package.json +++ b/StockManMVC/bower_components/globalize/examples/app-npm-webpack/package.json @@ -2,7 +2,6 @@ "private": true, "devDependencies": { "cldr-data": ">=25", - "globalize-webpack-plugin": "0.3.x", "html-webpack-plugin": "^1.1.0", "nopt": "^3.0.3", "webpack": "^1.9.0", diff --git a/StockManMVC/node_modules/async/CHANGELOG.md b/StockManMVC/node_modules/async/CHANGELOG.md index 94cf2ca..b473e5f 100644 --- a/StockManMVC/node_modules/async/CHANGELOG.md +++ b/StockManMVC/node_modules/async/CHANGELOG.md @@ -1,3 +1,11 @@ +# v2.1.0 + +- `retry` and `retryable` now support an optional `errorFilter` function that determines if the `task` should retry on the error (#1256, #1261) +- Optimized array iteration in `race`, `cargo`, `queue`, and `priorityQueue` (#1253) +- Added alias documentation to doc site (#1251, #1254) +- Added [BootStrap scrollspy](http://getbootstrap.com/javascript/#scrollspy) to docs to highlight in the sidebar the current method being viewed (#1289, #1300) +- Various minor doc fixes (#1263, #1264, #1271, #1278, #1280, #1282, #1302) + # v2.0.1 - Significantly optimized all iteration based collection methods such as `each`, `map`, `filter`, etc (#1245, #1246, #1247). diff --git a/StockManMVC/node_modules/async/apply.js b/StockManMVC/node_modules/async/apply.js index 578f449..c0c8840 100644 --- a/StockManMVC/node_modules/async/apply.js +++ b/StockManMVC/node_modules/async/apply.js @@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -54,8 +54,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * two * three */ -exports.default = (0, _rest2.default)(function (fn, args) { - return (0, _rest2.default)(function (callArgs) { +exports.default = (0, _baseRest2.default)(function (fn, args) { + return (0, _baseRest2.default)(function (callArgs) { return fn.apply(null, args.concat(callArgs)); }); }); diff --git a/StockManMVC/node_modules/async/applyEach.js b/StockManMVC/node_modules/async/applyEach.js index c6e71b9..6865996 100644 --- a/StockManMVC/node_modules/async/applyEach.js +++ b/StockManMVC/node_modules/async/applyEach.js @@ -17,23 +17,25 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** * Applies the provided arguments to each function in the array, calling * `callback` after all functions have completed. If you only provide the first - * argument, then it will return a function which lets you pass in the - * arguments as if it were a single function call. + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. * * @name applyEach * @static * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of asynchronous functions to all - * call with the same arguments + * @param {Array|Iterable|Object} fns - A collection of asynchronous functions + * to all call with the same arguments * @param {...*} [args] - any number of separate arguments to pass to the * function. * @param {Function} [callback] - the final argument should be the callback, * called when all functions have completed processing. - * @returns {Function} - If only the first argument is provided, it will return - * a function which lets you pass in the arguments as if it were a single - * function call. + * @returns {Function} - If only the first argument, `fns`, is provided, it will + * return a function which lets you pass in the arguments as if it were a single + * function call. The signature is `(..args, callback)`. If invoked with any + * arguments, `callback` is required. * @example * * async.applyEach([enableSearch, updateSchema], 'bucket', callback); diff --git a/StockManMVC/node_modules/async/auto.js b/StockManMVC/node_modules/async/auto.js index 7f324b4..e1572dd 100644 --- a/StockManMVC/node_modules/async/auto.js +++ b/StockManMVC/node_modules/async/auto.js @@ -102,7 +102,7 @@ exports.default = function (tasks, concurrency, callback) { function runTask(key, task) { if (hasError) return; - var taskCallback = (0, _onlyOnce2.default)((0, _rest2.default)(function (err, args) { + var taskCallback = (0, _onlyOnce2.default)((0, _baseRest2.default)(function (err, args) { runningTasks--; if (args.length <= 1) { args = args[0]; @@ -188,9 +188,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _once = require('./internal/once'); diff --git a/StockManMVC/node_modules/async/compose.js b/StockManMVC/node_modules/async/compose.js index 499316f..65b26bb 100644 --- a/StockManMVC/node_modules/async/compose.js +++ b/StockManMVC/node_modules/async/compose.js @@ -8,9 +8,9 @@ var _seq = require('./seq'); var _seq2 = _interopRequireDefault(_seq); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -49,7 +49,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * // result now equals 15 * }); */ -exports.default = (0, _rest2.default)(function (args) { +exports.default = (0, _baseRest2.default)(function (args) { return _seq2.default.apply(null, args.reverse()); }); module.exports = exports['default']; \ No newline at end of file diff --git a/StockManMVC/node_modules/async/constant.js b/StockManMVC/node_modules/async/constant.js index 1387878..d130ca6 100644 --- a/StockManMVC/node_modules/async/constant.js +++ b/StockManMVC/node_modules/async/constant.js @@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _initialParams = require('./internal/initialParams'); @@ -56,7 +56,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * //... * }, callback); */ -exports.default = (0, _rest2.default)(function (values) { +exports.default = (0, _baseRest2.default)(function (values) { var args = [null].concat(values); return (0, _initialParams2.default)(function (ignoredArgs, callback) { return callback.apply(this, args); diff --git a/StockManMVC/node_modules/async/dist/async.js b/StockManMVC/node_modules/async/dist/async.js index 609d9cd..27c49bd 100644 --- a/StockManMVC/node_modules/async/dist/async.js +++ b/StockManMVC/node_modules/async/dist/async.js @@ -4,6 +4,26 @@ (factory((global.async = global.async || {}))); }(this, function (exports) { 'use strict'; + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + /** * A faster alternative to `Function#apply`, this function invokes `func` * with the `this` binding of `thisArg` and the arguments of `args`. @@ -15,8 +35,7 @@ * @returns {*} Returns the result of `func`. */ function apply(func, thisArg, args) { - var length = args.length; - switch (length) { + switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); @@ -25,9 +44,67 @@ return func.apply(thisArg, args); } + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeMax = Math.max; + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + /** * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static @@ -52,20 +129,21 @@ */ function isObject(value) { var type = typeof value; - return !!value && (type == 'object' || type == 'function'); + return value != null && (type == 'object' || type == 'function'); } var funcTag = '[object Function]'; var genTag = '[object GeneratorFunction]'; + var proxyTag = '[object Proxy]'; /** Used for built-in method references. */ - var objectProto = Object.prototype; + var objectProto$1 = Object.prototype; /** * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ - var objectToString = objectProto.toString; + var objectToString = objectProto$1.toString; /** * Checks if `value` is classified as a `Function` object. @@ -75,8 +153,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. * @example * * _.isFunction(_); @@ -87,277 +164,221 @@ */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8 which returns 'object' for typed array and weak map constructors, - // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. + // in Safari 9 which returns 'object' for typed array and other constructors. var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + return tag == funcTag || tag == genTag || tag == proxyTag; } + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Used to detect overreaching core-js shims. */ + var coreJsData = root['__core-js_shared__']; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". + * Checks if `func` has its source masked. * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); } - /** `Object#toString` result references. */ - var symbolTag = '[object Symbol]'; - /** Used for built-in method references. */ - var objectProto$1 = Object.prototype; + var funcProto$1 = Function.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString$1 = funcProto$1.toString; /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$1 = objectProto$1.toString; - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. + * Converts `func` to its source code. * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString$1.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used for built-in method references. */ + var funcProto = Function.prototype; + var objectProto = Object.prototype; + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, + * @returns {boolean} Returns `true` if `value` is a native function, * else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString$1.call(value) == symbolTag); - } - - /** Used as references for various `Number` constants. */ - var NAN = 0 / 0; - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Built-in method references without a dependency on `root`. */ - var freeParseInt = parseInt; - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = isFunction(value.valueOf) ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - var INFINITY = 1 / 0; - var MAX_INTEGER = 1.7976931348623157e+308; - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } /** - * Converts `value` to an integer. + * Gets the value at `key` of `object`. * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; + function getValue(object, key) { + return object == null ? undefined : object[key]; } - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 500; + var HOT_SPAN = 16; /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeMax = Math.max; + var nativeNow = Date.now; /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); + function shortOut(func) { + var count = 0, + lastCalled = 0; - while (++index < length) { - array[index] = args[start + index]; + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; } - switch (start) { - case 0: return func.call(this, array); - case 1: return func.call(this, args[0], array); - case 2: return func.call(this, args[0], args[1], array); - } - var otherArgs = Array(start + 1); - index = -1; - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = array; - return apply(func, this, otherArgs); + return func.apply(undefined, arguments); }; } + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + function initialParams (fn) { - return rest(function (args /*..., callback*/) { + return baseRest(function (args /*..., callback*/) { var callback = args.pop(); fn.call(this, args, callback); }); } function applyEach$1(eachfn) { - return rest(function (fns, args) { + return baseRest(function (fns, args) { var go = initialParams(function (args, callback) { var that = this; return eachfn(fns, function (fn, cb) { @@ -372,48 +393,21 @@ }); } - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a - * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects - * Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ - var getLength = baseProperty('length'); - /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * * _.isLength(3); @@ -459,11 +453,11 @@ * // => false */ function isArrayLike(value) { - return value != null && isLength(getLength(value)) && !isFunction(value); + return value != null && isLength(value.length) && !isFunction(value); } /** - * A method that returns `undefined`. + * This method returns `undefined`. * * @static * @memberOf _ @@ -493,58 +487,6 @@ return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol](); } - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeGetPrototype = Object.getPrototypeOf; - - /** - * Gets the `[[Prototype]]` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {null|Object} Returns the `[[Prototype]]`. - */ - function getPrototype(value) { - return nativeGetPrototype(Object(value)); - } - - /** Used for built-in method references. */ - var objectProto$2 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto$2.hasOwnProperty; - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`, - // that are composed entirely of index properties, return `false` for - // `hasOwnProperty` checks of them. - return object != null && - (hasOwnProperty.call(object, key) || - (typeof object == 'object' && key in object && getPrototype(object) === null)); - } - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeKeys = Object.keys; - - /** - * The base implementation of `_.keys` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - return nativeKeys(Object(object)); - } - /** * The base implementation of `_.times` without support for iteratee shorthands * or max array length checks. @@ -565,49 +507,62 @@ } /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * - * _.isArrayLikeObject([1, 2, 3]); + * _.isObjectLike({}); * // => true * - * _.isArrayLikeObject(document.body.children); + * _.isObjectLike([1, 2, 3]); * // => true * - * _.isArrayLikeObject('abc'); + * _.isObjectLike(_.noop); * // => false * - * _.isArrayLikeObject(_.noop); + * _.isObjectLike(null); * // => false */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); + function isObjectLike(value) { + return value != null && typeof value == 'object'; } /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; /** Used for built-in method references. */ - var objectProto$3 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$1 = objectProto$3.hasOwnProperty; + var objectProto$4 = Object.prototype; /** * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ - var objectToString$2 = objectProto$3.toString; + var objectToString$1 = objectProto$4.toString; + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && objectToString$1.call(value) == argsTag; + } + + /** Used for built-in method references. */ + var objectProto$3 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$2 = objectProto$3.hasOwnProperty; /** Built-in value references. */ var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; @@ -620,7 +575,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, + * @returns {boolean} Returns `true` if `value` is an `arguments` object, * else `false`. * @example * @@ -630,11 +585,10 @@ * _.isArguments([1, 2, 3]); * // => false */ - function isArguments(value) { - // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty$1.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString$2.call(value) == argsTag); - } + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; /** * Checks if `value` is classified as an `Array` object. @@ -642,11 +596,9 @@ * @static * @memberOf _ * @since 0.1.0 - * @type {Function} * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, - * else `false`. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); @@ -663,58 +615,56 @@ */ var isArray = Array.isArray; - /** `Object#toString` result references. */ - var stringTag = '[object String]'; - - /** Used for built-in method references. */ - var objectProto$4 = Object.prototype; - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$3 = objectProto$4.toString; - - /** - * Checks if `value` is classified as a `String` primitive or object. + * This method returns `false`. * * @static - * @since 0.1.0 * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, - * else `false`. + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. * @example * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false + * _.times(2, _.stubFalse); + * // => [false, false] */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString$3.call(value) == stringTag); + function stubFalse() { + return false; } + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + /** - * Creates an array of index keys for `object` values of arrays, - * `arguments` objects, and strings, otherwise `null` is returned. + * Checks if `value` is a buffer. * - * @private - * @param {Object} object The object to query. - * @returns {Array|null} Returns index keys, else `null`. + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false */ - function indexKeys(object) { - var length = object ? object.length : undefined; - if (isLength(length) && - (isArray(object) || isString(object) || isArguments(object))) { - return baseTimes(length, String); - } - return null; - } + var isBuffer = nativeIsBuffer || stubFalse; /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER$1 = 9007199254740991; @@ -737,9 +687,166 @@ (value > -1 && value % 1 == 0 && value < length); } + var argsTag$1 = '[object Arguments]'; + var arrayTag = '[object Array]'; + var boolTag = '[object Boolean]'; + var dateTag = '[object Date]'; + var errorTag = '[object Error]'; + var funcTag$1 = '[object Function]'; + var mapTag = '[object Map]'; + var numberTag = '[object Number]'; + var objectTag = '[object Object]'; + var regexpTag = '[object RegExp]'; + var setTag = '[object Set]'; + var stringTag = '[object String]'; + var weakMapTag = '[object WeakMap]'; + var arrayBufferTag = '[object ArrayBuffer]'; + var dataViewTag = '[object DataView]'; + var float32Tag = '[object Float32Array]'; + var float64Tag = '[object Float64Array]'; + var int8Tag = '[object Int8Array]'; + var int16Tag = '[object Int16Array]'; + var int32Tag = '[object Int32Array]'; + var uint8Tag = '[object Uint8Array]'; + var uint8ClampedTag = '[object Uint8ClampedArray]'; + var uint16Tag = '[object Uint16Array]'; + var uint32Tag = '[object Uint32Array]'; + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + /** Used for built-in method references. */ var objectProto$5 = Object.prototype; + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString$2 = objectProto$5.toString; + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString$2.call(value)]; + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** Detect free variable `exports`. */ + var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports$1 && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** Used for built-in method references. */ + var objectProto$2 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$1 = objectProto$2.hasOwnProperty; + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty$1.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$7 = Object.prototype; + /** * Checks if `value` is likely a prototype object. * @@ -749,16 +856,59 @@ */ function isPrototype(value) { var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5; + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$7; return value === proto; } + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeKeys = overArg(Object.keys, Object); + + /** Used for built-in method references. */ + var objectProto$6 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$3 = objectProto$6.hasOwnProperty; + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$3.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + /** * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * for more details. * * @static @@ -783,23 +933,7 @@ * // => ['0', '1'] */ function keys(object) { - var isProto = isPrototype(object); - if (!(isProto || isArrayLike(object))) { - return baseKeys(object); - } - var indexes = indexKeys(object), - skipIndexes = !!indexes, - result = indexes || [], - length = result.length; - - for (var key in object) { - if (baseHas(object, key) && - !(skipIndexes && (key == 'length' || isIndex(key, length))) && - !(isProto && key == 'constructor')) { - result.push(key); - } - } - return result; + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } function createArrayIterator(coll) { @@ -921,68 +1055,9 @@ }; } - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT$1 = 'Expected a function'; - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => allows adding up to 4 contacts to the list - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` invokes `createApplication` once - */ - function once$1(func) { - return before(2, func); - } - // eachOf implementation optimized for array-likes function eachOfArrayLike(coll, iteratee, callback) { - callback = once$1(callback || noop); + callback = once(callback || noop); var index = 0, completed = 0, length = coll.length; @@ -1116,23 +1191,25 @@ /** * Applies the provided arguments to each function in the array, calling * `callback` after all functions have completed. If you only provide the first - * argument, then it will return a function which lets you pass in the - * arguments as if it were a single function call. + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. * * @name applyEach * @static * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of asynchronous functions to all - * call with the same arguments + * @param {Array|Iterable|Object} fns - A collection of asynchronous functions + * to all call with the same arguments * @param {...*} [args] - any number of separate arguments to pass to the * function. * @param {Function} [callback] - the final argument should be the callback, * called when all functions have completed processing. - * @returns {Function} - If only the first argument is provided, it will return - * a function which lets you pass in the arguments as if it were a single - * function call. + * @returns {Function} - If only the first argument, `fns`, is provided, it will + * return a function which lets you pass in the arguments as if it were a single + * function call. The signature is `(..args, callback)`. If invoked with any + * arguments, `callback` is required. * @example * * async.applyEach([enableSearch, updateSchema], 'bucket', callback); @@ -1258,8 +1335,8 @@ * two * three */ - var apply$1 = rest(function (fn, args) { - return rest(function (callArgs) { + var apply$1 = baseRest(function (fn, args) { + return baseRest(function (callArgs) { return fn.apply(null, args.concat(callArgs)); }); }); @@ -1411,21 +1488,55 @@ } /** - * Gets the index at which the first occurrence of `NaN` is found in `array`. + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. * * @private - * @param {Array} array The array to search. + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. * @param {number} fromIndex The index to search from. * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched `NaN`, else `-1`. + * @returns {number} Returns the index of the matched value, else `-1`. */ - function indexOfNaN(array, fromIndex, fromRight) { + function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while ((fromRight ? index-- : ++index < length)) { - var other = array[index]; - if (other !== other) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { return index; } } @@ -1436,24 +1547,15 @@ * The base implementation of `_.indexOf` without `fromIndex` bounds checks. * * @private - * @param {Array} array The array to search. + * @param {Array} array The array to inspect. * @param {*} value The value to search for. * @param {number} fromIndex The index to search from. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return indexOfNaN(array, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); } /** @@ -1633,7 +1735,7 @@ function runTask(key, task) { if (hasError) return; - var taskCallback = onlyOnce(rest(function (err, args) { + var taskCallback = onlyOnce(baseRest(function (err, args) { runningTasks--; if (args.length <= 1) { args = args[0]; @@ -1734,34 +1836,46 @@ return array; } - /** - * Checks if `value` is a global object. - * - * @private - * @param {*} value The value to check. - * @returns {null|Object} Returns `value` if it's a global object, else `null`. - */ - function checkGlobal(value) { - return (value && value.Object === Object) ? value : null; - } - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = checkGlobal(typeof global == 'object' && global); - - /** Detect free variable `self`. */ - var freeSelf = checkGlobal(typeof self == 'object' && self); - - /** Detect `this` as the global object. */ - var thisGlobal = checkGlobal(typeof this == 'object' && this); - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || thisGlobal || Function('return this')(); - /** Built-in value references. */ var Symbol$1 = root.Symbol; + /** `Object#toString` result references. */ + var symbolTag = '[object Symbol]'; + + /** Used for built-in method references. */ + var objectProto$8 = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString$3 = objectProto$8.toString; + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString$3.call(value) == symbolTag); + } + /** Used as references for various `Number` constants. */ - var INFINITY$1 = 1 / 0; + var INFINITY = 1 / 0; /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined; @@ -1779,11 +1893,15 @@ if (typeof value == 'string') { return value; } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result; + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** @@ -1864,26 +1982,70 @@ return index; } + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff'; var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23'; var rsComboSymbolsRange = '\\u20d0-\\u20f0'; var rsVarRange = '\\ufe0e\\ufe0f'; - var rsAstral = '[' + rsAstralRange + ']'; - var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']'; + /** Used to compose unicode capture groups. */ + var rsZWJ = '\\u200d'; + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** Used to compose unicode character classes. */ + var rsAstralRange$1 = '\\ud800-\\udfff'; + var rsComboMarksRange$1 = '\\u0300-\\u036f\\ufe20-\\ufe23'; + var rsComboSymbolsRange$1 = '\\u20d0-\\u20f0'; + var rsVarRange$1 = '\\ufe0e\\ufe0f'; + var rsAstral = '[' + rsAstralRange$1 + ']'; + var rsCombo = '[' + rsComboMarksRange$1 + rsComboSymbolsRange$1 + ']'; var rsFitz = '\\ud83c[\\udffb-\\udfff]'; var rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')'; - var rsNonAstral = '[^' + rsAstralRange + ']'; + var rsNonAstral = '[^' + rsAstralRange$1 + ']'; var rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}'; var rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]'; - var rsZWJ = '\\u200d'; + var rsZWJ$1 = '\\u200d'; var reOptMod = rsModifier + '?'; - var rsOptVar = '[' + rsVarRange + ']?'; - var rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*'; + var rsOptVar = '[' + rsVarRange$1 + ']?'; + var rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*'; var rsSeq = rsOptVar + reOptMod + rsOptJoin; var rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reComplexSymbol = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } /** * Converts `string` to an array. @@ -1893,7 +2055,9 @@ * @returns {Array} Returns the converted array. */ function stringToArray(string) { - return string.match(reComplexSymbol); + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); } /** @@ -1904,8 +2068,8 @@ * @memberOf _ * @since 4.0.0 * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. * @example * * _.toString(null); @@ -1922,7 +2086,7 @@ } /** Used to match leading and trailing whitespace. */ - var reTrim$1 = /^\s+|\s+$/g; + var reTrim = /^\s+|\s+$/g; /** * Removes leading and trailing whitespace or specified characters from `string`. @@ -1949,7 +2113,7 @@ function trim(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined)) { - return string.replace(reTrim$1, ''); + return string.replace(reTrim, ''); } if (!string || !(chars = baseToString(chars))) { return string; @@ -2104,7 +2268,7 @@ } function wrap(defer) { - return rest(function (fn, args) { + return baseRest(function (fn, args) { defer(function () { fn.apply(null, args); }); @@ -2201,9 +2365,10 @@ q.drain(); }); } - arrayEach(data, function (task) { + + for (var i = 0, l = data.length; i < l; i++) { var item = { - data: task, + data: data[i], callback: callback || noop }; @@ -2212,28 +2377,27 @@ } else { q._tasks.push(item); } - }); + } setImmediate$1(q.process); } function _next(tasks) { - return rest(function (args) { + return baseRest(function (args) { workers -= 1; - arrayEach(tasks, function (task) { - arrayEach(workersList, function (worker, index) { - if (worker === task) { - workersList.splice(index, 1); - return false; - } - }); + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + var index = baseIndexOf(workersList, task, 0); + if (index >= 0) { + workersList.splice(index); + } task.callback.apply(task, args); if (args[0] != null) { q.error(args[0], task.data); } - }); + } if (workers <= q.concurrency - q.buffer) { q.unsaturated(); @@ -2520,8 +2684,8 @@ * }); * }); */ - var seq = rest(function seq(functions) { - return rest(function (args) { + var seq = baseRest(function seq(functions) { + return baseRest(function (args) { var that = this; var cb = args[args.length - 1]; @@ -2532,7 +2696,7 @@ } reduce(functions, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([rest(function (err, nextargs) { + fn.apply(that, newargs.concat([baseRest(function (err, nextargs) { cb(err, nextargs); })])); }, function (err, results) { @@ -2576,7 +2740,7 @@ * // result now equals 15 * }); */ - var compose = rest(function (args) { + var compose = baseRest(function (args) { return seq.apply(null, args.reverse()); }); @@ -2690,33 +2854,13 @@ * //... * }, callback); */ - var constant = rest(function (values) { + var constant$1 = baseRest(function (values) { var args = [null].concat(values); return initialParams(function (ignoredArgs, callback) { return callback.apply(this, args); }); }); - /** - * This method returns the first argument given to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'user': 'fred' }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - function _createTester(eachfn, check, getResult) { return function (arr, limit, iteratee, cb) { function done(err) { @@ -2843,8 +2987,8 @@ var detectSeries = _createTester(eachOfSeries, identity, _findGetResult); function consoleFunc(name) { - return rest(function (fn, args) { - fn.apply(null, args.concat([rest(function (err, args) { + return baseRest(function (fn, args) { + fn.apply(null, args.concat([baseRest(function (err, args) { if (typeof console === 'object') { if (err) { if (console.error) { @@ -2914,7 +3058,7 @@ function doDuring(fn, test, callback) { callback = onlyOnce(callback || noop); - var next = rest(function (err, args) { + var next = baseRest(function (err, args) { if (err) return callback(err); args.push(check); test.apply(this, args); @@ -2945,8 +3089,8 @@ * passes. The function is passed a `callback(err)`, which must be called once * it has completed with an optional `err` argument. Invoked with (callback). * @param {Function} test - synchronous truth test to perform after each - * execution of `iteratee`. Invoked with Invoked with the non-error callback - * results of `iteratee`. + * execution of `iteratee`. Invoked with the non-error callback results of + * `iteratee`. * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `iteratee` has stopped. * `callback` will be passed an error and any arguments passed to the final @@ -2954,7 +3098,7 @@ */ function doWhilst(iteratee, test, callback) { callback = onlyOnce(callback || noop); - var next = rest(function (err, args) { + var next = baseRest(function (err, args) { if (err) return callback(err); if (test.apply(this, args)) return iteratee(next); callback.apply(null, [null].concat(args)); @@ -3121,7 +3265,7 @@ * @see [async.each]{@link module:Collections.each} * @alias forEachLimit * @category Collection - * @param {Array|Iterable|Object} coll - A colleciton to iterate over. + * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. * @param {Function} iteratee - A function to apply to each item in `coll`. The * iteratee is passed a `callback(err)` which must be called once it has @@ -3287,6 +3431,19 @@ */ var everySeries = doLimit(everyLimit, 1); + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + function _filter(eachfn, arr, iteratee, callback) { callback = once(callback || noop); var results = []; @@ -3605,7 +3762,7 @@ queues[key].push(callback); } else { queues[key] = [callback]; - fn.apply(null, args.concat([rest(function (args) { + fn.apply(null, args.concat([baseRest(function (args) { memo[key] = args; var q = queues[key]; delete queues[key]; @@ -3668,7 +3825,7 @@ var results = isArrayLike(tasks) ? [] : {}; eachfn(tasks, function (task, key, callback) { - task(rest(function (err, args) { + task(baseRest(function (err, args) { if (args.length <= 1) { args = args[0]; } @@ -3931,9 +4088,9 @@ nextNode = nextNode.next; } - arrayEach(data, function (task) { + for (var i = 0, l = data.length; i < l; i++) { var item = { - data: task, + data: data[i], priority: priority, callback: callback }; @@ -3943,7 +4100,7 @@ } else { q._tasks.push(item); } - }); + } setImmediate$1(q.process); }; @@ -3955,7 +4112,7 @@ /** * Runs the `tasks` array of functions in parallel, without waiting until the - * previous function has completed. Once any the `tasks` completed or pass an + * previous function has completed. Once any of the `tasks` complete or pass an * error to its callback, the main `callback` is immediately called. It's * equivalent to `Promise.race()`. * @@ -3994,9 +4151,9 @@ callback = once(callback || noop); if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); if (!tasks.length) return callback(); - arrayEach(tasks, function (task) { - task(callback); - }); + for (var i = 0, l = tasks.length; i < l; i++) { + tasks[i](callback); + } } var slice = Array.prototype.slice; @@ -4069,7 +4226,7 @@ */ function reflect(fn) { return initialParams(function reflectOn(args, reflectCallback) { - args.push(rest(function callback(err, cbArgs) { + args.push(baseRest(function callback(err, cbArgs) { if (err) { reflectCallback(null, { error: err @@ -4248,31 +4405,6 @@ */ var rejectSeries = doLimit(rejectLimit, 1); - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ - function constant$1(value) { - return function() { - return value; - }; - } - /** * Attempts to get a successful response from `task` no more than `times` times * before returning an error. If the task is successful, the `callback` will be @@ -4291,6 +4423,11 @@ * * `interval` - The time to wait between retries, in milliseconds. The * default is `0`. The interval may also be specified as a function of the * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). * * If `opts` is a number, the number specifies the number of times to retry, * with the default interval of `0`. * @param {Function} task - A function which receives two arguments: (1) a @@ -4334,6 +4471,16 @@ * // do something with the result * }); * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * * // It can also be embedded within other control flow functions to retry * // individual methods that are not as reliable, like this: * async.auto({ @@ -4342,6 +4489,7 @@ * }, function(err, results) { * // do something with the results * }); + * */ function retry(opts, task, callback) { var DEFAULT_TIMES = 5; @@ -4349,14 +4497,16 @@ var options = { times: DEFAULT_TIMES, - intervalFunc: constant$1(DEFAULT_INTERVAL) + intervalFunc: constant(DEFAULT_INTERVAL) }; function parseTimes(acc, t) { if (typeof t === 'object') { acc.times = +t.times || DEFAULT_TIMES; - acc.intervalFunc = typeof t.interval === 'function' ? t.interval : constant$1(+t.interval || DEFAULT_INTERVAL); + acc.intervalFunc = typeof t.interval === 'function' ? t.interval : constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; } else if (typeof t === 'number' || typeof t === 'string') { acc.times = +t || DEFAULT_TIMES; } else { @@ -4379,7 +4529,7 @@ var attempt = 1; function retryAttempt() { task(function (err) { - if (err && attempt++ < options.times) { + if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { setTimeout(retryAttempt, options.intervalFunc(attempt)); } else { callback.apply(null, arguments); @@ -4653,12 +4803,31 @@ * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) * to timeout Error for more information.. * @returns {Function} Returns a wrapped function that can be used with any of - * the control flow functions. + * the control flow functions. Invoke this function with the same + * parameters as you would `asyncFunc`. * @example * - * async.timeout(function(callback) { - * doAsyncTask(callback); - * }, 1000); + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); */ function timeout(asyncFn, milliseconds, info) { var originalCallback, timer; @@ -4695,7 +4864,7 @@ var nativeMax$1 = Math.max; /** * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments to numbers. + * coerce arguments. * * @private * @param {number} start The start of the range. @@ -4866,7 +5035,7 @@ } /** - * Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when * stopped, or an error occurs. * * @name whilst @@ -4875,13 +5044,13 @@ * @method * @category Control Flow * @param {Function} test - synchronous truth test to perform before each - * execution of `fn`. Invoked with (). + * execution of `iteratee`. Invoked with (). * @param {Function} iteratee - A function which is called each time `test` passes. * The function is passed a `callback(err)`, which must be called once it has * completed with an optional `err` argument. Invoked with (callback). * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error and any arguments passed to the final `fn`'s + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s * callback. Invoked with (err, [results]); * @returns undefined * @example @@ -4903,7 +5072,7 @@ function whilst(test, iteratee, callback) { callback = onlyOnce(callback || noop); if (!test()) return callback(null); - var next = rest(function (err, args) { + var next = baseRest(function (err, args) { if (err) return callback(err); if (test()) return iteratee(next); callback.apply(null, [null].concat(args)); @@ -5008,7 +5177,7 @@ return callback.apply(null, [null].concat(args)); } - var taskCallback = onlyOnce(rest(function (err, args) { + var taskCallback = onlyOnce(baseRest(function (err, args) { if (err) { return callback.apply(null, [err].concat(args)); } @@ -5035,7 +5204,7 @@ compose: compose, concat: concat, concatSeries: concatSeries, - constant: constant, + constant: constant$1, detect: detect, detectLimit: detectLimit, detectSeries: detectSeries, @@ -5127,7 +5296,7 @@ exports.compose = compose; exports.concat = concat; exports.concatSeries = concatSeries; - exports.constant = constant; + exports.constant = constant$1; exports.detect = detect; exports.detectLimit = detectLimit; exports.detectSeries = detectSeries; diff --git a/StockManMVC/node_modules/async/dist/async.min.js b/StockManMVC/node_modules/async/dist/async.min.js index 4d5d88a..58c40ef 100644 --- a/StockManMVC/node_modules/async/dist/async.min.js +++ b/StockManMVC/node_modules/async/dist/async.min.js @@ -1,2 +1,2 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.async=n.async||{})}(this,function(n){"use strict";function t(n,t,e){var r=e.length;switch(r){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}function e(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function r(n){var t=e(n)?st.call(n):"";return t==ft||t==at}function u(n){return!!n&&"object"==typeof n}function i(n){return"symbol"==typeof n||u(n)&&vt.call(n)==pt}function o(n){if("number"==typeof n)return n;if(i(n))return yt;if(e(n)){var t=r(n.valueOf)?n.valueOf():n;n=e(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace(mt,"");var u=gt.test(n);return u||bt.test(n)?St(n.slice(2),u?2:8):dt.test(n)?yt:+n}function c(n){if(!n)return 0===n?n:0;if(n=o(n),n===jt||n===-jt){var t=0>n?-1:1;return t*kt}return n===n?n:0}function f(n){var t=c(n),e=t%1;return t===t?e?t-e:t:0}function a(n,e){if("function"!=typeof n)throw new TypeError(wt);return e=Et(void 0===e?n.length-1:f(e),0),function(){for(var r=arguments,u=-1,i=Et(r.length-e,0),o=Array(i);++u-1&&n%1==0&&Lt>=n}function v(n){return null!=n&&h(xt(n))&&!r(n)}function y(){}function m(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function d(n){return Ot&&n[Ot]&&n[Ot]()}function g(n){return At(Object(n))}function b(n,t){return null!=n&&(Tt.call(n,t)||"object"==typeof n&&t in n&&null===g(n))}function S(n){return _t(Object(n))}function j(n,t){for(var e=-1,r=Array(n);++e-1&&n%1==0&&t>n}function O(n){var t=n&&n.constructor,e="function"==typeof t&&t.prototype||Ut;return n===e}function A(n){var t=O(n);if(!t&&!v(n))return S(n);var e=x(n),r=!!e,u=e||[],i=u.length;for(var o in n)!b(n,o)||r&&("length"==o||L(o,i))||t&&"constructor"==o||u.push(o);return u}function I(n){var t=-1,e=n.length;return function(){return++te?{value:n[u],key:u}:null}}function F(n){if(v(n))return I(n);var t=d(n);return t?T(t):_(n)}function $(n){return function(){if(null===n)throw new Error("Callback was already called.");var t=n;n=null,t.apply(this,arguments)}}function z(n){return function(t,e,r){function u(n){if(f-=1,n)c=!0,r(n);else{if(c&&0>=f)return r(null);i()}}function i(){for(;n>f&&!c;){var t=o();if(null===t)return c=!0,void(0>=f&&r(null));f+=1,e(t.value,t.key,$(u))}}if(r=m(r||y),0>=n||!t)return r(null);var o=F(t),c=!1,f=0;i()}}function B(n,t,e,r){z(t)(n,e,r)}function M(n,t){return function(e,r,u){return n(e,t,r,u)}}function V(n,t){var e;if("function"!=typeof t)throw new TypeError(Nt);return n=f(n),function(){return--n>0&&(e=t.apply(this,arguments)),1>=n&&(t=void 0),e}}function q(n){return V(2,n)}function C(n,t,e){function r(n){n?e(n):++i===o&&e(null)}e=q(e||y);var u=0,i=0,o=n.length;for(0===o&&e(null);o>u;u++)t(n[u],u,$(r))}function D(n,t,e){var r=v(n)?C:Qt;r(n,t,e)}function P(n){return function(t,e,r){return n(D,t,e,r)}}function R(n,t,e,r){r=m(r||y),t=t||[];var u=[],i=0;n(t,function(n,t,r){var o=i++;e(n,function(n,t){u[o]=t,r(n)})},function(n){r(n,u)})}function U(n){return function(t,e,r,u){return n(z(e),t,r,u)}}function N(n){return l(function(t,r){var u;try{u=n.apply(this,t)}catch(i){return r(i)}e(u)&&"function"==typeof u.then?u.then(function(n){r(null,n)},function(n){r(n.message?n:new Error(n))}):r(null,u)})}function Q(n,t){for(var e=-1,r=n?n.length:0;++ev;){var n=b.shift();n()}}function i(n,t){var e=g[n];e||(e=g[n]=[]),e.push(t)}function o(n){var t=g[n]||[];Q(t,function(n){n()}),u()}function c(n,t){if(!d){var r=$(a(function(t,r){if(v--,r.length<=1&&(r=r[0]),t){var u={};G(h,function(n,t){u[t]=n}),u[n]=r,d=!0,g=[],e(t,u)}else h[n]=r,o(n)}));v++;var u=t[t.length-1];t.length>1?u(h,r):u(r)}}function f(){for(var n,t=0;S.length;)n=S.pop(),t++,Q(l(n),function(n){0===--j[n]&&S.push(n)});if(t!==p)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function l(t){var e=[];return G(n,function(n,r){Vt(n)&&J(n,t,0)>=0&&e.push(r)}),e}"function"==typeof t&&(e=t,t=null),e=m(e||y);var s=A(n),p=s.length;if(!p)return e(null);t||(t=p);var h={},v=0,d=!1,g={},b=[],S=[],j={};G(n,function(t,e){if(!Vt(t))return r(e,[t]),void S.push(e);var u=t.slice(0,t.length-1),o=u.length;return 0===o?(r(e,t),void S.push(e)):(j[e]=o,void Q(u,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency in "+u.join(", "));i(c,function(){o--,0===o&&r(e,t)})}))}),f(),u()}function X(n,t){for(var e=-1,r=n?n.length:0,u=Array(r);++et&&(t=-t>u?0:u+t),e=e>u?u:e,0>e&&(e+=u),u=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(u);++r=r?n:tn(n,t,e)}function rn(n,t){for(var e=n.length;e--&&J(t,n[e],0)>-1;);return e}function un(n,t){for(var e=-1,r=n.length;++e-1;);return e}function on(n){return n.match(Ee)}function cn(n){return null==n?"":nn(n)}function fn(n,t,e){if(n=cn(n),n&&(e||void 0===t))return n.replace(xe,"");if(!n||!(t=nn(t)))return n;var r=on(n),u=on(t),i=un(r,u),o=rn(r,u)+1;return en(r,i,o).join("")}function an(n){return n=n.toString().replace(Ie,""),n=n.match(Le)[2].replace(" ",""),n=n?n.split(Oe):[],n=n.map(function(n){return fn(n.replace(Ae,""))})}function ln(n,t){var e={};G(n,function(n,t){function r(t,e){var r=X(u,function(n){return t[n]});r.push(e),n.apply(null,r)}var u;if(Vt(n))u=Y(n),n=u.pop(),e[t]=u.concat(u.length>0?r:n);else if(1===n.length)e[t]=n;else{if(u=an(n),0===n.length&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");u.pop(),e[t]=u.concat(r)}}),K(e,t)}function sn(n){setTimeout(n,0)}function pn(n){return a(function(t,e){n(function(){t.apply(null,e)})})}function hn(){this.head=this.tail=null,this.length=0}function vn(n,t){n.length=1,n.head=n.tail=t}function yn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");return c.started=!0,Vt(n)||(n=[n]),0===n.length&&c.idle()?Fe(function(){c.drain()}):(Q(n,function(n){var r={data:n,callback:e||y};t?c._tasks.unshift(r):c._tasks.push(r)}),void Fe(c.process))}function u(n){return a(function(t){i-=1,Q(n,function(n){Q(o,function(t,e){return t===n?(o.splice(e,1),!1):void 0}),n.callback.apply(n,t),null!=t[0]&&c.error(t[0],n.data)}),i<=c.concurrency-c.buffer&&c.unsaturated(),c.idle()&&c.drain(),c.process()})}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=0,o=[],c={_tasks:new hn,concurrency:t,payload:e,saturated:y,unsaturated:y,buffer:t/4,empty:y,drain:y,error:y,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){c.drain=y,c._tasks.empty()},unshift:function(n,t){r(n,!0,t)},process:function(){for(;!c.paused&&if;f++){var a=c._tasks.shift();t.push(a),e.push(a.data)}0===c._tasks.length&&c.empty(),i+=1,o.push(t[0]),i===c.concurrency&&c.saturated();var l=$(u(t));n(e,l)}},length:function(){return c._tasks.length},running:function(){return i},workersList:function(){return o},idle:function(){return c._tasks.length+i===0},pause:function(){c.paused=!0},resume:function(){if(c.paused!==!1){c.paused=!1;for(var n=Math.min(c.concurrency,c._tasks.length),t=1;n>=t;t++)Fe(c.process)}}};return c}function mn(n,t){return yn(n,1,t)}function dn(n,t,e,r){r=m(r||y),ze(n,function(n,r,u){e(t,n,function(n,e){t=e,u(n)})},function(n){r(n,t)})}function gn(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(n,t){u=u.concat(t||[]),r(n)})},function(n){r(n,u)})}function bn(n){return function(t,e,r){return n(ze,t,e,r)}}function Sn(n){return n}function jn(n,t,e){return function(r,u,i,o){function c(n){o&&(n?o(n):o(null,e(!1)))}function f(n,r,u){return o?void i(n,function(r,c){o&&(r?(o(r),o=i=!1):t(c)&&(o(null,e(!0,n)),o=i=!1)),u()}):u()}arguments.length>3?(o=o||y,n(r,u,f,c)):(o=i,o=o||y,i=u,n(r,f,c))}}function kn(n,t){return t}function wn(n){return a(function(t,e){t.apply(null,e.concat([a(function(t,e){"object"==typeof console&&(t?console.error&&console.error(t):console[n]&&Q(e,function(t){console[n](t)}))})]))})}function En(n,t,e){function r(t,r){return t?e(t):r?void n(u):e(null)}e=$(e||y);var u=a(function(n,u){return n?e(n):(u.push(r),void t.apply(this,u))});r(null,!0)}function xn(n,t,e){e=$(e||y);var r=a(function(u,i){return u?e(u):t.apply(this,i)?n(r):void e.apply(null,[null].concat(i))});n(r)}function Ln(n,t,e){xn(n,function(){return!t.apply(this,arguments)},e)}function On(n,t,e){function r(t){return t?e(t):void n(u)}function u(n,u){return n?e(n):u?void t(r):e(null)}e=$(e||y),n(u)}function An(n){return function(t,e,r){return n(t,r)}}function In(n,t,e){D(n,An(t),e)}function Tn(n,t,e,r){z(t)(n,An(e),r)}function _n(n){return l(function(t,e){var r=!0;t.push(function(){var n=arguments;r?Fe(function(){e.apply(null,n)}):e.apply(null,n)}),n.apply(this,t),r=!1})}function Fn(n){return!n}function $n(n,t,e,r){r=m(r||y);var u=[];n(t,function(n,t,r){e(n,function(e,i){e?r(e):(i&&u.push({index:t,value:n}),r())})},function(n){n?r(n):r(null,X(u.sort(function(n,t){return n.index-t.index}),p("value")))})}function zn(n,t){function e(n){return n?r(n):void u(e)}var r=$(t||y),u=_n(n);e()}function Bn(n,t,e,r){r=m(r||y);var u={};B(n,t,function(n,t,r){e(n,t,function(n,e){return n?r(n):(u[t]=e,void r())})},function(n){r(n,u)})}function Mn(n,t){return t in n}function Vn(n,t){var e=Object.create(null),r=Object.create(null);t=t||Sn;var u=l(function(u,i){var o=t.apply(null,u);Mn(e,o)?Fe(function(){i.apply(null,e[o])}):Mn(r,o)?r[o].push(i):(r[o]=[i],n.apply(null,u.concat([a(function(n){e[o]=n;var t=r[o];delete r[o];for(var u=0,i=t.length;i>u;u++)t[u].apply(null,n)})])))});return u.memo=e,u.unmemoized=n,u}function qn(n,t,e){e=e||y;var r=v(t)?[]:{};n(t,function(n,t,e){n(a(function(n,u){u.length<=1&&(u=u[0]),r[t]=u,e(n)}))},function(n){e(n,r)})}function Cn(n,t){qn(D,n,t)}function Dn(n,t,e){qn(z(t),n,e)}function Pn(n,t){return yn(function(t,e){n(t[0],e)},t,1)}function Rn(n,t){var e=Pn(n,t);return e.push=function(n,t,r){if(null==r&&(r=y),"function"!=typeof r)throw new Error("task callback must be a function");if(e.started=!0,Vt(n)||(n=[n]),0===n.length)return Fe(function(){e.drain()});t=t||0;for(var u=e._tasks.head;u&&t>=u.priority;)u=u.next;Q(n,function(n){var i={data:n,priority:t,callback:r};u?e._tasks.insertBefore(u,i):e._tasks.push(i)}),Fe(e.process)},delete e.unshift,e}function Un(n,t){return t=m(t||y),Vt(n)?n.length?void Q(n,function(n){n(t)}):t():t(new TypeError("First argument to race must be an array of functions"))}function Nn(n,t,e,r){var u=tr.call(n).reverse();dn(u,t,e,r)}function Qn(n){return l(function(t,e){return t.push(a(function(n,t){if(n)e(null,{error:n});else{var r=null;1===t.length?r=t[0]:t.length>1&&(r=t),e(null,{value:r})}})),n.apply(this,t)})}function Wn(n,t,e,r){$n(n,t,function(n,t){e(n,function(n,e){n?t(n):t(null,!e)})},r)}function Gn(n){var t;return Vt(n)?t=X(n,Qn):(t={},G(n,function(n,e){t[e]=Qn.call(this,n)})),t}function Hn(n){return function(){return n}}function Jn(n,t,e){function r(n,t){if("object"==typeof t)n.times=+t.times||i,n.intervalFunc="function"==typeof t.interval?t.interval:Hn(+t.interval||o);else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");n.times=+t||i}}function u(){t(function(n){n&&f++e?-1:e>r?1:0}Wt(n,function(n,e){t(n,function(t,r){return t?e(t):void e(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,X(t.sort(r),p("value")))})}function Zn(n,t,e){function r(){c||(i.apply(null,arguments),clearTimeout(o))}function u(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),c=!0,i(r)}var i,o,c=!1;return l(function(e,c){i=c,o=setTimeout(u,t),n.apply(null,e.concat(r))})}function nt(n,t,e,r){for(var u=-1,i=ar(fr((t-n)/(e||1)),0),o=Array(i);i--;)o[r?i:++u]=n,n+=e;return o}function tt(n,t,e,r){Ht(nt(0,n,1),t,e,r)}function et(n,t,e,r){3===arguments.length&&(r=e,e=t,t=Vt(n)?[]:{}),r=m(r||y),D(n,function(n,r,u){e(t,n,r,u)},function(n){r(n,t)})}function rt(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function ut(n,t,e){if(e=$(e||y),!n())return e(null);var r=a(function(u,i){return u?e(u):n()?t(r):void e.apply(null,[null].concat(i))});t(r)}function it(n,t,e){ut(function(){return!n.apply(this,arguments)},t,e)}function ot(n,t){function e(u){if(r===n.length)return t.apply(null,[null].concat(u));var i=$(a(function(n,r){return n?t.apply(null,[n].concat(r)):void e(r)}));u.push(i);var o=n[r++];o.apply(null,u)}if(t=m(t||y),!Vt(n))return t(new Error("First argument to waterfall must be an array of functions"));if(!n.length)return t();var r=0;e([])}var ct,ft="[object Function]",at="[object GeneratorFunction]",lt=Object.prototype,st=lt.toString,pt="[object Symbol]",ht=Object.prototype,vt=ht.toString,yt=NaN,mt=/^\s+|\s+$/g,dt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,bt=/^0o[0-7]+$/i,St=parseInt,jt=1/0,kt=1.7976931348623157e308,wt="Expected a function",Et=Math.max,xt=p("length"),Lt=9007199254740991,Ot="function"==typeof Symbol&&Symbol.iterator,At=Object.getPrototypeOf,It=Object.prototype,Tt=It.hasOwnProperty,_t=Object.keys,Ft="[object Arguments]",$t=Object.prototype,zt=$t.hasOwnProperty,Bt=$t.toString,Mt=$t.propertyIsEnumerable,Vt=Array.isArray,qt="[object String]",Ct=Object.prototype,Dt=Ct.toString,Pt=9007199254740991,Rt=/^(?:0|[1-9]\d*)$/,Ut=Object.prototype,Nt="Expected a function",Qt=M(B,1/0),Wt=P(R),Gt=s(Wt),Ht=U(R),Jt=M(Ht,1),Kt=s(Jt),Xt=a(function(n,t){return a(function(e){return n.apply(null,t.concat(e))})}),Yt=W(),Zt=Z("object"==typeof global&&global),ne=Z("object"==typeof self&&self),te=Z("object"==typeof this&&this),ee=Zt||ne||te||Function("return this")(),re=ee.Symbol,ue=1/0,ie=re?re.prototype:void 0,oe=ie?ie.toString:void 0,ce="\\ud800-\\udfff",fe="\\u0300-\\u036f\\ufe20-\\ufe23",ae="\\u20d0-\\u20f0",le="\\ufe0e\\ufe0f",se="["+ce+"]",pe="["+fe+ae+"]",he="\\ud83c[\\udffb-\\udfff]",ve="(?:"+pe+"|"+he+")",ye="[^"+ce+"]",me="(?:\\ud83c[\\udde6-\\uddff]){2}",de="[\\ud800-\\udbff][\\udc00-\\udfff]",ge="\\u200d",be=ve+"?",Se="["+le+"]?",je="(?:"+ge+"(?:"+[ye,me,de].join("|")+")"+Se+be+")*",ke=Se+be+je,we="(?:"+[ye+pe+"?",pe,me,de,se].join("|")+")",Ee=RegExp(he+"(?="+he+")|"+we+ke,"g"),xe=/^\s+|\s+$/g,Le=/^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,Oe=/,/,Ae=/(=.+)?(\s*)$/,Ie=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Te="function"==typeof setImmediate&&setImmediate,_e="object"==typeof process&&"function"==typeof process.nextTick;ct=Te?setImmediate:_e?process.nextTick:sn;var Fe=pn(ct);hn.prototype.removeLink=function(n){return n.prev?n.prev.next=n.next:this.head=n.next,n.next?n.next.prev=n.prev:this.tail=n.prev,n.prev=n.next=null,this.length-=1,n},hn.prototype.empty=hn,hn.prototype.insertAfter=function(n,t){t.prev=n,t.next=n.next,n.next?n.next.prev=t:this.tail=t,n.next=t,this.length+=1},hn.prototype.insertBefore=function(n,t){t.prev=n.prev,t.next=n,n.prev?n.prev.next=t:this.head=t,n.prev=t,this.length+=1},hn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):vn(this,n)},hn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):vn(this,n)},hn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},hn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)};var $e,ze=M(B,1),Be=a(function(n){return a(function(t){var e=this,r=t[t.length-1];"function"==typeof r?t.pop():r=y,dn(n,t,function(n,t,r){t.apply(e,n.concat([a(function(n,t){r(n,t)})]))},function(n,t){r.apply(e,[n].concat(t))})})}),Me=a(function(n){return Be.apply(null,n.reverse())}),Ve=P(gn),qe=bn(gn),Ce=a(function(n){var t=[null].concat(n);return l(function(n,e){return e.apply(this,t)})}),De=jn(D,Sn,kn),Pe=jn(B,Sn,kn),Re=jn(ze,Sn,kn),Ue=wn("dir"),Ne=M(Tn,1),Qe=jn(D,Fn,Fn),We=jn(B,Fn,Fn),Ge=M(We,1),He=P($n),Je=U($n),Ke=M(Je,1),Xe=wn("log"),Ye=M(Bn,1/0),Ze=M(Bn,1);$e=_e?process.nextTick:Te?setImmediate:sn;var nr=pn($e),tr=Array.prototype.slice,er=P(Wn),rr=U(Wn),ur=M(rr,1),ir=jn(D,Boolean,Sn),or=jn(B,Boolean,Sn),cr=M(or,1),fr=Math.ceil,ar=Math.max,lr=M(tt,1/0),sr=M(tt,1),pr={applyEach:Gt,applyEachSeries:Kt,apply:Xt,asyncify:N,auto:K,autoInject:ln,cargo:mn,compose:Me,concat:Ve,concatSeries:qe,constant:Ce,detect:De,detectLimit:Pe,detectSeries:Re,dir:Ue,doDuring:En,doUntil:Ln,doWhilst:xn,during:On,each:In,eachLimit:Tn,eachOf:D,eachOfLimit:B,eachOfSeries:ze,eachSeries:Ne,ensureAsync:_n,every:Qe,everyLimit:We,everySeries:Ge,filter:He,filterLimit:Je,filterSeries:Ke,forever:zn,log:Xe,map:Wt,mapLimit:Ht,mapSeries:Jt,mapValues:Ye,mapValuesLimit:Bn,mapValuesSeries:Ze,memoize:Vn,nextTick:nr,parallel:Cn,parallelLimit:Dn,priorityQueue:Rn,queue:Pn,race:Un,reduce:dn,reduceRight:Nn,reflect:Qn,reflectAll:Gn,reject:er,rejectLimit:rr,rejectSeries:ur,retry:Jn,retryable:Kn,seq:Be,series:Xn,setImmediate:Fe,some:ir,someLimit:or,someSeries:cr,sortBy:Yn,timeout:Zn,times:lr,timesLimit:tt,timesSeries:sr,transform:et,unmemoize:rt,until:it,waterfall:ot,whilst:ut,all:Qe,any:ir,forEach:In,forEachSeries:Ne,forEachLimit:Tn,forEachOf:D,forEachOfSeries:ze,forEachOfLimit:B,inject:dn,foldl:dn,foldr:Nn,select:He,selectLimit:Je,selectSeries:Ke,wrapSync:N};n["default"]=pr,n.applyEach=Gt,n.applyEachSeries=Kt,n.apply=Xt,n.asyncify=N,n.auto=K,n.autoInject=ln,n.cargo=mn,n.compose=Me,n.concat=Ve,n.concatSeries=qe,n.constant=Ce,n.detect=De,n.detectLimit=Pe,n.detectSeries=Re,n.dir=Ue,n.doDuring=En,n.doUntil=Ln,n.doWhilst=xn,n.during=On,n.each=In,n.eachLimit=Tn,n.eachOf=D,n.eachOfLimit=B,n.eachOfSeries=ze,n.eachSeries=Ne,n.ensureAsync=_n,n.every=Qe,n.everyLimit=We,n.everySeries=Ge,n.filter=He,n.filterLimit=Je,n.filterSeries=Ke,n.forever=zn,n.log=Xe,n.map=Wt,n.mapLimit=Ht,n.mapSeries=Jt,n.mapValues=Ye,n.mapValuesLimit=Bn,n.mapValuesSeries=Ze,n.memoize=Vn,n.nextTick=nr,n.parallel=Cn,n.parallelLimit=Dn,n.priorityQueue=Rn,n.queue=Pn,n.race=Un,n.reduce=dn,n.reduceRight=Nn,n.reflect=Qn,n.reflectAll=Gn,n.reject=er,n.rejectLimit=rr,n.rejectSeries=ur,n.retry=Jn,n.retryable=Kn,n.seq=Be,n.series=Xn,n.setImmediate=Fe,n.some=ir,n.someLimit=or,n.someSeries=cr,n.sortBy=Yn,n.timeout=Zn,n.times=lr,n.timesLimit=tt,n.timesSeries=sr,n.transform=et,n.unmemoize=rt,n.until=it,n.waterfall=ot,n.whilst=ut,n.all=Qe,n.allLimit=We,n.allSeries=Ge,n.any=ir,n.anyLimit=or,n.anySeries=cr,n.find=De,n.findLimit=Pe,n.findSeries=Re,n.forEach=In,n.forEachSeries=Ne,n.forEachLimit=Tn,n.forEachOf=D,n.forEachOfSeries=ze,n.forEachOfLimit=B,n.inject=dn,n.foldl=dn,n.foldr=Nn,n.select=He,n.selectLimit=Je,n.selectSeries=Ke,n.wrapSync=N}); +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.async=n.async||{})}(this,function(n){"use strict";function t(n){return n}function e(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}function r(n,t,r){return t=ht(void 0===t?n.length-1:t,0),function(){for(var u=arguments,o=-1,i=ht(u.length-t,0),c=Array(i);++o0){if(++t>=Mt)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}function h(n,e){return Rt(r(n,e,t),n+"")}function y(n){return h(function(t){var e=t.pop();n.call(this,t,e)})}function v(n){return h(function(t,e){var r=y(function(e,r){var u=this;return n(t,function(n,t){n.apply(u,e.concat([t]))},r)});return e.length?r.apply(this,e):r})}function m(n){return"number"==typeof n&&n>-1&&n%1==0&&Ut>=n}function d(n){return null!=n&&m(n.length)&&!i(n)}function g(){}function b(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function j(n){return Vt&&n[Vt]&&n[Vt]()}function S(n,t){for(var e=-1,r=Array(n);++e-1&&n%1==0&&t>n}function E(n){return k(n)&&m(n.length)&&!!Le[Te.call(n)]}function L(n){return function(t){return n(t)}}function A(n,t){var e=Ht(n),r=!e&&Nt(n),u=!e&&!r&&ne(n),o=!e&&!r&&!u&&ze(n),i=e||r||u||o,c=i?S(n.length,String):[],f=c.length;for(var a in n)!t&&!Ue.call(n,a)||i&&("length"==a||u&&("offset"==a||"parent"==a)||o&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||x(a,f))||c.push(a);return c}function _(n){var t=n&&n.constructor,e="function"==typeof t&&t.prototype||Ve;return n===e}function T(n,t){return function(e){return n(t(e))}}function F(n){if(!_(n))return De(n);var t=[];for(var e in Object(n))Ce.call(n,e)&&"constructor"!=e&&t.push(e);return t}function I(n){return d(n)?A(n):F(n)}function B(n){var t=-1,e=n.length;return function(){return++te?{value:n[u],key:u}:null}}function P(n){if(d(n))return B(n);var t=j(n);return t?$(t):M(n)}function z(n){return function(){if(null===n)throw new Error("Callback was already called.");var t=n;n=null,t.apply(this,arguments)}}function R(n){return function(t,e,r){function u(n){if(f-=1,n)c=!0,r(n);else{if(c&&0>=f)return r(null);o()}}function o(){for(;n>f&&!c;){var t=i();if(null===t)return c=!0,void(0>=f&&r(null));f+=1,e(t.value,t.key,z(u))}}if(r=b(r||g),0>=n||!t)return r(null);var i=P(t),c=!1,f=0;o()}}function U(n,t,e,r){R(t)(n,e,r)}function V(n,t){return function(e,r,u){return n(e,t,r,u)}}function D(n,t,e){function r(n){n?e(n):++o===i&&e(null)}e=b(e||g);var u=0,o=0,i=n.length;for(0===i&&e(null);i>u;u++)t(n[u],u,z(r))}function q(n,t,e){var r=d(n)?D:We;r(n,t,e)}function C(n){return function(t,e,r){return n(q,t,e,r)}}function W(n,t,e,r){r=b(r||g),t=t||[];var u=[],o=0;n(t,function(n,t,r){var i=o++;e(n,function(n,t){u[i]=t,r(n)})},function(n){r(n,u)})}function Q(n){return function(t,e,r,u){return n(R(e),t,r,u)}}function G(n){return y(function(t,e){var r;try{r=n.apply(this,t)}catch(u){return e(u)}o(r)&&"function"==typeof r.then?r.then(function(n){e(null,n)},function(n){e(n.message?n:new Error(n))}):e(null,r)})}function N(n,t){for(var e=-1,r=n?n.length:0;++ey;){var n=d.shift();n()}}function o(n,t){var e=m[n];e||(e=m[n]=[]),e.push(t)}function i(n){var t=m[n]||[];N(t,function(n){n()}),u()}function c(n,t){if(!v){var r=z(h(function(t,r){if(y--,r.length<=1&&(r=r[0]),t){var u={};J(p,function(n,t){u[t]=n}),u[n]=r,v=!0,m=[],e(t,u)}else p[n]=r,i(n)}));y++;var u=t[t.length-1];t.length>1?u(p,r):u(r)}}function f(){for(var n,t=0;j.length;)n=j.pop(),t++,N(a(n),function(n){0===--S[n]&&j.push(n)});if(t!==s)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function a(t){var e=[];return J(n,function(n,r){Ht(n)&&Z(n,t,0)>=0&&e.push(r)}),e}"function"==typeof t&&(e=t,t=null),e=b(e||g);var l=I(n),s=l.length;if(!s)return e(null);t||(t=s);var p={},y=0,v=!1,m={},d=[],j=[],S={};J(n,function(t,e){if(!Ht(t))return r(e,[t]),void j.push(e);var u=t.slice(0,t.length-1),i=u.length;return 0===i?(r(e,t),void j.push(e)):(S[e]=i,void N(u,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency in "+u.join(", "));o(c,function(){i--,0===i&&r(e,t)})}))}),f(),u()}function tn(n,t){for(var e=-1,r=n?n.length:0,u=Array(r);++et&&(t=-t>u?0:u+t),e=e>u?u:e,0>e&&(e+=u),u=t>e?0:e-t>>>0,t>>>=0;for(var o=Array(u);++r=r?n:on(n,t,e)}function fn(n,t){for(var e=n.length;e--&&Z(t,n[e],0)>-1;);return e}function an(n,t){for(var e=-1,r=n.length;++e-1;);return e}function ln(n){return n.split("")}function sn(n){return lr.test(n)}function pn(n){return n.match(Ar)||[]}function hn(n){return sn(n)?pn(n):ln(n)}function yn(n){return null==n?"":un(n)}function vn(n,t,e){if(n=yn(n),n&&(e||void 0===t))return n.replace(_r,"");if(!n||!(t=un(t)))return n;var r=hn(n),u=hn(t),o=an(r,u),i=fn(r,u)+1;return cn(r,o,i).join("")}function mn(n){return n=n.toString().replace(Br,""),n=n.match(Tr)[2].replace(" ",""),n=n?n.split(Fr):[],n=n.map(function(n){return vn(n.replace(Ir,""))})}function dn(n,t){var e={};J(n,function(n,t){function r(t,e){var r=tn(u,function(n){return t[n]});r.push(e),n.apply(null,r)}var u;if(Ht(n))u=en(n),n=u.pop(),e[t]=u.concat(u.length>0?r:n);else if(1===n.length)e[t]=n;else{if(u=mn(n),0===n.length&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");u.pop(),e[t]=u.concat(r)}}),nn(e,t)}function gn(n){setTimeout(n,0)}function bn(n){return h(function(t,e){n(function(){t.apply(null,e)})})}function jn(){this.head=this.tail=null,this.length=0}function Sn(n,t){n.length=1,n.head=n.tail=t}function kn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");if(c.started=!0,Ht(n)||(n=[n]),0===n.length&&c.idle())return Pr(function(){c.drain()});for(var r=0,u=n.length;u>r;r++){var o={data:n[r],callback:e||g};t?c._tasks.unshift(o):c._tasks.push(o)}Pr(c.process)}function u(n){return h(function(t){o-=1;for(var e=0,r=n.length;r>e;e++){var u=n[e],f=Z(i,u,0);f>=0&&i.splice(f),u.callback.apply(u,t),null!=t[0]&&c.error(t[0],u.data)}o<=c.concurrency-c.buffer&&c.unsaturated(),c.idle()&&c.drain(),c.process()})}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var o=0,i=[],c={_tasks:new jn,concurrency:t,payload:e,saturated:g,unsaturated:g,buffer:t/4,empty:g,drain:g,error:g,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){c.drain=g,c._tasks.empty()},unshift:function(n,t){r(n,!0,t)},process:function(){for(;!c.paused&&of;f++){var a=c._tasks.shift();t.push(a),e.push(a.data)}0===c._tasks.length&&c.empty(),o+=1,i.push(t[0]),o===c.concurrency&&c.saturated();var l=z(u(t));n(e,l)}},length:function(){return c._tasks.length},running:function(){return o},workersList:function(){return i},idle:function(){return c._tasks.length+o===0},pause:function(){c.paused=!0},resume:function(){if(c.paused!==!1){c.paused=!1;for(var n=Math.min(c.concurrency,c._tasks.length),t=1;n>=t;t++)Pr(c.process)}}};return c}function On(n,t){return kn(n,1,t)}function wn(n,t,e,r){r=b(r||g),Rr(n,function(n,r,u){e(t,n,function(n,e){t=e,u(n)})},function(n){r(n,t)})}function xn(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(n,t){u=u.concat(t||[]),r(n)})},function(n){r(n,u)})}function En(n){return function(t,e,r){return n(Rr,t,e,r)}}function Ln(n,t,e){return function(r,u,o,i){function c(n){i&&(n?i(n):i(null,e(!1)))}function f(n,r,u){return i?void o(n,function(r,c){i&&(r?(i(r),i=o=!1):t(c)&&(i(null,e(!0,n)),i=o=!1)),u()}):u()}arguments.length>3?(i=i||g,n(r,u,f,c)):(i=o,i=i||g,o=u,n(r,f,c))}}function An(n,t){return t}function _n(n){return h(function(t,e){t.apply(null,e.concat([h(function(t,e){"object"==typeof console&&(t?console.error&&console.error(t):console[n]&&N(e,function(t){console[n](t)}))})]))})}function Tn(n,t,e){function r(t,r){return t?e(t):r?void n(u):e(null)}e=z(e||g);var u=h(function(n,u){return n?e(n):(u.push(r),void t.apply(this,u))});r(null,!0)}function Fn(n,t,e){e=z(e||g);var r=h(function(u,o){return u?e(u):t.apply(this,o)?n(r):void e.apply(null,[null].concat(o))});n(r)}function In(n,t,e){Fn(n,function(){return!t.apply(this,arguments)},e)}function Bn(n,t,e){function r(t){return t?e(t):void n(u)}function u(n,u){return n?e(n):u?void t(r):e(null)}e=z(e||g),n(u)}function $n(n){return function(t,e,r){return n(t,r)}}function Mn(n,t,e){q(n,$n(t),e)}function Pn(n,t,e,r){R(t)(n,$n(e),r)}function zn(n){return y(function(t,e){var r=!0;t.push(function(){var n=arguments;r?Pr(function(){e.apply(null,n)}):e.apply(null,n)}),n.apply(this,t),r=!1})}function Rn(n){return!n}function Un(n){return function(t){return null==t?void 0:t[n]}}function Vn(n,t,e,r){r=b(r||g);var u=[];n(t,function(n,t,r){e(n,function(e,o){e?r(e):(o&&u.push({index:t,value:n}),r())})},function(n){n?r(n):r(null,tn(u.sort(function(n,t){return n.index-t.index}),Un("value")))})}function Dn(n,t){function e(n){return n?r(n):void u(e)}var r=z(t||g),u=zn(n);e()}function qn(n,t,e,r){r=b(r||g);var u={};U(n,t,function(n,t,r){e(n,t,function(n,e){return n?r(n):(u[t]=e,void r())})},function(n){r(n,u)})}function Cn(n,t){return t in n}function Wn(n,e){var r=Object.create(null),u=Object.create(null);e=e||t;var o=y(function(t,o){var i=e.apply(null,t);Cn(r,i)?Pr(function(){o.apply(null,r[i])}):Cn(u,i)?u[i].push(o):(u[i]=[o],n.apply(null,t.concat([h(function(n){r[i]=n;var t=u[i];delete u[i];for(var e=0,o=t.length;o>e;e++)t[e].apply(null,n)})])))});return o.memo=r,o.unmemoized=n,o}function Qn(n,t,e){e=e||g;var r=d(t)?[]:{};n(t,function(n,t,e){n(h(function(n,u){u.length<=1&&(u=u[0]),r[t]=u,e(n)}))},function(n){e(n,r)})}function Gn(n,t){Qn(q,n,t)}function Nn(n,t,e){Qn(R(t),n,e)}function Hn(n,t){return kn(function(t,e){n(t[0],e)},t,1)}function Jn(n,t){var e=Hn(n,t);return e.push=function(n,t,r){if(null==r&&(r=g),"function"!=typeof r)throw new Error("task callback must be a function");if(e.started=!0,Ht(n)||(n=[n]),0===n.length)return Pr(function(){e.drain()});t=t||0;for(var u=e._tasks.head;u&&t>=u.priority;)u=u.next;for(var o=0,i=n.length;i>o;o++){var c={data:n[o],priority:t,callback:r};u?e._tasks.insertBefore(u,c):e._tasks.push(c)}Pr(e.process)},delete e.unshift,e}function Kn(n,t){if(t=b(t||g),!Ht(n))return t(new TypeError("First argument to race must be an array of functions"));if(!n.length)return t();for(var e=0,r=n.length;r>e;e++)n[e](t)}function Xn(n,t,e,r){var u=ou.call(n).reverse();wn(u,t,e,r)}function Yn(n){return y(function(t,e){return t.push(h(function(n,t){if(n)e(null,{error:n});else{var r=null;1===t.length?r=t[0]:t.length>1&&(r=t),e(null,{value:r})}})),n.apply(this,t)})}function Zn(n,t,e,r){Vn(n,t,function(n,t){e(n,function(n,e){n?t(n):t(null,!e)})},r)}function nt(n){var t;return Ht(n)?t=tn(n,Yn):(t={},J(n,function(n,e){t[e]=Yn.call(this,n)})),t}function tt(n,t,e){function r(n,t){if("object"==typeof t)n.times=+t.times||i,n.intervalFunc="function"==typeof t.interval?t.interval:u(+t.interval||c),n.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");n.times=+t||i}}function o(){t(function(n){n&&a++e?-1:e>r?1:0}Qe(n,function(n,e){t(n,function(t,r){return t?e(t):void e(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,tn(t.sort(r),Un("value")))})}function ot(n,t,e){function r(){c||(o.apply(null,arguments),clearTimeout(i))}function u(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),c=!0,o(r)}var o,i,c=!1;return y(function(e,c){o=c,i=setTimeout(u,t),n.apply(null,e.concat(r))})}function it(n,t,e,r){for(var u=-1,o=hu(pu((t-n)/(e||1)),0),i=Array(o);o--;)i[r?o:++u]=n,n+=e;return i}function ct(n,t,e,r){Ne(it(0,n,1),t,e,r)}function ft(n,t,e,r){3===arguments.length&&(r=e,e=t,t=Ht(n)?[]:{}),r=b(r||g),q(n,function(n,r,u){e(t,n,r,u)},function(n){r(n,t)})}function at(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function lt(n,t,e){if(e=z(e||g),!n())return e(null);var r=h(function(u,o){return u?e(u):n()?t(r):void e.apply(null,[null].concat(o))});t(r)}function st(n,t,e){lt(function(){return!n.apply(this,arguments)},t,e)}function pt(n,t){function e(u){if(r===n.length)return t.apply(null,[null].concat(u));var o=z(h(function(n,r){return n?t.apply(null,[n].concat(r)):void e(r)}));u.push(o);var i=n[r++];i.apply(null,u)}if(t=b(t||g),!Ht(n))return t(new Error("First argument to waterfall must be an array of functions"));if(!n.length)return t();var r=0;e([])}var ht=Math.max,yt="[object Function]",vt="[object GeneratorFunction]",mt="[object Proxy]",dt=Object.prototype,gt=dt.toString,bt="object"==typeof global&&global&&global.Object===Object&&global,jt="object"==typeof self&&self&&self.Object===Object&&self,St=bt||jt||Function("return this")(),kt=St["__core-js_shared__"],Ot=function(){var n=/[^.]+$/.exec(kt&&kt.keys&&kt.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),wt=Function.prototype,xt=wt.toString,Et=/[\\^$.*+?()[\]{}|]/g,Lt=/^\[object .+?Constructor\]$/,At=Function.prototype,_t=Object.prototype,Tt=At.toString,Ft=_t.hasOwnProperty,It=RegExp("^"+Tt.call(Ft).replace(Et,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Bt=function(){try{var n=s(Object,"defineProperty");return n({},"",{}),n}catch(t){}}(),$t=Bt?function(n,t){return Bt(n,"toString",{configurable:!0,enumerable:!1,value:u(t),writable:!0})}:t,Mt=500,Pt=16,zt=Date.now,Rt=p($t),Ut=9007199254740991,Vt="function"==typeof Symbol&&Symbol.iterator,Dt="[object Arguments]",qt=Object.prototype,Ct=qt.toString,Wt=Object.prototype,Qt=Wt.hasOwnProperty,Gt=Wt.propertyIsEnumerable,Nt=O(function(){return arguments}())?O:function(n){return k(n)&&Qt.call(n,"callee")&&!Gt.call(n,"callee")},Ht=Array.isArray,Jt="object"==typeof n&&n&&!n.nodeType&&n,Kt=Jt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Kt&&Kt.exports===Jt,Yt=Xt?St.Buffer:void 0,Zt=Yt?Yt.isBuffer:void 0,ne=Zt||w,te=9007199254740991,ee=/^(?:0|[1-9]\d*)$/,re="[object Arguments]",ue="[object Array]",oe="[object Boolean]",ie="[object Date]",ce="[object Error]",fe="[object Function]",ae="[object Map]",le="[object Number]",se="[object Object]",pe="[object RegExp]",he="[object Set]",ye="[object String]",ve="[object WeakMap]",me="[object ArrayBuffer]",de="[object DataView]",ge="[object Float32Array]",be="[object Float64Array]",je="[object Int8Array]",Se="[object Int16Array]",ke="[object Int32Array]",Oe="[object Uint8Array]",we="[object Uint8ClampedArray]",xe="[object Uint16Array]",Ee="[object Uint32Array]",Le={};Le[ge]=Le[be]=Le[je]=Le[Se]=Le[ke]=Le[Oe]=Le[we]=Le[xe]=Le[Ee]=!0,Le[re]=Le[ue]=Le[me]=Le[oe]=Le[de]=Le[ie]=Le[ce]=Le[fe]=Le[ae]=Le[le]=Le[se]=Le[pe]=Le[he]=Le[ye]=Le[ve]=!1;var Ae,_e=Object.prototype,Te=_e.toString,Fe="object"==typeof n&&n&&!n.nodeType&&n,Ie=Fe&&"object"==typeof module&&module&&!module.nodeType&&module,Be=Ie&&Ie.exports===Fe,$e=Be&&bt.process,Me=function(){try{return $e&&$e.binding("util")}catch(n){}}(),Pe=Me&&Me.isTypedArray,ze=Pe?L(Pe):E,Re=Object.prototype,Ue=Re.hasOwnProperty,Ve=Object.prototype,De=T(Object.keys,Object),qe=Object.prototype,Ce=qe.hasOwnProperty,We=V(U,1/0),Qe=C(W),Ge=v(Qe),Ne=Q(W),He=V(Ne,1),Je=v(He),Ke=h(function(n,t){return h(function(e){return n.apply(null,t.concat(e))})}),Xe=H(),Ye=St.Symbol,Ze="[object Symbol]",nr=Object.prototype,tr=nr.toString,er=1/0,rr=Ye?Ye.prototype:void 0,ur=rr?rr.toString:void 0,or="\\ud800-\\udfff",ir="\\u0300-\\u036f\\ufe20-\\ufe23",cr="\\u20d0-\\u20f0",fr="\\ufe0e\\ufe0f",ar="\\u200d",lr=RegExp("["+ar+or+ir+cr+fr+"]"),sr="\\ud800-\\udfff",pr="\\u0300-\\u036f\\ufe20-\\ufe23",hr="\\u20d0-\\u20f0",yr="\\ufe0e\\ufe0f",vr="["+sr+"]",mr="["+pr+hr+"]",dr="\\ud83c[\\udffb-\\udfff]",gr="(?:"+mr+"|"+dr+")",br="[^"+sr+"]",jr="(?:\\ud83c[\\udde6-\\uddff]){2}",Sr="[\\ud800-\\udbff][\\udc00-\\udfff]",kr="\\u200d",Or=gr+"?",wr="["+yr+"]?",xr="(?:"+kr+"(?:"+[br,jr,Sr].join("|")+")"+wr+Or+")*",Er=wr+Or+xr,Lr="(?:"+[br+mr+"?",mr,jr,Sr,vr].join("|")+")",Ar=RegExp(dr+"(?="+dr+")|"+Lr+Er,"g"),_r=/^\s+|\s+$/g,Tr=/^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,Fr=/,/,Ir=/(=.+)?(\s*)$/,Br=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,$r="function"==typeof setImmediate&&setImmediate,Mr="object"==typeof process&&"function"==typeof process.nextTick;Ae=$r?setImmediate:Mr?process.nextTick:gn;var Pr=bn(Ae);jn.prototype.removeLink=function(n){return n.prev?n.prev.next=n.next:this.head=n.next,n.next?n.next.prev=n.prev:this.tail=n.prev,n.prev=n.next=null,this.length-=1,n},jn.prototype.empty=jn,jn.prototype.insertAfter=function(n,t){t.prev=n,t.next=n.next,n.next?n.next.prev=t:this.tail=t,n.next=t,this.length+=1},jn.prototype.insertBefore=function(n,t){t.prev=n.prev,t.next=n,n.prev?n.prev.next=t:this.head=t,n.prev=t,this.length+=1},jn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):Sn(this,n)},jn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):Sn(this,n)},jn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},jn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)};var zr,Rr=V(U,1),Ur=h(function(n){return h(function(t){var e=this,r=t[t.length-1];"function"==typeof r?t.pop():r=g,wn(n,t,function(n,t,r){t.apply(e,n.concat([h(function(n,t){r(n,t)})]))},function(n,t){r.apply(e,[n].concat(t))})})}),Vr=h(function(n){return Ur.apply(null,n.reverse())}),Dr=C(xn),qr=En(xn),Cr=h(function(n){var t=[null].concat(n);return y(function(n,e){return e.apply(this,t)})}),Wr=Ln(q,t,An),Qr=Ln(U,t,An),Gr=Ln(Rr,t,An),Nr=_n("dir"),Hr=V(Pn,1),Jr=Ln(q,Rn,Rn),Kr=Ln(U,Rn,Rn),Xr=V(Kr,1),Yr=C(Vn),Zr=Q(Vn),nu=V(Zr,1),tu=_n("log"),eu=V(qn,1/0),ru=V(qn,1);zr=Mr?process.nextTick:$r?setImmediate:gn;var uu=bn(zr),ou=Array.prototype.slice,iu=C(Zn),cu=Q(Zn),fu=V(cu,1),au=Ln(q,Boolean,t),lu=Ln(U,Boolean,t),su=V(lu,1),pu=Math.ceil,hu=Math.max,yu=V(ct,1/0),vu=V(ct,1),mu={applyEach:Ge,applyEachSeries:Je,apply:Ke,asyncify:G,auto:nn,autoInject:dn,cargo:On,compose:Vr,concat:Dr,concatSeries:qr,constant:Cr,detect:Wr,detectLimit:Qr,detectSeries:Gr,dir:Nr,doDuring:Tn,doUntil:In,doWhilst:Fn,during:Bn,each:Mn,eachLimit:Pn,eachOf:q,eachOfLimit:U,eachOfSeries:Rr,eachSeries:Hr,ensureAsync:zn,every:Jr,everyLimit:Kr,everySeries:Xr,filter:Yr,filterLimit:Zr,filterSeries:nu,forever:Dn,log:tu,map:Qe,mapLimit:Ne,mapSeries:He,mapValues:eu,mapValuesLimit:qn,mapValuesSeries:ru,memoize:Wn,nextTick:uu,parallel:Gn,parallelLimit:Nn,priorityQueue:Jn,queue:Hn,race:Kn,reduce:wn,reduceRight:Xn,reflect:Yn,reflectAll:nt,reject:iu,rejectLimit:cu,rejectSeries:fu,retry:tt,retryable:et,seq:Ur,series:rt,setImmediate:Pr,some:au,someLimit:lu,someSeries:su,sortBy:ut,timeout:ot,times:yu,timesLimit:ct,timesSeries:vu,transform:ft,unmemoize:at,until:st,waterfall:pt,whilst:lt,all:Jr,any:au,forEach:Mn,forEachSeries:Hr,forEachLimit:Pn,forEachOf:q,forEachOfSeries:Rr,forEachOfLimit:U,inject:wn,foldl:wn,foldr:Xn,select:Yr,selectLimit:Zr,selectSeries:nu,wrapSync:G};n["default"]=mu,n.applyEach=Ge,n.applyEachSeries=Je,n.apply=Ke,n.asyncify=G,n.auto=nn,n.autoInject=dn,n.cargo=On,n.compose=Vr,n.concat=Dr,n.concatSeries=qr,n.constant=Cr,n.detect=Wr,n.detectLimit=Qr,n.detectSeries=Gr,n.dir=Nr,n.doDuring=Tn,n.doUntil=In,n.doWhilst=Fn,n.during=Bn,n.each=Mn,n.eachLimit=Pn,n.eachOf=q,n.eachOfLimit=U,n.eachOfSeries=Rr,n.eachSeries=Hr,n.ensureAsync=zn,n.every=Jr,n.everyLimit=Kr,n.everySeries=Xr,n.filter=Yr,n.filterLimit=Zr,n.filterSeries=nu,n.forever=Dn,n.log=tu,n.map=Qe,n.mapLimit=Ne,n.mapSeries=He,n.mapValues=eu,n.mapValuesLimit=qn,n.mapValuesSeries=ru,n.memoize=Wn,n.nextTick=uu,n.parallel=Gn,n.parallelLimit=Nn,n.priorityQueue=Jn,n.queue=Hn,n.race=Kn,n.reduce=wn,n.reduceRight=Xn,n.reflect=Yn,n.reflectAll=nt,n.reject=iu,n.rejectLimit=cu,n.rejectSeries=fu,n.retry=tt,n.retryable=et,n.seq=Ur,n.series=rt,n.setImmediate=Pr,n.some=au,n.someLimit=lu,n.someSeries=su,n.sortBy=ut,n.timeout=ot,n.times=yu,n.timesLimit=ct,n.timesSeries=vu,n.transform=ft,n.unmemoize=at,n.until=st,n.waterfall=pt,n.whilst=lt,n.all=Jr,n.allLimit=Kr,n.allSeries=Xr,n.any=au,n.anyLimit=lu,n.anySeries=su,n.find=Wr,n.findLimit=Qr,n.findSeries=Gr,n.forEach=Mn,n.forEachSeries=Hr,n.forEachLimit=Pn,n.forEachOf=q,n.forEachOfSeries=Rr,n.forEachOfLimit=U,n.inject=wn,n.foldl=wn,n.foldr=Xn,n.select=Yr,n.selectLimit=Zr,n.selectSeries=nu,n.wrapSync=G}); //# sourceMappingURL=async.min.map \ No newline at end of file diff --git a/StockManMVC/node_modules/async/doDuring.js b/StockManMVC/node_modules/async/doDuring.js index 0d01995..c962895 100644 --- a/StockManMVC/node_modules/async/doDuring.js +++ b/StockManMVC/node_modules/async/doDuring.js @@ -9,9 +9,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _onlyOnce = require('./internal/onlyOnce'); @@ -43,7 +43,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function doDuring(fn, test, callback) { callback = (0, _onlyOnce2.default)(callback || _noop2.default); - var next = (0, _rest2.default)(function (err, args) { + var next = (0, _baseRest2.default)(function (err, args) { if (err) return callback(err); args.push(check); test.apply(this, args); diff --git a/StockManMVC/node_modules/async/doWhilst.js b/StockManMVC/node_modules/async/doWhilst.js index a683bb6..088b2cf 100644 --- a/StockManMVC/node_modules/async/doWhilst.js +++ b/StockManMVC/node_modules/async/doWhilst.js @@ -9,9 +9,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _onlyOnce = require('./internal/onlyOnce'); @@ -35,8 +35,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * passes. The function is passed a `callback(err)`, which must be called once * it has completed with an optional `err` argument. Invoked with (callback). * @param {Function} test - synchronous truth test to perform after each - * execution of `iteratee`. Invoked with Invoked with the non-error callback - * results of `iteratee`. + * execution of `iteratee`. Invoked with the non-error callback results of + * `iteratee`. * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `iteratee` has stopped. * `callback` will be passed an error and any arguments passed to the final @@ -44,7 +44,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de */ function doWhilst(iteratee, test, callback) { callback = (0, _onlyOnce2.default)(callback || _noop2.default); - var next = (0, _rest2.default)(function (err, args) { + var next = (0, _baseRest2.default)(function (err, args) { if (err) return callback(err); if (test.apply(this, args)) return iteratee(next); callback.apply(null, [null].concat(args)); diff --git a/StockManMVC/node_modules/async/eachLimit.js b/StockManMVC/node_modules/async/eachLimit.js index 691a405..674c135 100644 --- a/StockManMVC/node_modules/async/eachLimit.js +++ b/StockManMVC/node_modules/async/eachLimit.js @@ -25,7 +25,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @see [async.each]{@link module:Collections.each} * @alias forEachLimit * @category Collection - * @param {Array|Iterable|Object} coll - A colleciton to iterate over. + * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. * @param {Function} iteratee - A function to apply to each item in `coll`. The * iteratee is passed a `callback(err)` which must be called once it has diff --git a/StockManMVC/node_modules/async/eachOf.js b/StockManMVC/node_modules/async/eachOf.js index c562f4c..4ab9a54 100644 --- a/StockManMVC/node_modules/async/eachOf.js +++ b/StockManMVC/node_modules/async/eachOf.js @@ -25,7 +25,7 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _once = require('lodash/once'); +var _once = require('./internal/once'); var _once2 = _interopRequireDefault(_once); diff --git a/StockManMVC/node_modules/async/internal/applyEach.js b/StockManMVC/node_modules/async/internal/applyEach.js index 4035bfb..bfe97e6 100644 --- a/StockManMVC/node_modules/async/internal/applyEach.js +++ b/StockManMVC/node_modules/async/internal/applyEach.js @@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = applyEach; -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _initialParams = require('./initialParams'); @@ -16,7 +16,7 @@ var _initialParams2 = _interopRequireDefault(_initialParams); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function applyEach(eachfn) { - return (0, _rest2.default)(function (fns, args) { + return (0, _baseRest2.default)(function (fns, args) { var go = (0, _initialParams2.default)(function (args, callback) { var that = this; return eachfn(fns, function (fn, cb) { diff --git a/StockManMVC/node_modules/async/internal/consoleFunc.js b/StockManMVC/node_modules/async/internal/consoleFunc.js index f7befa8..0fdab2f 100644 --- a/StockManMVC/node_modules/async/internal/consoleFunc.js +++ b/StockManMVC/node_modules/async/internal/consoleFunc.js @@ -9,15 +9,15 @@ var _arrayEach = require('lodash/_arrayEach'); var _arrayEach2 = _interopRequireDefault(_arrayEach); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function consoleFunc(name) { - return (0, _rest2.default)(function (fn, args) { - fn.apply(null, args.concat([(0, _rest2.default)(function (err, args) { + return (0, _baseRest2.default)(function (fn, args) { + fn.apply(null, args.concat([(0, _baseRest2.default)(function (err, args) { if (typeof console === 'object') { if (err) { if (console.error) { diff --git a/StockManMVC/node_modules/async/internal/initialParams.js b/StockManMVC/node_modules/async/internal/initialParams.js index 2449320..0142132 100644 --- a/StockManMVC/node_modules/async/internal/initialParams.js +++ b/StockManMVC/node_modules/async/internal/initialParams.js @@ -5,15 +5,15 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = function (fn) { - return (0, _rest2.default)(function (args /*..., callback*/) { + return (0, _baseRest2.default)(function (args /*..., callback*/) { var callback = args.pop(); fn.call(this, args, callback); }); }; -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/StockManMVC/node_modules/async/internal/parallel.js b/StockManMVC/node_modules/async/internal/parallel.js index f04888c..3915b20 100644 --- a/StockManMVC/node_modules/async/internal/parallel.js +++ b/StockManMVC/node_modules/async/internal/parallel.js @@ -13,9 +13,9 @@ var _isArrayLike = require('lodash/isArrayLike'); var _isArrayLike2 = _interopRequireDefault(_isArrayLike); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -24,7 +24,7 @@ function _parallel(eachfn, tasks, callback) { var results = (0, _isArrayLike2.default)(tasks) ? [] : {}; eachfn(tasks, function (task, key, callback) { - task((0, _rest2.default)(function (err, args) { + task((0, _baseRest2.default)(function (err, args) { if (args.length <= 1) { args = args[0]; } diff --git a/StockManMVC/node_modules/async/internal/queue.js b/StockManMVC/node_modules/async/internal/queue.js index e54a6d7..6d53cc2 100644 --- a/StockManMVC/node_modules/async/internal/queue.js +++ b/StockManMVC/node_modules/async/internal/queue.js @@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = queue; -var _arrayEach = require('lodash/_arrayEach'); +var _baseIndexOf = require('lodash/_baseIndexOf'); -var _arrayEach2 = _interopRequireDefault(_arrayEach); +var _baseIndexOf2 = _interopRequireDefault(_baseIndexOf); var _isArray = require('lodash/isArray'); @@ -17,9 +17,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _onlyOnce = require('./onlyOnce'); @@ -56,9 +56,10 @@ function queue(worker, concurrency, payload) { q.drain(); }); } - (0, _arrayEach2.default)(data, function (task) { + + for (var i = 0, l = data.length; i < l; i++) { var item = { - data: task, + data: data[i], callback: callback || _noop2.default }; @@ -67,28 +68,27 @@ function queue(worker, concurrency, payload) { } else { q._tasks.push(item); } - }); + } (0, _setImmediate2.default)(q.process); } function _next(tasks) { - return (0, _rest2.default)(function (args) { + return (0, _baseRest2.default)(function (args) { workers -= 1; - (0, _arrayEach2.default)(tasks, function (task) { - (0, _arrayEach2.default)(workersList, function (worker, index) { - if (worker === task) { - workersList.splice(index, 1); - return false; - } - }); + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + var index = (0, _baseIndexOf2.default)(workersList, task, 0); + if (index >= 0) { + workersList.splice(index); + } task.callback.apply(task, args); if (args[0] != null) { q.error(args[0], task.data); } - }); + } if (workers <= q.concurrency - q.buffer) { q.unsaturated(); diff --git a/StockManMVC/node_modules/async/internal/setImmediate.js b/StockManMVC/node_modules/async/internal/setImmediate.js index 6d7e7fd..18f170d 100644 --- a/StockManMVC/node_modules/async/internal/setImmediate.js +++ b/StockManMVC/node_modules/async/internal/setImmediate.js @@ -7,9 +7,9 @@ exports.hasNextTick = exports.hasSetImmediate = undefined; exports.fallback = fallback; exports.wrap = wrap; -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -21,7 +21,7 @@ function fallback(fn) { } function wrap(defer) { - return (0, _rest2.default)(function (fn, args) { + return (0, _baseRest2.default)(function (fn, args) { defer(function () { fn.apply(null, args); }); diff --git a/StockManMVC/node_modules/async/memoize.js b/StockManMVC/node_modules/async/memoize.js index a6bc5f0..4c757ab 100644 --- a/StockManMVC/node_modules/async/memoize.js +++ b/StockManMVC/node_modules/async/memoize.js @@ -9,9 +9,9 @@ var _identity = require('lodash/identity'); var _identity2 = _interopRequireDefault(_identity); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _setImmediate = require('./internal/setImmediate'); @@ -78,7 +78,7 @@ function memoize(fn, hasher) { queues[key].push(callback); } else { queues[key] = [callback]; - fn.apply(null, args.concat([(0, _rest2.default)(function (args) { + fn.apply(null, args.concat([(0, _baseRest2.default)(function (args) { memo[key] = args; var q = queues[key]; delete queues[key]; diff --git a/StockManMVC/node_modules/async/package.json b/StockManMVC/node_modules/async/package.json index c8e07a2..bfe9ec3 100644 --- a/StockManMVC/node_modules/async/package.json +++ b/StockManMVC/node_modules/async/package.json @@ -6,19 +6,19 @@ ] ], "_from": "async@>=2.0.1-0 <3.0.0-0", - "_id": "async@2.0.1", + "_id": "async@2.1.1", "_inCache": true, "_location": "/async", - "_nodeVersion": "6.2.2", + "_nodeVersion": "6.7.0", "_npmOperationalInternal": { "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/async-2.0.1.tgz_1469219821915_0.46895121363922954" + "tmp": "tmp/async-2.1.1.tgz_1476298732568_0.5726463799364865" }, "_npmUser": { "email": "megawac@gmail.com", "name": "megawac" }, - "_npmVersion": "3.9.5", + "_npmVersion": "3.10.3", "_phantomChildren": {}, "_requested": { "name": "async", @@ -31,8 +31,8 @@ "_requiredBy": [ "/form-data" ], - "_resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", - "_shasum": "b709cc0280a9c36f09f4536be823c838a9049e25", + "_resolved": "https://registry.npmjs.org/async/-/async-2.1.1.tgz", + "_shasum": "e11b6d10043f2254efb61a21163d840ccddb8d28", "_shrinkwrap": null, "_spec": "async@^2.0.1", "_where": "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\node_modules\\form-data", @@ -43,7 +43,7 @@ "url": "https://github.com/caolan/async/issues" }, "dependencies": { - "lodash": "^4.8.0" + "lodash": "^4.14.0" }, "description": "Higher-order functions and common patterns for asynchronous code", "devDependencies": { @@ -53,7 +53,7 @@ "babel-plugin-transform-es2015-modules-commonjs": "^6.3.16", "babel-preset-es2015": "^6.3.13", "babelify": "^7.2.0", - "benchmark": "github:bestiejs/benchmark.js", + "benchmark": "^2.1.1", "bluebird": "^2.9.32", "chai": "^3.1.0", "cheerio": "^0.20.0", @@ -85,8 +85,8 @@ }, "directories": {}, "dist": { - "shasum": "b709cc0280a9c36f09f4536be823c838a9049e25", - "tarball": "https://registry.npmjs.org/async/-/async-2.0.1.tgz" + "shasum": "e11b6d10043f2254efb61a21163d840ccddb8d28", + "tarball": "https://registry.npmjs.org/async/-/async-2.1.1.tgz" }, "gh-pages-deploy": { "staticpath": "docs" @@ -140,5 +140,5 @@ "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test", "test": "npm run-script lint && npm run mocha-node-test" }, - "version": "2.0.1" + "version": "2.1.1" } diff --git a/StockManMVC/node_modules/async/priorityQueue.js b/StockManMVC/node_modules/async/priorityQueue.js index f7736e9..4e37149 100644 --- a/StockManMVC/node_modules/async/priorityQueue.js +++ b/StockManMVC/node_modules/async/priorityQueue.js @@ -31,9 +31,9 @@ exports.default = function (worker, concurrency) { nextNode = nextNode.next; } - (0, _arrayEach2.default)(data, function (task) { + for (var i = 0, l = data.length; i < l; i++) { var item = { - data: task, + data: data[i], priority: priority, callback: callback }; @@ -43,7 +43,7 @@ exports.default = function (worker, concurrency) { } else { q._tasks.push(item); } - }); + } (0, _setImmediate2.default)(q.process); }; @@ -53,10 +53,6 @@ exports.default = function (worker, concurrency) { return q; }; -var _arrayEach = require('lodash/_arrayEach'); - -var _arrayEach2 = _interopRequireDefault(_arrayEach); - var _isArray = require('lodash/isArray'); var _isArray2 = _interopRequireDefault(_isArray); diff --git a/StockManMVC/node_modules/async/race.js b/StockManMVC/node_modules/async/race.js index 384ea10..4d0625b 100644 --- a/StockManMVC/node_modules/async/race.js +++ b/StockManMVC/node_modules/async/race.js @@ -9,10 +9,6 @@ var _isArray = require('lodash/isArray'); var _isArray2 = _interopRequireDefault(_isArray); -var _arrayEach = require('lodash/_arrayEach'); - -var _arrayEach2 = _interopRequireDefault(_arrayEach); - var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); @@ -25,7 +21,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /** * Runs the `tasks` array of functions in parallel, without waiting until the - * previous function has completed. Once any the `tasks` completed or pass an + * previous function has completed. Once any of the `tasks` complete or pass an * error to its callback, the main `callback` is immediately called. It's * equivalent to `Promise.race()`. * @@ -64,8 +60,8 @@ function race(tasks, callback) { callback = (0, _once2.default)(callback || _noop2.default); if (!(0, _isArray2.default)(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); if (!tasks.length) return callback(); - (0, _arrayEach2.default)(tasks, function (task) { - task(callback); - }); + for (var i = 0, l = tasks.length; i < l; i++) { + tasks[i](callback); + } } module.exports = exports['default']; \ No newline at end of file diff --git a/StockManMVC/node_modules/async/reflect.js b/StockManMVC/node_modules/async/reflect.js index 326d1b9..e4fabcc 100644 --- a/StockManMVC/node_modules/async/reflect.js +++ b/StockManMVC/node_modules/async/reflect.js @@ -9,9 +9,9 @@ var _initialParams = require('./internal/initialParams'); var _initialParams2 = _interopRequireDefault(_initialParams); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -56,7 +56,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de */ function reflect(fn) { return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) { - args.push((0, _rest2.default)(function callback(err, cbArgs) { + args.push((0, _baseRest2.default)(function callback(err, cbArgs) { if (err) { reflectCallback(null, { error: err diff --git a/StockManMVC/node_modules/async/retry.js b/StockManMVC/node_modules/async/retry.js index 5ab0d11..3738be2 100644 --- a/StockManMVC/node_modules/async/retry.js +++ b/StockManMVC/node_modules/async/retry.js @@ -33,6 +33,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * * `interval` - The time to wait between retries, in milliseconds. The * default is `0`. The interval may also be specified as a function of the * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). * * If `opts` is a number, the number specifies the number of times to retry, * with the default interval of `0`. * @param {Function} task - A function which receives two arguments: (1) a @@ -76,6 +81,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * // do something with the result * }); * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * * // It can also be embedded within other control flow functions to retry * // individual methods that are not as reliable, like this: * async.auto({ @@ -84,6 +99,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * }, function(err, results) { * // do something with the results * }); + * */ function retry(opts, task, callback) { var DEFAULT_TIMES = 5; @@ -99,6 +115,8 @@ function retry(opts, task, callback) { acc.times = +t.times || DEFAULT_TIMES; acc.intervalFunc = typeof t.interval === 'function' ? t.interval : (0, _constant2.default)(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; } else if (typeof t === 'number' || typeof t === 'string') { acc.times = +t || DEFAULT_TIMES; } else { @@ -121,7 +139,7 @@ function retry(opts, task, callback) { var attempt = 1; function retryAttempt() { task(function (err) { - if (err && attempt++ < options.times) { + if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { setTimeout(retryAttempt, options.intervalFunc(attempt)); } else { callback.apply(null, arguments); diff --git a/StockManMVC/node_modules/async/seq.js b/StockManMVC/node_modules/async/seq.js index e2d7673..fc91fac 100644 --- a/StockManMVC/node_modules/async/seq.js +++ b/StockManMVC/node_modules/async/seq.js @@ -8,9 +8,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _reduce = require('./reduce'); @@ -56,8 +56,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * }); * }); */ -exports.default = (0, _rest2.default)(function seq(functions) { - return (0, _rest2.default)(function (args) { +exports.default = (0, _baseRest2.default)(function seq(functions) { + return (0, _baseRest2.default)(function (args) { var that = this; var cb = args[args.length - 1]; @@ -68,7 +68,7 @@ exports.default = (0, _rest2.default)(function seq(functions) { } (0, _reduce2.default)(functions, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([(0, _rest2.default)(function (err, nextargs) { + fn.apply(that, newargs.concat([(0, _baseRest2.default)(function (err, nextargs) { cb(err, nextargs); })])); }, function (err, results) { diff --git a/StockManMVC/node_modules/async/timeout.js b/StockManMVC/node_modules/async/timeout.js index a8de437..81a5b7a 100644 --- a/StockManMVC/node_modules/async/timeout.js +++ b/StockManMVC/node_modules/async/timeout.js @@ -27,12 +27,31 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) * to timeout Error for more information.. * @returns {Function} Returns a wrapped function that can be used with any of - * the control flow functions. + * the control flow functions. Invoke this function with the same + * parameters as you would `asyncFunc`. * @example * - * async.timeout(function(callback) { - * doAsyncTask(callback); - * }, 1000); + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); */ function timeout(asyncFn, milliseconds, info) { var originalCallback, timer; diff --git a/StockManMVC/node_modules/async/waterfall.js b/StockManMVC/node_modules/async/waterfall.js index 01ea63d..07611f4 100644 --- a/StockManMVC/node_modules/async/waterfall.js +++ b/StockManMVC/node_modules/async/waterfall.js @@ -15,7 +15,7 @@ exports.default = function (tasks, callback) { return callback.apply(null, [null].concat(args)); } - var taskCallback = (0, _onlyOnce2.default)((0, _rest2.default)(function (err, args) { + var taskCallback = (0, _onlyOnce2.default)((0, _baseRest2.default)(function (err, args) { if (err) { return callback.apply(null, [err].concat(args)); } @@ -43,9 +43,9 @@ var _once = require('./internal/once'); var _once2 = _interopRequireDefault(_once); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _onlyOnce = require('./internal/onlyOnce'); diff --git a/StockManMVC/node_modules/async/whilst.js b/StockManMVC/node_modules/async/whilst.js index e81c460..9145e2e 100644 --- a/StockManMVC/node_modules/async/whilst.js +++ b/StockManMVC/node_modules/async/whilst.js @@ -9,9 +9,9 @@ var _noop = require('lodash/noop'); var _noop2 = _interopRequireDefault(_noop); -var _rest = require('lodash/rest'); +var _baseRest = require('lodash/_baseRest'); -var _rest2 = _interopRequireDefault(_rest); +var _baseRest2 = _interopRequireDefault(_baseRest); var _onlyOnce = require('./internal/onlyOnce'); @@ -20,7 +20,7 @@ var _onlyOnce2 = _interopRequireDefault(_onlyOnce); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** - * Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when * stopped, or an error occurs. * * @name whilst @@ -29,13 +29,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @method * @category Control Flow * @param {Function} test - synchronous truth test to perform before each - * execution of `fn`. Invoked with (). + * execution of `iteratee`. Invoked with (). * @param {Function} iteratee - A function which is called each time `test` passes. * The function is passed a `callback(err)`, which must be called once it has * completed with an optional `err` argument. Invoked with (callback). * @param {Function} [callback] - A callback which is called after the test - * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error and any arguments passed to the final `fn`'s + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s * callback. Invoked with (err, [results]); * @returns undefined * @example @@ -57,7 +57,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function whilst(test, iteratee, callback) { callback = (0, _onlyOnce2.default)(callback || _noop2.default); if (!test()) return callback(null); - var next = (0, _rest2.default)(function (err, args) { + var next = (0, _baseRest2.default)(function (err, args) { if (err) return callback(err); if (test()) return iteratee(next); callback.apply(null, [null].concat(args)); diff --git a/StockManMVC/node_modules/aws4/README.md b/StockManMVC/node_modules/aws4/README.md index 6c55da8..6b002d0 100644 --- a/StockManMVC/node_modules/aws4/README.md +++ b/StockManMVC/node_modules/aws4/README.md @@ -434,6 +434,15 @@ request(aws4.sign({ /* (HTTP 202, empty response) */ + +// Generate CodeCommit Git access password +var signer = new aws4.RequestSigner({ + service: 'codecommit', + host: 'git-codecommit.us-east-1.amazonaws.com', + method: 'GIT', + path: '/v1/repos/MyAwesomeRepo', +}) +var password = signer.getDateTime() + 'Z' + signer.signature() ``` API diff --git a/StockManMVC/node_modules/aws4/aws4.js b/StockManMVC/node_modules/aws4/aws4.js index cbe5dc9..a543180 100644 --- a/StockManMVC/node_modules/aws4/aws4.js +++ b/StockManMVC/node_modules/aws4/aws4.js @@ -52,6 +52,8 @@ function RequestSigner(request, credentials) { } if (!request.hostname && !request.host) request.hostname = headers.Host || headers.host + + this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT' } RequestSigner.prototype.matchHost = function(host) { @@ -109,7 +111,7 @@ RequestSigner.prototype.prepareRequest = function() { } else { - if (!request.doNotModifyHeaders) { + if (!request.doNotModifyHeaders && !this.isCodeCommitGit) { if (request.body && !headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' @@ -153,6 +155,9 @@ RequestSigner.prototype.getDateTime = function() { date = new Date(headers.Date || headers.date || new Date) this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '') + + // Remove the trailing 'Z' on the timestamp string for CodeCommit git access + if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1) } return this.datetime } @@ -202,8 +207,8 @@ RequestSigner.prototype.canonicalString = function() { decodePath = this.service === 's3' || this.request.doNotEncodePath, decodeSlashesInPath = this.service === 's3', firstValOnly = this.service === 's3', - bodyHash = this.service === 's3' && this.request.signQuery ? - 'UNSIGNED-PAYLOAD' : hash(this.request.body || '', 'hex') + bodyHash = this.service === 's3' && this.request.signQuery ? 'UNSIGNED-PAYLOAD' : + (this.isCodeCommitGit ? '' : hash(this.request.body || '', 'hex')) if (query) { queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) { diff --git a/StockManMVC/node_modules/aws4/package.json b/StockManMVC/node_modules/aws4/package.json index 63d1c50..c0231f6 100644 --- a/StockManMVC/node_modules/aws4/package.json +++ b/StockManMVC/node_modules/aws4/package.json @@ -6,19 +6,19 @@ ] ], "_from": "aws4@>=1.2.1-0 <2.0.0-0", - "_id": "aws4@1.4.1", + "_id": "aws4@1.5.0", "_inCache": true, "_location": "/aws4", - "_nodeVersion": "4.4.3", + "_nodeVersion": "4.5.0", "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/aws4-1.4.1.tgz_1462643218465_0.6527479749638587" + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/aws4-1.5.0.tgz_1476226259635_0.2796843808609992" }, "_npmUser": { "email": "michael.hart.au@gmail.com", "name": "hichaelmart" }, - "_npmVersion": "2.15.4", + "_npmVersion": "2.15.11", "_phantomChildren": {}, "_requested": { "name": "aws4", @@ -31,8 +31,8 @@ "_requiredBy": [ "/request" ], - "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "_shasum": "fde7d5292466d230e5ee0f4e038d9dfaab08fc61", + "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz", + "_shasum": "0a29ffb79c31c9e712eeb087e8e7a64b4a56d755", "_shrinkwrap": null, "_spec": "aws4@^1.2.1", "_where": "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\node_modules\\request", @@ -52,10 +52,10 @@ }, "directories": {}, "dist": { - "shasum": "fde7d5292466d230e5ee0f4e038d9dfaab08fc61", - "tarball": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" + "shasum": "0a29ffb79c31c9e712eeb087e8e7a64b4a56d755", + "tarball": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz" }, - "gitHead": "f126d3ff80be1ddde0fc6b50bb51a7f199547e81", + "gitHead": "ba136334ee08884c6042c8578a22e376233eef34", "homepage": "https://github.com/mhart/aws4#readme", "installable": true, "keywords": [ @@ -127,5 +127,5 @@ "scripts": { "test": "mocha ./test/fast.js ./test/slow.js -b -t 100s -R list" }, - "version": "1.4.1" + "version": "1.5.0" } diff --git a/StockManMVC/node_modules/config-chain/package.json b/StockManMVC/node_modules/config-chain/package.json index 7f8dd4d..4f19e21 100644 --- a/StockManMVC/node_modules/config-chain/package.json +++ b/StockManMVC/node_modules/config-chain/package.json @@ -6,15 +6,19 @@ ] ], "_from": "config-chain@>=1.1.8-0 <1.2.0-0", - "_id": "config-chain@1.1.10", + "_id": "config-chain@1.1.11", "_inCache": true, "_location": "/config-chain", - "_nodeVersion": "5.3.0", + "_nodeVersion": "6.4.0", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/config-chain-1.1.11.tgz_1475546049061_0.23554040002636611" + }, "_npmUser": { "email": "dominic.tarr@gmail.com", "name": "dominictarr" }, - "_npmVersion": "3.3.12", + "_npmVersion": "3.9.3", "_phantomChildren": {}, "_requested": { "name": "config-chain", @@ -27,8 +31,8 @@ "_requiredBy": [ "/npmconf" ], - "_resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz", - "_shasum": "7fc383de0fcc84d711cb465bd176579cad612346", + "_resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "_shasum": "aba09747dfbe4c3e70e766a6e41586e1859fc6f2", "_shrinkwrap": null, "_spec": "config-chain@~1.1.8", "_where": "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\node_modules\\npmconf", @@ -50,10 +54,10 @@ }, "directories": {}, "dist": { - "shasum": "7fc383de0fcc84d711cb465bd176579cad612346", - "tarball": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz" + "shasum": "aba09747dfbe4c3e70e766a6e41586e1859fc6f2", + "tarball": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz" }, - "gitHead": "0b6db3e14b9cdbe31460292bc4caf3983f977816", + "gitHead": "0976c33f2f126a060a289284bb031a5f7aeba329", "homepage": "http://github.com/dominictarr/config-chain", "installable": true, "licenses": [ @@ -81,5 +85,5 @@ "scripts": { "test": "tap test/" }, - "version": "1.1.10" + "version": "1.1.11" } diff --git a/StockManMVC/node_modules/config-chain/readme.markdown b/StockManMVC/node_modules/config-chain/readme.markdown index c83a430..a8d2637 100644 --- a/StockManMVC/node_modules/config-chain/readme.markdown +++ b/StockManMVC/node_modules/config-chain/readme.markdown @@ -2,6 +2,15 @@ USE THIS MODULE TO LOAD ALL YOUR CONFIGURATIONS +## NOTE: Feature Freeze + +[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) + +This module is frozen. + +In general, I'd recommend using [rc](https://github.com/dominictarr/rc) instead, +but as [npm](https://github.com/npmjs/npm) depends on this, it cannot be changed. + ``` js //npm install config-chain diff --git a/StockManMVC/node_modules/lodash/README.md b/StockManMVC/node_modules/lodash/README.md index 9fe97d8..72b66b2 100644 --- a/StockManMVC/node_modules/lodash/README.md +++ b/StockManMVC/node_modules/lodash/README.md @@ -1,4 +1,4 @@ -# lodash v4.16.2 +# lodash v4.16.4 The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules. @@ -28,12 +28,12 @@ var at = require('lodash/at'); var curryN = require('lodash/fp/curryN'); ``` -See the [package source](https://github.com/lodash/lodash/tree/4.16.2-npm) for more details. +See the [package source](https://github.com/lodash/lodash/tree/4.16.4-npm) for more details. **Note:**
Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL. ## Support -Tested in Chrome 52-53, Firefox 47-48, IE 11, Edge 14, Safari 9-10, Node.js 4-6, & PhantomJS 2.1.1.
+Tested in Chrome 52-53, Firefox 48-49, IE 11, Edge 14, Safari 9-10, Node.js 4-6, & PhantomJS 2.1.1.
Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. diff --git a/StockManMVC/node_modules/lodash/_arrayLikeKeys.js b/StockManMVC/node_modules/lodash/_arrayLikeKeys.js index 0cb3b18..b2ec9ce 100644 --- a/StockManMVC/node_modules/lodash/_arrayLikeKeys.js +++ b/StockManMVC/node_modules/lodash/_arrayLikeKeys.js @@ -1,7 +1,9 @@ var baseTimes = require('./_baseTimes'), isArguments = require('./isArguments'), isArray = require('./isArray'), - isIndex = require('./_isIndex'); + isBuffer = require('./isBuffer'), + isIndex = require('./_isIndex'), + isTypedArray = require('./isTypedArray'); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -18,18 +20,26 @@ var hasOwnProperty = objectProto.hasOwnProperty; * @returns {Array} Returns the array of property names. */ function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; for (var key in value) { if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { result.push(key); } } diff --git a/StockManMVC/node_modules/lodash/_arraySampleSize.js b/StockManMVC/node_modules/lodash/_arraySampleSize.js index 9a9c017..8c7e364 100644 --- a/StockManMVC/node_modules/lodash/_arraySampleSize.js +++ b/StockManMVC/node_modules/lodash/_arraySampleSize.js @@ -1,4 +1,5 @@ -var copyArray = require('./_copyArray'), +var baseClamp = require('./_baseClamp'), + copyArray = require('./_copyArray'), shuffleSelf = require('./_shuffleSelf'); /** @@ -10,7 +11,7 @@ var copyArray = require('./_copyArray'), * @returns {Array} Returns the random elements. */ function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), n); + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); } module.exports = arraySampleSize; diff --git a/StockManMVC/node_modules/lodash/_assignMergeValue.js b/StockManMVC/node_modules/lodash/_assignMergeValue.js index fe89875..cb1185e 100644 --- a/StockManMVC/node_modules/lodash/_assignMergeValue.js +++ b/StockManMVC/node_modules/lodash/_assignMergeValue.js @@ -12,7 +12,7 @@ var baseAssignValue = require('./_baseAssignValue'), */ function assignMergeValue(object, key, value) { if ((value !== undefined && !eq(object[key], value)) || - (typeof key == 'number' && value === undefined && !(key in object))) { + (value === undefined && !(key in object))) { baseAssignValue(object, key, value); } } diff --git a/StockManMVC/node_modules/lodash/_baseAssignValue.js b/StockManMVC/node_modules/lodash/_baseAssignValue.js index 0a93745..d6f66ef 100644 --- a/StockManMVC/node_modules/lodash/_baseAssignValue.js +++ b/StockManMVC/node_modules/lodash/_baseAssignValue.js @@ -1,5 +1,4 @@ -/** Built-in value references. */ -var defineProperty = Object.defineProperty; +var defineProperty = require('./_defineProperty'); /** * The base implementation of `assignValue` and `assignMergeValue` without diff --git a/StockManMVC/node_modules/lodash/_baseClone.js b/StockManMVC/node_modules/lodash/_baseClone.js index 8ac0fec..22ff841 100644 --- a/StockManMVC/node_modules/lodash/_baseClone.js +++ b/StockManMVC/node_modules/lodash/_baseClone.js @@ -118,9 +118,7 @@ function baseClone(value, isDeep, isFull, customizer, key, object, stack) { } stack.set(value, result); - if (!isArr) { - var props = isFull ? getAllKeys(value) : keys(value); - } + var props = isArr ? undefined : (isFull ? getAllKeys : keys)(value); arrayEach(props || value, function(subValue, key) { if (props) { key = subValue; diff --git a/StockManMVC/node_modules/lodash/_baseCreate.js b/StockManMVC/node_modules/lodash/_baseCreate.js index 81aa206..ffa6a52 100644 --- a/StockManMVC/node_modules/lodash/_baseCreate.js +++ b/StockManMVC/node_modules/lodash/_baseCreate.js @@ -20,7 +20,7 @@ var baseCreate = (function() { if (objectCreate) { return objectCreate(proto); } - object.prototype = prototype; + object.prototype = proto; var result = new object; object.prototype = undefined; return result; diff --git a/StockManMVC/node_modules/lodash/_baseIsArguments.js b/StockManMVC/node_modules/lodash/_baseIsArguments.js new file mode 100644 index 0000000..a176e18 --- /dev/null +++ b/StockManMVC/node_modules/lodash/_baseIsArguments.js @@ -0,0 +1,27 @@ +var isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && objectToString.call(value) == argsTag; +} + +module.exports = baseIsArguments; diff --git a/StockManMVC/node_modules/lodash/_baseIsEqualDeep.js b/StockManMVC/node_modules/lodash/_baseIsEqualDeep.js index 8d9a49f..42dc03d 100644 --- a/StockManMVC/node_modules/lodash/_baseIsEqualDeep.js +++ b/StockManMVC/node_modules/lodash/_baseIsEqualDeep.js @@ -4,6 +4,7 @@ var Stack = require('./_Stack'), equalObjects = require('./_equalObjects'), getTag = require('./_getTag'), isArray = require('./isArray'), + isBuffer = require('./isBuffer'), isTypedArray = require('./isTypedArray'); /** Used to compose bitmasks for comparison styles. */ @@ -53,6 +54,13 @@ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } if (isSameTag && !objIsObj) { stack || (stack = new Stack); return (objIsArr || isTypedArray(object)) diff --git a/StockManMVC/node_modules/lodash/_baseMerge.js b/StockManMVC/node_modules/lodash/_baseMerge.js index dfb4b15..f4cb8c6 100644 --- a/StockManMVC/node_modules/lodash/_baseMerge.js +++ b/StockManMVC/node_modules/lodash/_baseMerge.js @@ -1,11 +1,9 @@ var Stack = require('./_Stack'), - arrayEach = require('./_arrayEach'), assignMergeValue = require('./_assignMergeValue'), - baseKeysIn = require('./_baseKeysIn'), + baseFor = require('./_baseFor'), baseMergeDeep = require('./_baseMergeDeep'), - isArray = require('./isArray'), isObject = require('./isObject'), - isTypedArray = require('./isTypedArray'); + keysIn = require('./keysIn'); /** * The base implementation of `_.merge` without support for multiple sources. @@ -22,14 +20,7 @@ function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } - if (!(isArray(source) || isTypedArray(source))) { - var props = baseKeysIn(source); - } - arrayEach(props || source, function(srcValue, key) { - if (props) { - key = srcValue; - srcValue = source[key]; - } + baseFor(source, function(srcValue, key) { if (isObject(srcValue)) { stack || (stack = new Stack); baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); @@ -44,7 +35,7 @@ function baseMerge(object, source, srcIndex, customizer, stack) { } assignMergeValue(object, key, newValue); } - }); + }, keysIn); } module.exports = baseMerge; diff --git a/StockManMVC/node_modules/lodash/_baseMergeDeep.js b/StockManMVC/node_modules/lodash/_baseMergeDeep.js index 535c0d1..42b405a 100644 --- a/StockManMVC/node_modules/lodash/_baseMergeDeep.js +++ b/StockManMVC/node_modules/lodash/_baseMergeDeep.js @@ -1,9 +1,12 @@ var assignMergeValue = require('./_assignMergeValue'), - baseClone = require('./_baseClone'), + cloneBuffer = require('./_cloneBuffer'), + cloneTypedArray = require('./_cloneTypedArray'), copyArray = require('./_copyArray'), + initCloneObject = require('./_initCloneObject'), isArguments = require('./isArguments'), isArray = require('./isArray'), isArrayLikeObject = require('./isArrayLikeObject'), + isBuffer = require('./isBuffer'), isFunction = require('./isFunction'), isObject = require('./isObject'), isPlainObject = require('./isPlainObject'), @@ -41,29 +44,37 @@ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, sta var isCommon = newValue === undefined; if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; - if (isArray(srcValue) || isTypedArray(srcValue)) { + if (isArr || isBuff || isTyped) { if (isArray(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); } - else { + else if (isBuff) { isCommon = false; - newValue = baseClone(srcValue, true); + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); } else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - isCommon = false; - newValue = baseClone(srcValue, true); - } - else { - newValue = objValue; + newValue = initCloneObject(srcValue); } } else { diff --git a/StockManMVC/node_modules/lodash/_baseSampleSize.js b/StockManMVC/node_modules/lodash/_baseSampleSize.js index 638215d..5c90ec5 100644 --- a/StockManMVC/node_modules/lodash/_baseSampleSize.js +++ b/StockManMVC/node_modules/lodash/_baseSampleSize.js @@ -1,4 +1,5 @@ -var shuffleSelf = require('./_shuffleSelf'), +var baseClamp = require('./_baseClamp'), + shuffleSelf = require('./_shuffleSelf'), values = require('./values'); /** @@ -10,7 +11,8 @@ var shuffleSelf = require('./_shuffleSelf'), * @returns {Array} Returns the random elements. */ function baseSampleSize(collection, n) { - return shuffleSelf(values(collection), n); + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); } module.exports = baseSampleSize; diff --git a/StockManMVC/node_modules/lodash/_baseSetToString.js b/StockManMVC/node_modules/lodash/_baseSetToString.js index 224a65a..89eaca3 100644 --- a/StockManMVC/node_modules/lodash/_baseSetToString.js +++ b/StockManMVC/node_modules/lodash/_baseSetToString.js @@ -1,6 +1,6 @@ var constant = require('./constant'), - identity = require('./identity'), - nativeDefineProperty = require('./_nativeDefineProperty'); + defineProperty = require('./_defineProperty'), + identity = require('./identity'); /** * The base implementation of `setToString` without support for hot loop shorting. @@ -10,8 +10,8 @@ var constant = require('./constant'), * @param {Function} string The `toString` result. * @returns {Function} Returns `func`. */ -var baseSetToString = !nativeDefineProperty ? identity : function(func, string) { - return nativeDefineProperty(func, 'toString', { +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { 'configurable': true, 'enumerable': false, 'value': constant(string), diff --git a/StockManMVC/node_modules/lodash/_baseToString.js b/StockManMVC/node_modules/lodash/_baseToString.js index 462e26f..ada6ad2 100644 --- a/StockManMVC/node_modules/lodash/_baseToString.js +++ b/StockManMVC/node_modules/lodash/_baseToString.js @@ -1,4 +1,6 @@ var Symbol = require('./_Symbol'), + arrayMap = require('./_arrayMap'), + isArray = require('./isArray'), isSymbol = require('./isSymbol'); /** Used as references for various `Number` constants. */ @@ -21,6 +23,10 @@ function baseToString(value) { if (typeof value == 'string') { return value; } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } diff --git a/StockManMVC/node_modules/lodash/_defineProperty.js b/StockManMVC/node_modules/lodash/_defineProperty.js new file mode 100644 index 0000000..b6116d9 --- /dev/null +++ b/StockManMVC/node_modules/lodash/_defineProperty.js @@ -0,0 +1,11 @@ +var getNative = require('./_getNative'); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; diff --git a/StockManMVC/node_modules/lodash/_nativeDefineProperty.js b/StockManMVC/node_modules/lodash/_nativeDefineProperty.js deleted file mode 100644 index 38ed486..0000000 --- a/StockManMVC/node_modules/lodash/_nativeDefineProperty.js +++ /dev/null @@ -1,6 +0,0 @@ -var getNative = require('./_getNative'); - -/* Built-in method references that are verified to be native. */ -var nativeDefineProperty = getNative(Object, 'defineProperty'); - -module.exports = nativeDefineProperty; diff --git a/StockManMVC/node_modules/lodash/_shuffleSelf.js b/StockManMVC/node_modules/lodash/_shuffleSelf.js index 1b62295..8bcc4f5 100644 --- a/StockManMVC/node_modules/lodash/_shuffleSelf.js +++ b/StockManMVC/node_modules/lodash/_shuffleSelf.js @@ -1,5 +1,4 @@ -var baseClamp = require('./_baseClamp'), - baseRandom = require('./_baseRandom'); +var baseRandom = require('./_baseRandom'); /** * A specialized version of `_.shuffle` which mutates and sets the size of `array`. @@ -14,7 +13,7 @@ function shuffleSelf(array, size) { length = array.length, lastIndex = length - 1; - size = size === undefined ? length : baseClamp(size, 0, length); + size = size === undefined ? length : size; while (++index < size) { var rand = baseRandom(index, lastIndex), value = array[rand]; diff --git a/StockManMVC/node_modules/lodash/core.js b/StockManMVC/node_modules/lodash/core.js index 6b7641e..c891e78 100644 --- a/StockManMVC/node_modules/lodash/core.js +++ b/StockManMVC/node_modules/lodash/core.js @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.16.2'; + var VERSION = '4.16.4'; /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -40,6 +40,7 @@ genTag = '[object GeneratorFunction]', numberTag = '[object Number]', objectTag = '[object Object]', + proxyTag = '[object Proxy]', regexpTag = '[object RegExp]', stringTag = '[object String]'; @@ -369,7 +370,7 @@ if (objectCreate) { return objectCreate(proto); } - object.prototype = prototype; + object.prototype = proto; var result = new object; object.prototype = undefined; return result; @@ -622,6 +623,15 @@ return value > other; } + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + var baseIsArguments = noop; + /** * The base implementation of `_.isDate` without Node.js optimizations. * @@ -2433,11 +2443,10 @@ * _.isArguments([1, 2, 3]); * // => false */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; /** * Checks if `value` is classified as an `Array` object. @@ -2493,35 +2502,6 @@ return value != null && isLength(value.length) && !isFunction(value); } - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - /** * Checks if `value` is classified as a boolean primitive or object. * @@ -2686,9 +2666,9 @@ */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. + // in Safari 9 which returns 'object' for typed array and other constructors. var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + return tag == funcTag || tag == genTag || tag == proxyTag; } /** @@ -3020,8 +3000,8 @@ * @memberOf _ * @since 4.0.0 * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. * @example * * _.toString(null); diff --git a/StockManMVC/node_modules/lodash/core.min.js b/StockManMVC/node_modules/lodash/core.min.js index f0d1cf2..c1fb1cd 100644 --- a/StockManMVC/node_modules/lodash/core.min.js +++ b/StockManMVC/node_modules/lodash/core.min.js @@ -3,27 +3,27 @@ * lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE * Build: `lodash core -o ./dist/lodash.core.js` */ -;(function(){function n(n,t){return n.push.apply(n,t),n}function t(n){return function(t){return null==t?nn:t[n]}}function r(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function e(n,t){return j(t,function(t){return n[t]})}function u(n){return n instanceof o?n:new o(n)}function o(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function i(n,t,r,e){return n===nn||M(n,ln[r])&&!pn.call(e,r)?t:n}function c(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function"); -return setTimeout(function(){n.apply(nn,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(n,t,r){for(var e=-1,u=n.length;++et}function y(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!K(t)?n!==n&&t!==t:b(n,t,y,r,e,u))}function b(n,t,r,e,u,o){var i=Sn(n),c=Sn(t),f="[object Array]",a="[object Array]";i||(f=hn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=hn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]);var p=En(o,function(t){return t[0]==n}),s=En(o,function(n){ -return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=F(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=M(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t, -r=r(i,f,e,u,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?Y:(typeof n=="object"?d:t)(n)}function _(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:nn;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn)}function J(n,t){ -var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Tn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=nn),r}}function M(n,t){return n===t||n!==n&&t!==t}function P(n){return K(n)&&U(n)&&pn.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==hn.call(n))}function U(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!V(n)}function V(n){return n=H(n)?hn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n; -}function H(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function K(n){return null!=n&&typeof n=="object"}function L(n){return typeof n=="number"||K(n)&&"[object Number]"==hn.call(n)}function Q(n){return typeof n=="string"||!Sn(n)&&K(n)&&"[object String]"==hn.call(n)}function W(n){return typeof n=="string"?n:null==n?"":n+""}function X(n){return n?e(n,qn(n)):[]}function Y(n){return n}function Z(t,r,e){var u=qn(r),o=h(r,u);null!=e||H(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=h(r,qn(r))); -var i=!(H(e)&&"chain"in e&&!e.chain),c=V(t);return mn(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var nn,tn=1/0,rn=/[&<>"']/g,en=RegExp(rn.source),un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ -return function(t){return null==n?nn:n[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,yn=Object.create,bn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return H(t)?yn?yn(t):(n.prototype=prototype,t=new n,n.prototype=nn,t):{}}}();o.prototype=dn(u.prototype),o.prototype.constructor=o; -var mn=function(n,t){return function(r,e){if(null==r)return r;if(!U(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&rt}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!K(t)?n!==n&&t!==t:g(n,t,b,r,e,u))}function g(n,t,r,e,u,o){var i=Sn(n),c=Sn(t),f="[object Array]",a="[object Array]";i||(f=hn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=hn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]); +var p=En(o,function(t){return t[0]==n}),s=En(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=M(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o), +o.pop(),r):(i=i?n.value():n,f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?Y:(typeof n=="object"?m:r)(n)}function j(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:nn;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn); +}function J(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Tn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=nn),r}}function M(n,t){return n===t||n!==n&&t!==t}function U(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!V(n)}function V(n){return n=H(n)?hn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n||"[object Proxy]"==n}function H(n){var t=typeof n;return null!=n&&("object"==t||"function"==t); +}function K(n){return null!=n&&typeof n=="object"}function L(n){return typeof n=="number"||K(n)&&"[object Number]"==hn.call(n)}function Q(n){return typeof n=="string"||!Sn(n)&&K(n)&&"[object String]"==hn.call(n)}function W(n){return typeof n=="string"?n:null==n?"":n+""}function X(n){return n?u(n,qn(n)):[]}function Y(n){return n}function Z(n,r,e){var u=qn(r),o=v(r,u);null!=e||H(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=v(r,qn(r)));var i=!(H(e)&&"chain"in e&&!e.chain),c=V(n);return mn(o,function(e){ +var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=E(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var nn,tn=1/0,rn=/[&<>"']/g,en=RegExp(rn.source),un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ +return function(t){return null==n?nn:n[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,yn=Object.create,bn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return H(t)?yn?yn(t):(n.prototype=t,t=new n,n.prototype=nn,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i; +var mn=function(n,t){return function(r,e){if(null==r)return r;if(!U(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=jn(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r false */ -function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); -} +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; module.exports = isArguments; diff --git a/StockManMVC/node_modules/lodash/isEmpty.js b/StockManMVC/node_modules/lodash/isEmpty.js index 4bee455..e190425 100644 --- a/StockManMVC/node_modules/lodash/isEmpty.js +++ b/StockManMVC/node_modules/lodash/isEmpty.js @@ -1,10 +1,11 @@ -var getTag = require('./_getTag'), +var baseKeys = require('./_baseKeys'), + getTag = require('./_getTag'), isArguments = require('./isArguments'), isArray = require('./isArray'), isArrayLike = require('./isArrayLike'), isBuffer = require('./isBuffer'), isPrototype = require('./_isPrototype'), - nativeKeys = require('./_nativeKeys'); + isTypedArray = require('./isTypedArray'); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -51,8 +52,8 @@ var hasOwnProperty = objectProto.hasOwnProperty; */ function isEmpty(value) { if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || - typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) { + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { return !value.length; } var tag = getTag(value); @@ -60,7 +61,7 @@ function isEmpty(value) { return !value.size; } if (isPrototype(value)) { - return !nativeKeys(value).length; + return !baseKeys(value).length; } for (var key in value) { if (hasOwnProperty.call(value, key)) { diff --git a/StockManMVC/node_modules/lodash/isFunction.js b/StockManMVC/node_modules/lodash/isFunction.js index f1d440b..17ccf32 100644 --- a/StockManMVC/node_modules/lodash/isFunction.js +++ b/StockManMVC/node_modules/lodash/isFunction.js @@ -2,7 +2,8 @@ var isObject = require('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]'; + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -33,9 +34,9 @@ var objectToString = objectProto.toString; */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. + // in Safari 9 which returns 'object' for typed array and other constructors. var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + return tag == funcTag || tag == genTag || tag == proxyTag; } module.exports = isFunction; diff --git a/StockManMVC/node_modules/lodash/lodash.js b/StockManMVC/node_modules/lodash/lodash.js index 0944c4c..361e74d 100644 --- a/StockManMVC/node_modules/lodash/lodash.js +++ b/StockManMVC/node_modules/lodash/lodash.js @@ -12,7 +12,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.16.2'; + var VERSION = '4.16.4'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -95,6 +95,7 @@ numberTag = '[object Number]', objectTag = '[object Object]', promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', @@ -1469,7 +1470,6 @@ Symbol = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - defineProperty = Object.defineProperty, getPrototype = overArg(Object.getPrototypeOf, Object), iteratorSymbol = Symbol ? Symbol.iterator : undefined, objectCreate = Object.create, @@ -1477,6 +1477,14 @@ splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + /** Mocked built-ins. */ var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date && Date.now !== root.Date.now && Date.now, @@ -1503,8 +1511,7 @@ Promise = getNative(context, 'Promise'), Set = getNative(context, 'Set'), WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'), - nativeDefineProperty = getNative(Object, 'defineProperty'); + nativeCreate = getNative(Object, 'create'); /** Used to store function metadata. */ var metaMap = WeakMap && new WeakMap; @@ -1672,7 +1679,7 @@ if (objectCreate) { return objectCreate(proto); } - object.prototype = prototype; + object.prototype = proto; var result = new object; object.prototype = undefined; return result; @@ -2380,18 +2387,26 @@ * @returns {Array} Returns the array of property names. */ function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; for (var key in value) { if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { result.push(key); } } @@ -2419,7 +2434,7 @@ * @returns {Array} Returns the random elements. */ function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), n); + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); } /** @@ -2462,7 +2477,7 @@ */ function assignMergeValue(object, key, value) { if ((value !== undefined && !eq(object[key], value)) || - (typeof key == 'number' && value === undefined && !(key in object))) { + (value === undefined && !(key in object))) { baseAssignValue(object, key, value); } } @@ -2655,9 +2670,7 @@ } stack.set(value, result); - if (!isArr) { - var props = isFull ? getAllKeys(value) : keys(value); - } + var props = isArr ? undefined : (isFull ? getAllKeys : keys)(value); arrayEach(props || value, function(subValue, key) { if (props) { key = subValue; @@ -3191,6 +3204,17 @@ return func == null ? undefined : apply(func, object, args); } + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && objectToString.call(value) == argsTag; + } + /** * The base implementation of `_.isArrayBuffer` without Node.js optimizations. * @@ -3271,6 +3295,13 @@ othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } if (isSameTag && !objIsObj) { stack || (stack = new Stack); return (objIsArr || isTypedArray(object)) @@ -3560,14 +3591,7 @@ if (object === source) { return; } - if (!(isArray(source) || isTypedArray(source))) { - var props = baseKeysIn(source); - } - arrayEach(props || source, function(srcValue, key) { - if (props) { - key = srcValue; - srcValue = source[key]; - } + baseFor(source, function(srcValue, key) { if (isObject(srcValue)) { stack || (stack = new Stack); baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); @@ -3582,7 +3606,7 @@ } assignMergeValue(object, key, newValue); } - }); + }, keysIn); } /** @@ -3616,29 +3640,37 @@ var isCommon = newValue === undefined; if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; - if (isArray(srcValue) || isTypedArray(srcValue)) { + if (isArr || isBuff || isTyped) { if (isArray(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); } - else { + else if (isBuff) { isCommon = false; - newValue = baseClone(srcValue, true); + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); } else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - isCommon = false; - newValue = baseClone(srcValue, true); - } - else { - newValue = objValue; + newValue = initCloneObject(srcValue); } } else { @@ -3920,7 +3952,8 @@ * @returns {Array} Returns the random elements. */ function baseSampleSize(collection, n) { - return shuffleSelf(values(collection), n); + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); } /** @@ -3984,8 +4017,8 @@ * @param {Function} string The `toString` result. * @returns {Function} Returns `func`. */ - var baseSetToString = !nativeDefineProperty ? identity : function(func, string) { - return nativeDefineProperty(func, 'toString', { + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { 'configurable': true, 'enumerable': false, 'value': constant(string), @@ -4197,6 +4230,10 @@ if (typeof value == 'string') { return value; } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } @@ -6592,7 +6629,7 @@ length = array.length, lastIndex = length - 1; - size = size === undefined ? length : baseClamp(size, 0, length); + size = size === undefined ? length : size; while (++index < size) { var rand = baseRandom(index, lastIndex), value = array[rand]; @@ -11165,11 +11202,10 @@ * _.isArguments([1, 2, 3]); * // => false */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; /** * Checks if `value` is classified as an `Array` object. @@ -11389,8 +11425,8 @@ */ function isEmpty(value) { if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || - typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) { + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { return !value.length; } var tag = getTag(value); @@ -11398,7 +11434,7 @@ return !value.size; } if (isPrototype(value)) { - return !nativeKeys(value).length; + return !baseKeys(value).length; } for (var key in value) { if (hasOwnProperty.call(value, key)) { @@ -11553,9 +11589,9 @@ */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. + // in Safari 9 which returns 'object' for typed array and other constructors. var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + return tag == funcTag || tag == genTag || tag == proxyTag; } /** @@ -12443,8 +12479,8 @@ * @memberOf _ * @since 4.0.0 * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. * @example * * _.toString(null); @@ -13628,22 +13664,23 @@ * // => { '1': ['a', 'c'], '2': ['b'] } */ function transform(object, iteratee, accumulator) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = getIteratee(iteratee, 4); + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + iteratee = getIteratee(iteratee, 4); if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - } else { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { accumulator = {}; } } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { return iteratee(accumulator, value, index, object); }); return accumulator; diff --git a/StockManMVC/node_modules/lodash/lodash.min.js b/StockManMVC/node_modules/lodash/lodash.min.js index 6534ae3..4bf932b 100644 --- a/StockManMVC/node_modules/lodash/lodash.min.js +++ b/StockManMVC/node_modules/lodash/lodash.min.js @@ -17,116 +17,118 @@ t:{try{Mt=Kt&&Kt.g("util");break t}catch(t){}Mt=void 0}var Gt=Mt&&Mt.isArrayBuff "\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i", "\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S", "\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n", -"\u017f":"s"}),rn=w({"&":"&","<":"<",">":">",'"':""","'":"'"}),en=w({"&":"&","<":"<",">":">",""":'"',"'":"'"}),un=function w(kt){function Et(t){return oi.call(t)}function Ot(t){if(_u(t)&&!tf(t)&&!(t instanceof Dt)){if(t instanceof Mt)return t;if(ei.call(t,"__wrapped__"))return Ce(t)}return new Mt(t)}function Rt(){}function Mt(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=F}function Dt(t){this.__wrapped__=t,this.__actions__=[], +"\u017f":"s"}),rn=w({"&":"&","<":"<",">":">",'"':""","'":"'"}),en=w({"&":"&","<":"<",">":">",""":'"',"'":"'"}),un=function w(kt){function Et(t){return fi.call(t)}function Ot(t){if(vu(t)&&!nf(t)&&!(t instanceof Dt)){if(t instanceof Mt)return t;if(ui.call(t,"__wrapped__"))return De(t)}return new Mt(t)}function Rt(){}function Mt(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=F}function Dt(t){this.__wrapped__=t,this.__actions__=[], this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Ft(t){var n=-1,r=t?t.length:0;for(this.clear();++n=n?t:n)),t}function yn(t,n,r,e,i,o,f){var c;if(e&&(c=o?e(t,i,o,f):e(t)), -c!==F)return c;if(!pu(t))return t;if(i=tf(t)){if(c=de(t),!n)return Ur(t,c)}else{var a=Et(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(rf(t))return Rr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!o){if(c=ye(l?{}:t),!n)return Mr(t,_n(c,t))}else{if(!Ct[a])return o?t:{};c=be(t,a,yn,n)}}if(f||(f=new Kt),o=f.get(t))return o;if(f.set(t,c),!i)var s=r?zn(t,Su,ao):Su(t);return u(s||t,function(u,i){s&&(i=u,u=t[i]),sn(c,i,yn(u,n,r,e,i,t,f))}),c}function bn(t){var n=Su(t);return function(r){ -return xn(r,t,n)}}function xn(t,n,r){var e=r.length;if(null==t)return!e;for(t=Gu(t);e--;){var u=r[e],i=n[u],o=t[u];if(o===F&&!(u in t)||!i(o))return false}return true}function jn(t,n,r){if(typeof t!="function")throw new Hu("Expected a function");return po(function(){t.apply(F,r)},n)}function wn(t,n,r,e){var u=-1,i=c,o=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(i=a,o=false):200<=n.length&&(i=R,o=false,n=new qt(n));t:for(;++un}function Bn(t,n){return null!=t&&ei.call(t,n)}function Ln(t,n){return null!=t&&n in Gu(t)}function Un(t,n,r){for(var e=r?a:c,u=t[0].length,i=t.length,o=i,f=Pu(i),s=1/0,h=[];o--;){var p=t[o];o&&n&&(p=l(p,S(n))),s=zi(p.length,s), -f[o]=!r&&(n||120<=u&&120<=p.length)?new qt(o&&p):F}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,je(n,r)?t[n]:F}function rr(t,n,r){var e=-1;return n=l(n.length?n:[Cu],S(he())),t=Hn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t -}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,i=n.a,o=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function er(t,n){return t=Gu(t),ur(t,n,function(n,r){return r in t})}function ur(t,n,r){for(var e=-1,u=n.length,i={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Pu(u);++e=u){for(;e>>1,o=t[i];null!==o&&!yu(o)&&(r?o<=n:o=e?t:vr(t,n,r)}function Rr(t,n){if(n)return t.slice();var r=t.length,r=hi?hi(r):new t.constructor(r);return t.copy(r),r}function zr(t){var n=new t.constructor(t.byteLength);return new si(n).set(new si(t)),n}function Wr(t,n){if(t!==n){var r=t!==F,e=null===t,u=t===t,i=yu(t),o=n!==F,f=null===n,c=n===n,a=yu(n);if(!f&&!a&&!i&&t>n||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&tu?F:i,u=1),n=Gu(n);++eo&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,or?r?ar(n,t):n:(r=ar(n,mi(t/T(n))),Wt.test(n)?Ir($(r),0,t).join(""):r.slice(0,t)); -}function te(t,n,e,u){function i(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Pu(l+c),h=this&&this!==Pt&&this instanceof i?f:t;++an||e)&&(1&t&&(i[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]), -(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&t&&(i[8]=null==i[8]?h[8]:zi(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=n),t=i[0],n=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=null==i[9]?c?0:t.length:Ri(i[9]-a,0),!f&&24&n&&(n&=-25),Re((h?uo:ho)(n&&1!=n?8==n||16==n?Vr(t,n,f):32!=n&&33!=n||u.length?Jr.apply(F,i):te(t,n,r,e):Nr(t,n,r),i),t,n)}function fe(t,n,r,e,u,i){var o=2&u,f=t.length,c=n.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(t))&&i.get(n))return c==n; -var c=-1,a=true,l=1&u?new qt:F;for(i.set(t,n),i.set(n,t);++cr&&(r=Ri(e+r,0)),g(t,he(n,3),r)):-1}function De(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==F&&(u=ju(r),u=0>r?Ri(e+u,0):zi(u,e-1)),g(t,he(n,3),u,true)}function Te(t){return t&&t.length?En(t,1):[]}function $e(t){return t&&t.length?t[0]:F}function Fe(t){var n=t?t.length:0;return n?t[n-1]:F}function Ne(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function Pe(t){return t?Ui.call(t):t}function Ze(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(cu(t))return n=Ri(t.length,n), -!0}),E(n,function(n){return l(t,j(n))})}function qe(t,n){if(!t||!t.length)return[];var e=Ze(t);return null==n?e:l(e,function(t){return r(n,F,t)})}function Ve(t){return t=Ot(t),t.__chain__=true,t}function Ke(t,n){return n(t)}function Ge(){return this}function Je(t,n){return(tf(t)?u:to)(t,he(n,3))}function Ye(t,n){return(tf(t)?i:no)(t,he(n,3))}function He(t,n){return(tf(t)?l:Hn)(t,he(n,3))}function Qe(t,n,r){return n=r?F:n,n=t&&null==n?t.length:n,oe(t,128,F,F,F,F,n)}function Xe(t,n){var r;if(typeof n!="function")throw new Hu("Expected a function"); -return t=ju(t),function(){return 0<--t&&(r=n.apply(this,arguments)),1>=t&&(n=F),r}}function tu(t,n,r){return n=r?F:n,t=oe(t,8,F,F,F,F,F,n),t.placeholder=tu.placeholder,t}function nu(t,n,r){return n=r?F:n,t=oe(t,16,F,F,F,F,F,n),t.placeholder=nu.placeholder,t}function ru(t,n,r){function e(n){var r=c,e=a;return c=a=F,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===F||r>=n||0>r||g&&t>=l}function i(){var t=Po();if(u(t))return o(t);var r,e=po;r=t-_,t=n-(t-p),r=g?zi(t,l-r):t,h=e(i,r)}function o(t){ -return h=F,d&&c?e(t):(c=a=F,s)}function f(){var t=Po(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===F)return _=t=p,h=po(i,n),v?e(t):s;if(g)return h=po(i,n),e(p)}return h===F&&(h=po(i,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Hu("Expected a function");return n=mu(n)||0,pu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Ri(mu(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&oo(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Po())},f}function eu(t,n){ -function r(){var e=arguments,u=n?n.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=t.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof t!="function"||n&&typeof n!="function")throw new Hu("Expected a function");return r.cache=new(eu.Cache||Zt),r}function uu(t){if(typeof t!="function")throw new Hu("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2]); -}return!t.apply(this,n)}}function iu(t,n){return t===n||t!==t&&n!==n}function ou(t){return cu(t)&&ei.call(t,"callee")&&(!di.call(t,"callee")||"[object Arguments]"==oi.call(t))}function fu(t){return null!=t&&hu(t.length)&&!lu(t)}function cu(t){return _u(t)&&fu(t)}function au(t){return!!_u(t)&&("[object Error]"==oi.call(t)||typeof t.message=="string"&&typeof t.name=="string")}function lu(t){return t=pu(t)?oi.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function su(t){return typeof t=="number"&&t==ju(t); -}function hu(t){return typeof t=="number"&&-1=t}function pu(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function _u(t){return null!=t&&typeof t=="object"}function vu(t){return typeof t=="number"||_u(t)&&"[object Number]"==oi.call(t)}function gu(t){return!(!_u(t)||"[object Object]"!=oi.call(t))&&(t=_i(t),null===t||(t=ei.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&ri.call(t)==ii))}function du(t){return typeof t=="string"||!tf(t)&&_u(t)&&"[object String]"==oi.call(t); -}function yu(t){return typeof t=="symbol"||_u(t)&&"[object Symbol]"==oi.call(t)}function bu(t){if(!t)return[];if(fu(t))return du(t)?$(t):Ur(t);if(vi&&t[vi]){t=t[vi]();for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}return n=Et(t),("[object Map]"==n?L:"[object Set]"==n?M:zu)(t)}function xu(t){return t?(t=mu(t),t===N||t===-N?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function ju(t){t=xu(t);var n=t%1;return t===t?n?t-n:t:0}function wu(t){return t?dn(ju(t),0,4294967295):0}function mu(t){ -if(typeof t=="number")return t;if(yu(t))return P;if(pu(t)&&(t=typeof t.valueOf=="function"?t.valueOf():t,t=pu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ft,"");var n=yt.test(t);return n||xt.test(t)?$t(t.slice(2),n?2:8):dt.test(t)?P:+t}function Au(t){return Cr(t,Iu(t))}function ku(t){return null==t?"":jr(t)}function Eu(t,n,r){return t=null==t?F:Rn(t,n),t===F?r:t}function Ou(t,n){return null!=t&&ge(t,n,Ln)}function Su(t){return fu(t)?tn(t):Gn(t)}function Iu(t){return fu(t)?tn(t,true):Jn(t); -}function Ru(t,n){return null==t?{}:ur(t,zn(t,Iu,lo),he(n))}function zu(t){return t?I(t,Su(t)):[]}function Wu(t){return Lf(ku(t).toLowerCase())}function Bu(t){return(t=ku(t))&&t.replace(wt,nn).replace(It,"")}function Lu(t,n,r){return t=ku(t),n=r?F:n,n===F?Bt.test(t)?t.match(zt)||[]:t.match(pt)||[]:t.match(n)||[]}function Uu(t){return function(){return t}}function Cu(t){return t}function Mu(t){return Kn(typeof t=="function"?t:yn(t,true))}function Du(t,n,r){var e=Su(n),i=In(n,e);null!=r||pu(n)&&(i.length||!e.length)||(r=n, -n=t,t=this,i=In(n,Su(n)));var o=!(pu(r)&&"chain"in r&&!r.chain),f=lu(t);return u(i,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(o||n){var r=t(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function Tu(){}function $u(t){return me(t)?j(Be(t)):ir(t)}function Fu(){return[]}function Nu(){return false}kt=kt?un.defaults(Pt.Object(),kt,un.pick(Pt,Lt)):Pt; -var Pu=kt.Array,Zu=kt.Date,qu=kt.Error,Vu=kt.Function,Ku=kt.Math,Gu=kt.Object,Ju=kt.RegExp,Yu=kt.String,Hu=kt.TypeError,Qu=Pu.prototype,Xu=Gu.prototype,ti=kt["__core-js_shared__"],ni=function(){var t=/[^.]+$/.exec(ti&&ti.keys&&ti.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),ri=Vu.prototype.toString,ei=Xu.hasOwnProperty,ui=0,ii=ri.call(Gu),oi=Xu.toString,fi=Pt._,ci=Ju("^"+ri.call(ei).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ai=Vt?kt.Buffer:F,li=kt.Symbol,si=kt.Uint8Array,hi=ai?ai.f:F,pi=Gu.defineProperty,_i=U(Gu.getPrototypeOf,Gu),vi=li?li.iterator:F,gi=Gu.create,di=Xu.propertyIsEnumerable,yi=Qu.splice,bi=li?li.isConcatSpreadable:F,xi=kt.clearTimeout!==Pt.clearTimeout&&kt.clearTimeout,ji=Zu&&Zu.now!==Pt.Date.now&&Zu.now,wi=kt.setTimeout!==Pt.setTimeout&&kt.setTimeout,mi=Ku.ceil,Ai=Ku.floor,ki=Gu.getOwnPropertySymbols,Ei=ai?ai.isBuffer:F,Oi=kt.isFinite,Si=Qu.join,Ii=U(Gu.keys,Gu),Ri=Ku.max,zi=Ku.min,Wi=Zu.now,Bi=kt.parseInt,Li=Ku.random,Ui=Qu.reverse,Ci=ve(kt,"DataView"),Mi=ve(kt,"Map"),Di=ve(kt,"Promise"),Ti=ve(kt,"Set"),$i=ve(kt,"WeakMap"),Fi=ve(Gu,"create"),Ni=ve(Gu,"defineProperty"),Pi=$i&&new $i,Zi={},qi=Le(Ci),Vi=Le(Mi),Ki=Le(Di),Gi=Le(Ti),Ji=Le($i),Yi=li?li.prototype:F,Hi=Yi?Yi.valueOf:F,Qi=Yi?Yi.toString:F,Xi=function(){ -function t(){}return function(n){return pu(n)?gi?gi(n):(t.prototype=prototype,n=new t,t.prototype=F,n):{}}}();Ot.templateSettings={escape:Q,evaluate:X,interpolate:tt,variable:"",imports:{_:Ot}},Ot.prototype=Rt.prototype,Ot.prototype.constructor=Ot,Mt.prototype=Xi(Rt.prototype),Mt.prototype.constructor=Mt,Dt.prototype=Xi(Rt.prototype),Dt.prototype.constructor=Dt,Ft.prototype.clear=function(){this.__data__=Fi?Fi(null):{},this.size=0},Ft.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t], -this.size-=t?1:0,t},Ft.prototype.get=function(t){var n=this.__data__;return Fi?(t=n[t],"__lodash_hash_undefined__"===t?F:t):ei.call(n,t)?n[t]:F},Ft.prototype.has=function(t){var n=this.__data__;return Fi?n[t]!==F:ei.call(n,t)},Ft.prototype.set=function(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Fi&&n===F?"__lodash_hash_undefined__":n,this},Nt.prototype.clear=function(){this.__data__=[],this.size=0},Nt.prototype.delete=function(t){var n=this.__data__;return t=hn(n,t),!(0>t)&&(t==n.length-1?n.pop():yi.call(n,t,1), ---this.size,true)},Nt.prototype.get=function(t){var n=this.__data__;return t=hn(n,t),0>t?F:n[t][1]},Nt.prototype.has=function(t){return-1e?(++this.size,r.push([t,n])):r[e][1]=n,this},Zt.prototype.clear=function(){this.size=0,this.__data__={hash:new Ft,map:new(Mi||Nt),string:new Ft}},Zt.prototype.delete=function(t){return t=pe(this,t).delete(t),this.size-=t?1:0,t},Zt.prototype.get=function(t){return pe(this,t).get(t); -},Zt.prototype.has=function(t){return pe(this,t).has(t)},Zt.prototype.set=function(t,n){var r=pe(this,t),e=r.size;return r.set(t,n),this.size+=r.size==e?0:1,this},qt.prototype.add=qt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},qt.prototype.has=function(t){return this.__data__.has(t)},Kt.prototype.clear=function(){this.__data__=new Nt,this.size=0},Kt.prototype.delete=function(t){var n=this.__data__;return t=n.delete(t),this.size=n.size,t},Kt.prototype.get=function(t){ -return this.__data__.get(t)},Kt.prototype.has=function(t){return this.__data__.has(t)},Kt.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Nt){var e=r.__data__;if(!Mi||199>e.length)return e.push([t,n]),this.size=++r.size,this;r=this.__data__=new Zt(e)}return r.set(t,n),this.size=r.size,this};var to=$r(On),no=$r(Sn,true),ro=Fr(),eo=Fr(true),uo=Pi?function(t,n){return Pi.set(t,n),t}:Cu,io=Ni?function(t,n){return Ni(t,"toString",{configurable:true,enumerable:false,value:Uu(n),writable:true})}:Cu,oo=xi||function(t){ -return Pt.clearTimeout(t)},fo=Ti&&1/M(new Ti([,-0]))[1]==N?function(t){return new Ti(t)}:Tu,co=Pi?function(t){return Pi.get(t)}:Tu,ao=ki?U(ki,Gu):Fu,lo=ki?function(t){for(var n=[];t;)s(n,ao(t)),t=_i(t);return n}:Fu;(Ci&&"[object DataView]"!=Et(new Ci(new ArrayBuffer(1)))||Mi&&"[object Map]"!=Et(new Mi)||Di&&"[object Promise]"!=Et(Di.resolve())||Ti&&"[object Set]"!=Et(new Ti)||$i&&"[object WeakMap]"!=Et(new $i))&&(Et=function(t){var n=oi.call(t);if(t=(t="[object Object]"==n?t.constructor:F)?Le(t):F)switch(t){ -case qi:return"[object DataView]";case Vi:return"[object Map]";case Ki:return"[object Promise]";case Gi:return"[object Set]";case Ji:return"[object WeakMap]"}return n});var so=ti?lu:Nu,ho=ze(uo),po=wi||function(t,n){return Pt.setTimeout(t,n)},_o=ze(io),vo=function(t){t=eu(t,function(t){return 500===n.size&&n.clear(),t});var n=t.cache;return t}(function(t){t=ku(t);var n=[];return et.test(t)&&n.push(""),t.replace(ut,function(t,r,e,u){n.push(e?u.replace(_t,"$1"):r||t)}),n}),go=lr(function(t,n){return cu(t)?wn(t,En(n,1,cu,true)):[]; -}),yo=lr(function(t,n){var r=Fe(n);return cu(r)&&(r=F),cu(t)?wn(t,En(n,1,cu,true),he(r,2)):[]}),bo=lr(function(t,n){var r=Fe(n);return cu(r)&&(r=F),cu(t)?wn(t,En(n,1,cu,true),F,r):[]}),xo=lr(function(t){var n=l(t,Or);return n.length&&n[0]===t[0]?Un(n):[]}),jo=lr(function(t){var n=Fe(t),r=l(t,Or);return n===Fe(r)?n=F:r.pop(),r.length&&r[0]===t[0]?Un(r,he(n,2)):[]}),wo=lr(function(t){var n=Fe(t),r=l(t,Or);return n===Fe(r)?n=F:r.pop(),r.length&&r[0]===t[0]?Un(r,F,n):[]}),mo=lr(Ne),Ao=ae(function(t,n){var r=t?t.length:0,e=gn(t,n); -return fr(t,l(n,function(t){return je(t,r)?+t:t}).sort(Wr)),e}),ko=lr(function(t){return wr(En(t,1,cu,true))}),Eo=lr(function(t){var n=Fe(t);return cu(n)&&(n=F),wr(En(t,1,cu,true),he(n,2))}),Oo=lr(function(t){var n=Fe(t);return cu(n)&&(n=F),wr(En(t,1,cu,true),F,n)}),So=lr(function(t,n){return cu(t)?wn(t,n):[]}),Io=lr(function(t){return kr(f(t,cu))}),Ro=lr(function(t){var n=Fe(t);return cu(n)&&(n=F),kr(f(t,cu),he(n,2))}),zo=lr(function(t){var n=Fe(t);return cu(n)&&(n=F),kr(f(t,cu),F,n)}),Wo=lr(Ze),Bo=lr(function(t){ -var n=t.length,n=1=n}),tf=Pu.isArray,nf=Gt?S(Gt):Dn,rf=Ei||Nu,ef=Jt?S(Jt):Tn,uf=Yt?S(Yt):Fn,of=Ht?S(Ht):Zn,ff=Qt?S(Qt):qn,cf=Xt?S(Xt):Vn,af=re(Yn),lf=re(function(t,n){return t<=n}),sf=Tr(function(t,n){if(ke(n)||fu(n))Cr(n,Su(n),t);else for(var r in n)ei.call(n,r)&&sn(t,r,n[r])}),hf=Tr(function(t,n){Cr(n,Iu(n),t)}),pf=Tr(function(t,n,r,e){Cr(n,Iu(n),t,e)}),_f=Tr(function(t,n,r,e){ -Cr(n,Su(n),t,e)}),vf=ae(gn),gf=lr(function(t){return t.push(F,an),r(pf,F,t)}),df=lr(function(t){return t.push(F,Oe),r(wf,F,t)}),yf=Yr(function(t,n,r){t[n]=r},Uu(Cu)),bf=Yr(function(t,n,r){ei.call(t,n)?t[n].push(r):t[n]=[r]},he),xf=lr(Mn),jf=Tr(function(t,n,r){tr(t,n,r)}),wf=Tr(function(t,n,r,e){tr(t,n,r,e)}),mf=ae(function(t,n){return null==t?{}:(n=l(n,Be),er(t,wn(zn(t,Iu,lo),n)))}),Af=ae(function(t,n){return null==t?{}:er(t,l(n,Be))}),kf=ie(Su),Ef=ie(Iu),Of=Zr(function(t,n,r){return n=n.toLowerCase(), -t+(r?Wu(n):n)}),Sf=Zr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),If=Zr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),Rf=Pr("toLowerCase"),zf=Zr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Wf=Zr(function(t,n,r){return t+(r?" ":"")+Lf(n)}),Bf=Zr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Lf=Pr("toUpperCase"),Uf=lr(function(t,n){try{return r(t,F,n)}catch(t){return au(t)?t:new qu(t)}}),Cf=ae(function(t,n){return u(n,function(n){n=Be(n),vn(t,n,Zo(t[n],t))}),t}),Mf=Gr(),Df=Gr(true),Tf=lr(function(t,n){ -return function(r){return Mn(r,t,n)}}),$f=lr(function(t,n){return function(r){return Mn(t,r,n)}}),Ff=Qr(l),Nf=Qr(o),Pf=Qr(_),Zf=ne(),qf=ne(true),Vf=Hr(function(t,n){return t+n},0),Kf=ue("ceil"),Gf=Hr(function(t,n){return t/n},1),Jf=ue("floor"),Yf=Hr(function(t,n){return t*n},1),Hf=ue("round"),Qf=Hr(function(t,n){return t-n},0);return Ot.after=function(t,n){if(typeof n!="function")throw new Hu("Expected a function");return t=ju(t),function(){if(1>--t)return n.apply(this,arguments)}},Ot.ary=Qe,Ot.assign=sf, -Ot.assignIn=hf,Ot.assignInWith=pf,Ot.assignWith=_f,Ot.at=vf,Ot.before=Xe,Ot.bind=Zo,Ot.bindAll=Cf,Ot.bindKey=qo,Ot.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return tf(t)?t:[t]},Ot.chain=Ve,Ot.chunk=function(t,n,r){if(n=(r?we(t,n,r):n===F)?1:Ri(ju(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,i=Pu(mi(r/n));en?0:n,e)):[]},Ot.dropRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===F?1:ju(n),n=e-n,vr(t,0,0>n?0:n)):[]},Ot.dropRightWhile=function(t,n){return t&&t.length?mr(t,he(n,3),true,true):[]},Ot.dropWhile=function(t,n){return t&&t.length?mr(t,he(n,3),true):[]},Ot.fill=function(t,n,r,e){ -var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&we(t,n,r)&&(r=0,e=u),u=t.length,r=ju(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:ju(e),0>e&&(e+=u),e=r>e?0:wu(e);r>>0,r?(t=ku(t))&&(typeof n=="string"||null!=n&&!of(n))&&(n=jr(n),!n&&Wt.test(t))?Ir($(t),0,r):t.split(n,r):[]},Ot.spread=function(t,n){if(typeof t!="function")throw new Hu("Expected a function");return n=n===F?0:Ri(ju(n),0),lr(function(e){var u=e[n];return e=Ir(e,0,n),u&&s(e,u),r(t,this,e)})},Ot.tail=function(t){var n=t?t.length:0;return n?vr(t,1,n):[]},Ot.take=function(t,n,r){return t&&t.length?(n=r||n===F?1:ju(n), -vr(t,0,0>n?0:n)):[]},Ot.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===F?1:ju(n),n=e-n,vr(t,0>n?0:n,e)):[]},Ot.takeRightWhile=function(t,n){return t&&t.length?mr(t,he(n,3),false,true):[]},Ot.takeWhile=function(t,n){return t&&t.length?mr(t,he(n,3)):[]},Ot.tap=function(t,n){return n(t),t},Ot.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new Hu("Expected a function");return pu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ru(t,n,{leading:e,maxWait:n, -trailing:u})},Ot.thru=Ke,Ot.toArray=bu,Ot.toPairs=kf,Ot.toPairsIn=Ef,Ot.toPath=function(t){return tf(t)?l(t,Be):yu(t)?[t]:Ur(vo(t))},Ot.toPlainObject=Au,Ot.transform=function(t,n,r){var e=tf(t)||cf(t);if(n=he(n,4),null==r)if(e||pu(t)){var i=t.constructor;r=e?tf(t)?new i:[]:lu(i)?Xi(_i(t)):{}}else r={};return(e?u:On)(t,function(t,e,u){return n(r,t,e,u)}),r},Ot.unary=function(t){return Qe(t,1)},Ot.union=ko,Ot.unionBy=Eo,Ot.unionWith=Oo,Ot.uniq=function(t){return t&&t.length?wr(t):[]},Ot.uniqBy=function(t,n){ -return t&&t.length?wr(t,he(n,2)):[]},Ot.uniqWith=function(t,n){return t&&t.length?wr(t,F,n):[]},Ot.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=me(e,r)?[e]:Sr(e);r=Ie(r,e),e=Be(Fe(e)),r=!(null!=r&&ei.call(r,e))||delete r[e]}return r},Ot.unzip=Ze,Ot.unzipWith=qe,Ot.update=function(t,n,r){return null==t?t:pr(t,n,(typeof r=="function"?r:Cu)(Rn(t,n)),void 0)},Ot.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:F,null!=t&&(t=pr(t,n,(typeof r=="function"?r:Cu)(Rn(t,n)),e)),t; -},Ot.values=zu,Ot.valuesIn=function(t){return null==t?[]:I(t,Iu(t))},Ot.without=So,Ot.words=Lu,Ot.wrap=function(t,n){return n=null==n?Cu:n,Jo(n,t)},Ot.xor=Io,Ot.xorBy=Ro,Ot.xorWith=zo,Ot.zip=Wo,Ot.zipObject=function(t,n){return Er(t||[],n||[],sn)},Ot.zipObjectDeep=function(t,n){return Er(t||[],n||[],pr)},Ot.zipWith=Bo,Ot.entries=kf,Ot.entriesIn=Ef,Ot.extend=hf,Ot.extendWith=pf,Du(Ot,Ot),Ot.add=Vf,Ot.attempt=Uf,Ot.camelCase=Of,Ot.capitalize=Wu,Ot.ceil=Kf,Ot.clamp=function(t,n,r){return r===F&&(r=n, -n=F),r!==F&&(r=mu(r),r=r===r?r:0),n!==F&&(n=mu(n),n=n===n?n:0),dn(mu(t),n,r)},Ot.clone=function(t){return yn(t,false,true)},Ot.cloneDeep=function(t){return yn(t,true,true)},Ot.cloneDeepWith=function(t,n){return yn(t,true,true,n)},Ot.cloneWith=function(t,n){return yn(t,false,true,n)},Ot.conformsTo=function(t,n){return null==n||xn(t,n,Su(n))},Ot.deburr=Bu,Ot.defaultTo=function(t,n){return null==t||t!==t?n:t},Ot.divide=Gf,Ot.endsWith=function(t,n,r){t=ku(t),n=jr(n);var e=t.length,e=r=r===F?e:dn(ju(r),0,e);return r-=n.length, -0<=r&&t.slice(r,e)==n},Ot.eq=iu,Ot.escape=function(t){return(t=ku(t))&&H.test(t)?t.replace(J,rn):t},Ot.escapeRegExp=function(t){return(t=ku(t))&&ot.test(t)?t.replace(it,"\\$&"):t},Ot.every=function(t,n,r){var e=tf(t)?o:mn;return r&&we(t,n,r)&&(n=F),e(t,he(n,3))},Ot.find=Co,Ot.findIndex=Me,Ot.findKey=function(t,n){return v(t,he(n,3),On)},Ot.findLast=Mo,Ot.findLastIndex=De,Ot.findLastKey=function(t,n){return v(t,he(n,3),Sn)},Ot.floor=Jf,Ot.forEach=Je,Ot.forEachRight=Ye,Ot.forIn=function(t,n){return null==t?t:ro(t,he(n,3),Iu); -},Ot.forInRight=function(t,n){return null==t?t:eo(t,he(n,3),Iu)},Ot.forOwn=function(t,n){return t&&On(t,he(n,3))},Ot.forOwnRight=function(t,n){return t&&Sn(t,he(n,3))},Ot.get=Eu,Ot.gt=Qo,Ot.gte=Xo,Ot.has=function(t,n){return null!=t&&ge(t,n,Bn)},Ot.hasIn=Ou,Ot.head=$e,Ot.identity=Cu,Ot.includes=function(t,n,r,e){return t=fu(t)?t:zu(t),r=r&&!e?ju(r):0,e=t.length,0>r&&(r=Ri(e+r,0)),du(t)?r<=e&&-1r&&(r=Ri(e+r,0)),d(t,n,r)):-1},Ot.inRange=function(t,n,r){return n=xu(n),r===F?(r=n,n=0):r=xu(r),t=mu(t),t>=zi(n,r)&&t=t},Ot.isSet=ff,Ot.isString=du,Ot.isSymbol=yu, -Ot.isTypedArray=cf,Ot.isUndefined=function(t){return t===F},Ot.isWeakMap=function(t){return _u(t)&&"[object WeakMap]"==Et(t)},Ot.isWeakSet=function(t){return _u(t)&&"[object WeakSet]"==oi.call(t)},Ot.join=function(t,n){return t?Si.call(t,n):""},Ot.kebabCase=Sf,Ot.last=Fe,Ot.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==F&&(u=ju(r),u=0>u?Ri(e+u,0):zi(u,e-1)),n===n){for(r=u+1;r--&&t[r]!==n;);t=r}else t=g(t,b,u,true);return t},Ot.lowerCase=If,Ot.lowerFirst=Rf,Ot.lt=af,Ot.lte=lf, -Ot.max=function(t){return t&&t.length?An(t,Cu,Wn):F},Ot.maxBy=function(t,n){return t&&t.length?An(t,he(n,2),Wn):F},Ot.mean=function(t){return x(t,Cu)},Ot.meanBy=function(t,n){return x(t,he(n,2))},Ot.min=function(t){return t&&t.length?An(t,Cu,Yn):F},Ot.minBy=function(t,n){return t&&t.length?An(t,he(n,2),Yn):F},Ot.stubArray=Fu,Ot.stubFalse=Nu,Ot.stubObject=function(){return{}},Ot.stubString=function(){return""},Ot.stubTrue=function(){return true},Ot.multiply=Yf,Ot.nth=function(t,n){return t&&t.length?nr(t,ju(n)):F; -},Ot.noConflict=function(){return Pt._===this&&(Pt._=fi),this},Ot.noop=Tu,Ot.now=Po,Ot.pad=function(t,n,r){t=ku(t);var e=(n=ju(n))?T(t):0;return!n||e>=n?t:(n=(n-e)/2,Xr(Ai(n),r)+t+Xr(mi(n),r))},Ot.padEnd=function(t,n,r){t=ku(t);var e=(n=ju(n))?T(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=Li(),zi(t+r*(n-t+Tt("1e-"+((r+"").length-1))),n)):cr(t,n)},Ot.reduce=function(t,n,r){var e=tf(t)?h:m,u=3>arguments.length;return e(t,he(n,4),r,u,to)},Ot.reduceRight=function(t,n,r){var e=tf(t)?p:m,u=3>arguments.length;return e(t,he(n,4),r,u,no)},Ot.repeat=function(t,n,r){return n=(r?we(t,n,r):n===F)?1:ju(n),ar(ku(t),n)},Ot.replace=function(){ -var t=arguments,n=ku(t[0]);return 3>t.length?n:n.replace(t[1],t[2])},Ot.result=function(t,n,r){n=me(n,t)?[n]:Sr(n);var e=-1,u=n.length;for(u||(t=F,u=1);++e=n?t:n)),t}function yn(t,n,r,e,i,o,f){var c;if(e&&(c=o?e(t,i,o,f):e(t)),c!==F)return c;if(!_u(t))return t;if(i=nf(t)){if(c=be(t),!n)return Cr(t,c)}else{var a=Et(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(ef(t))return Rr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!o){if(c=xe(l?{}:t),!n)return Dr(t,_n(c,t))}else{if(!Ct[a])return o?t:{};c=je(t,a,yn,n)}}if(f||(f=new Kt),o=f.get(t))return o;f.set(t,c); +var s=i?F:(r?se:Iu)(t);return u(s||t,function(u,i){s&&(i=u,u=t[i]),sn(c,i,yn(u,n,r,e,i,t,f))}),c}function bn(t){var n=Iu(t);return function(r){return xn(r,t,n)}}function xn(t,n,r){var e=r.length;if(null==t)return!e;for(t=Ju(t);e--;){var u=r[e],i=n[u],o=t[u];if(o===F&&!(u in t)||!i(o))return false}return true}function jn(t,n,r){if(typeof t!="function")throw new Qu("Expected a function");return po(function(){t.apply(F,r)},n)}function wn(t,n,r,e){var u=-1,i=c,o=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))), +e?(i=a,o=false):200<=n.length&&(i=R,o=false,n=new qt(n));t:for(;++un}function Bn(t,n){return null!=t&&ui.call(t,n)}function Ln(t,n){ +return null!=t&&n in Ju(t)}function Un(t,n,r){for(var e=r?a:c,u=t[0].length,i=t.length,o=i,f=Zu(i),s=1/0,h=[];o--;){var p=t[o];o&&n&&(p=l(p,S(n))),s=Wi(p.length,s),f[o]=!r&&(n||120<=u&&120<=p.length)?new qt(o&&p):F}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,me(n,r)?t[n]:F}function rr(t,n,r){var e=-1;return n=l(n.length?n:[Mu],S(_e())),t=Hn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,i=n.a,o=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function er(t,n){return t=Ju(t),ur(t,n,function(n,r){return r in t})}function ur(t,n,r){for(var e=-1,u=n.length,i={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Zu(u);++e=u){for(;e>>1,o=t[i];null!==o&&!bu(o)&&(r?o<=n:o=e?t:vr(t,n,r)}function Rr(t,n){if(n)return t.slice();var r=t.length,r=pi?pi(r):new t.constructor(r); +return t.copy(r),r}function zr(t){var n=new t.constructor(t.byteLength);return new hi(n).set(new hi(t)),n}function Wr(t,n){return new t.constructor(n?zr(t.buffer):t.buffer,t.byteOffset,t.length)}function Br(t,n){if(t!==n){var r=t!==F,e=null===t,u=t===t,i=bu(t),o=n!==F,f=null===n,c=n===n,a=bu(n);if(!f&&!a&&!i&&t>n||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&tu?F:i,u=1),n=Ju(n);++eo&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,or?r?ar(n,t):n:(r=ar(n,Ai(t/T(n))),Wt.test(n)?Ir($(r),0,t).join(""):r.slice(0,t))}function ne(t,n,e,u){function i(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Zu(l+c),h=this&&this!==Pt&&this instanceof i?f:t;++an||e)&&(1&t&&(i[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Lr(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Ur(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&t&&(i[8]=null==i[8]?h[8]:Wi(i[8],h[8])), +null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=n),t=i[0],n=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=null==i[9]?c?0:t.length:zi(i[9]-a,0),!f&&24&n&&(n&=-25),We((h?uo:ho)(n&&1!=n?8==n||16==n?Kr(t,n,f):32!=n&&33!=n||u.length?Yr.apply(F,i):ne(t,n,r,e):Pr(t,n,r),i),t,n)}function ce(t,n,r,e,u,i){var o=2&u,f=t.length,c=n.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(t))&&i.get(n))return c==n;var c=-1,a=true,l=1&u?new qt:F;for(i.set(t,n),i.set(n,t);++cr&&(r=zi(e+r,0)),g(t,_e(n,3),r)):-1}function $e(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==F&&(u=wu(r),u=0>r?zi(e+u,0):Wi(u,e-1)),g(t,_e(n,3),u,true); +}function Fe(t){return t&&t.length?En(t,1):[]}function Ne(t){return t&&t.length?t[0]:F}function Pe(t){var n=t?t.length:0;return n?t[n-1]:F}function Ze(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function qe(t){return t?Ci.call(t):t}function Ve(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(au(t))return n=zi(t.length,n),true}),E(n,function(n){return l(t,j(n))})}function Ke(t,n){if(!t||!t.length)return[];var e=Ve(t);return null==n?e:l(e,function(t){return r(n,F,t)})}function Ge(t){ +return t=Ot(t),t.__chain__=true,t}function Je(t,n){return n(t)}function Ye(){return this}function He(t,n){return(nf(t)?u:to)(t,_e(n,3))}function Qe(t,n){return(nf(t)?i:no)(t,_e(n,3))}function Xe(t,n){return(nf(t)?l:Hn)(t,_e(n,3))}function tu(t,n,r){return n=r?F:n,n=t&&null==n?t.length:n,fe(t,128,F,F,F,F,n)}function nu(t,n){var r;if(typeof n!="function")throw new Qu("Expected a function");return t=wu(t),function(){return 0<--t&&(r=n.apply(this,arguments)),1>=t&&(n=F),r}}function ru(t,n,r){return n=r?F:n, +t=fe(t,8,F,F,F,F,F,n),t.placeholder=ru.placeholder,t}function eu(t,n,r){return n=r?F:n,t=fe(t,16,F,F,F,F,F,n),t.placeholder=eu.placeholder,t}function uu(t,n,r){function e(n){var r=c,e=a;return c=a=F,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===F||r>=n||0>r||g&&t>=l}function i(){var t=Po();if(u(t))return o(t);var r,e=po;r=t-_,t=n-(t-p),r=g?Wi(t,l-r):t,h=e(i,r)}function o(t){return h=F,d&&c?e(t):(c=a=F,s)}function f(){var t=Po(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===F)return _=t=p, +h=po(i,n),v?e(t):s;if(g)return h=po(i,n),e(p)}return h===F&&(h=po(i,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Qu("Expected a function");return n=Au(n)||0,_u(r)&&(v=!!r.leading,l=(g="maxWait"in r)?zi(Au(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&oo(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Po())},f}function iu(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=t.apply(this,e), +r.cache=i.set(u,e)||i,e)}if(typeof t!="function"||n&&typeof n!="function")throw new Qu("Expected a function");return r.cache=new(iu.Cache||Zt),r}function ou(t){if(typeof t!="function")throw new Qu("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}function fu(t,n){return t===n||t!==t&&n!==n}function cu(t){return null!=t&&pu(t.length)&&!su(t); +}function au(t){return vu(t)&&cu(t)}function lu(t){return!!vu(t)&&("[object Error]"==fi.call(t)||typeof t.message=="string"&&typeof t.name=="string")}function su(t){return t=_u(t)?fi.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t||"[object Proxy]"==t}function hu(t){return typeof t=="number"&&t==wu(t)}function pu(t){return typeof t=="number"&&-1=t}function _u(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function vu(t){return null!=t&&typeof t=="object"; +}function gu(t){return typeof t=="number"||vu(t)&&"[object Number]"==fi.call(t)}function du(t){return!(!vu(t)||"[object Object]"!=fi.call(t))&&(t=_i(t),null===t||(t=ui.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&ei.call(t)==oi))}function yu(t){return typeof t=="string"||!nf(t)&&vu(t)&&"[object String]"==fi.call(t)}function bu(t){return typeof t=="symbol"||vu(t)&&"[object Symbol]"==fi.call(t)}function xu(t){if(!t)return[];if(cu(t))return yu(t)?$(t):Cr(t);if(vi&&t[vi]){t=t[vi](); +for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}return n=Et(t),("[object Map]"==n?L:"[object Set]"==n?M:Wu)(t)}function ju(t){return t?(t=Au(t),t===N||t===-N?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function wu(t){t=ju(t);var n=t%1;return t===t?n?t-n:t:0}function mu(t){return t?dn(wu(t),0,4294967295):0}function Au(t){if(typeof t=="number")return t;if(bu(t))return P;if(_u(t)&&(t=typeof t.valueOf=="function"?t.valueOf():t,t=_u(t)?t+"":t),typeof t!="string")return 0===t?t:+t; +t=t.replace(ft,"");var n=yt.test(t);return n||xt.test(t)?$t(t.slice(2),n?2:8):dt.test(t)?P:+t}function ku(t){return Mr(t,Ru(t))}function Eu(t){return null==t?"":jr(t)}function Ou(t,n,r){return t=null==t?F:Rn(t,n),t===F?r:t}function Su(t,n){return null!=t&&ye(t,n,Ln)}function Iu(t){return cu(t)?tn(t):Jn(t)}function Ru(t){if(cu(t))t=tn(t,true);else if(_u(t)){var n,r=Oe(t),e=[];for(n in t)("constructor"!=n||!r&&ui.call(t,n))&&e.push(n);t=e}else{if(n=[],null!=t)for(r in Ju(t))n.push(r);t=n}return t}function zu(t,n){ +return null==t?{}:ur(t,zn(t,Ru,lo),_e(n))}function Wu(t){return t?I(t,Iu(t)):[]}function Bu(t){return Uf(Eu(t).toLowerCase())}function Lu(t){return(t=Eu(t))&&t.replace(wt,nn).replace(It,"")}function Uu(t,n,r){return t=Eu(t),n=r?F:n,n===F?Bt.test(t)?t.match(zt)||[]:t.match(pt)||[]:t.match(n)||[]}function Cu(t){return function(){return t}}function Mu(t){return t}function Du(t){return Gn(typeof t=="function"?t:yn(t,true))}function Tu(t,n,r){var e=Iu(n),i=In(n,e);null!=r||_u(n)&&(i.length||!e.length)||(r=n, +n=t,t=this,i=In(n,Iu(n)));var o=!(_u(r)&&"chain"in r&&!r.chain),f=su(t);return u(i,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(o||n){var r=t(this.__wrapped__);return(r.__actions__=Cr(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function $u(){}function Fu(t){return ke(t)?j(Ue(t)):ir(t)}function Nu(){return[]}function Pu(){return false}kt=kt?un.defaults(Pt.Object(),kt,un.pick(Pt,Lt)):Pt; +var Zu=kt.Array,qu=kt.Date,Vu=kt.Error,Ku=kt.Function,Gu=kt.Math,Ju=kt.Object,Yu=kt.RegExp,Hu=kt.String,Qu=kt.TypeError,Xu=Zu.prototype,ti=Ju.prototype,ni=kt["__core-js_shared__"],ri=function(){var t=/[^.]+$/.exec(ni&&ni.keys&&ni.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),ei=Ku.prototype.toString,ui=ti.hasOwnProperty,ii=0,oi=ei.call(Ju),fi=ti.toString,ci=Pt._,ai=Yu("^"+ei.call(ui).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),li=Vt?kt.Buffer:F,si=kt.Symbol,hi=kt.Uint8Array,pi=li?li.f:F,_i=U(Ju.getPrototypeOf,Ju),vi=si?si.iterator:F,gi=Ju.create,di=ti.propertyIsEnumerable,yi=Xu.splice,bi=si?si.isConcatSpreadable:F,xi=function(){ +try{var t=de(Ju,"defineProperty");return t({},"",{}),t}catch(t){}}(),ji=kt.clearTimeout!==Pt.clearTimeout&&kt.clearTimeout,wi=qu&&qu.now!==Pt.Date.now&&qu.now,mi=kt.setTimeout!==Pt.setTimeout&&kt.setTimeout,Ai=Gu.ceil,ki=Gu.floor,Ei=Ju.getOwnPropertySymbols,Oi=li?li.isBuffer:F,Si=kt.isFinite,Ii=Xu.join,Ri=U(Ju.keys,Ju),zi=Gu.max,Wi=Gu.min,Bi=qu.now,Li=kt.parseInt,Ui=Gu.random,Ci=Xu.reverse,Mi=de(kt,"DataView"),Di=de(kt,"Map"),Ti=de(kt,"Promise"),$i=de(kt,"Set"),Fi=de(kt,"WeakMap"),Ni=de(Ju,"create"),Pi=Fi&&new Fi,Zi={},qi=Ce(Mi),Vi=Ce(Di),Ki=Ce(Ti),Gi=Ce($i),Ji=Ce(Fi),Yi=si?si.prototype:F,Hi=Yi?Yi.valueOf:F,Qi=Yi?Yi.toString:F,Xi=function(){ +function t(){}return function(n){return _u(n)?gi?gi(n):(t.prototype=n,n=new t,t.prototype=F,n):{}}}();Ot.templateSettings={escape:Q,evaluate:X,interpolate:tt,variable:"",imports:{_:Ot}},Ot.prototype=Rt.prototype,Ot.prototype.constructor=Ot,Mt.prototype=Xi(Rt.prototype),Mt.prototype.constructor=Mt,Dt.prototype=Xi(Rt.prototype),Dt.prototype.constructor=Dt,Ft.prototype.clear=function(){this.__data__=Ni?Ni(null):{},this.size=0},Ft.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t], +this.size-=t?1:0,t},Ft.prototype.get=function(t){var n=this.__data__;return Ni?(t=n[t],"__lodash_hash_undefined__"===t?F:t):ui.call(n,t)?n[t]:F},Ft.prototype.has=function(t){var n=this.__data__;return Ni?n[t]!==F:ui.call(n,t)},Ft.prototype.set=function(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Ni&&n===F?"__lodash_hash_undefined__":n,this},Nt.prototype.clear=function(){this.__data__=[],this.size=0},Nt.prototype.delete=function(t){var n=this.__data__;return t=hn(n,t),!(0>t)&&(t==n.length-1?n.pop():yi.call(n,t,1), +--this.size,true)},Nt.prototype.get=function(t){var n=this.__data__;return t=hn(n,t),0>t?F:n[t][1]},Nt.prototype.has=function(t){return-1e?(++this.size,r.push([t,n])):r[e][1]=n,this},Zt.prototype.clear=function(){this.size=0,this.__data__={hash:new Ft,map:new(Di||Nt),string:new Ft}},Zt.prototype.delete=function(t){return t=ve(this,t).delete(t),this.size-=t?1:0,t},Zt.prototype.get=function(t){return ve(this,t).get(t); +},Zt.prototype.has=function(t){return ve(this,t).has(t)},Zt.prototype.set=function(t,n){var r=ve(this,t),e=r.size;return r.set(t,n),this.size+=r.size==e?0:1,this},qt.prototype.add=qt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},qt.prototype.has=function(t){return this.__data__.has(t)},Kt.prototype.clear=function(){this.__data__=new Nt,this.size=0},Kt.prototype.delete=function(t){var n=this.__data__;return t=n.delete(t),this.size=n.size,t},Kt.prototype.get=function(t){ +return this.__data__.get(t)},Kt.prototype.has=function(t){return this.__data__.has(t)},Kt.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Nt){var e=r.__data__;if(!Di||199>e.length)return e.push([t,n]),this.size=++r.size,this;r=this.__data__=new Zt(e)}return r.set(t,n),this.size=r.size,this};var to=Fr(On),no=Fr(Sn,true),ro=Nr(),eo=Nr(true),uo=Pi?function(t,n){return Pi.set(t,n),t}:Mu,io=xi?function(t,n){return xi(t,"toString",{configurable:true,enumerable:false,value:Cu(n),writable:true})}:Mu,oo=ji||function(t){ +return Pt.clearTimeout(t)},fo=$i&&1/M(new $i([,-0]))[1]==N?function(t){return new $i(t)}:$u,co=Pi?function(t){return Pi.get(t)}:$u,ao=Ei?U(Ei,Ju):Nu,lo=Ei?function(t){for(var n=[];t;)s(n,ao(t)),t=_i(t);return n}:Nu;(Mi&&"[object DataView]"!=Et(new Mi(new ArrayBuffer(1)))||Di&&"[object Map]"!=Et(new Di)||Ti&&"[object Promise]"!=Et(Ti.resolve())||$i&&"[object Set]"!=Et(new $i)||Fi&&"[object WeakMap]"!=Et(new Fi))&&(Et=function(t){var n=fi.call(t);if(t=(t="[object Object]"==n?t.constructor:F)?Ce(t):F)switch(t){ +case qi:return"[object DataView]";case Vi:return"[object Map]";case Ki:return"[object Promise]";case Gi:return"[object Set]";case Ji:return"[object WeakMap]"}return n});var so=ni?su:Pu,ho=Be(uo),po=mi||function(t,n){return Pt.setTimeout(t,n)},_o=Be(io),vo=function(t){t=iu(t,function(t){return 500===n.size&&n.clear(),t});var n=t.cache;return t}(function(t){t=Eu(t);var n=[];return et.test(t)&&n.push(""),t.replace(ut,function(t,r,e,u){n.push(e?u.replace(_t,"$1"):r||t)}),n}),go=lr(function(t,n){return au(t)?wn(t,En(n,1,au,true)):[]; +}),yo=lr(function(t,n){var r=Pe(n);return au(r)&&(r=F),au(t)?wn(t,En(n,1,au,true),_e(r,2)):[]}),bo=lr(function(t,n){var r=Pe(n);return au(r)&&(r=F),au(t)?wn(t,En(n,1,au,true),F,r):[]}),xo=lr(function(t){var n=l(t,Or);return n.length&&n[0]===t[0]?Un(n):[]}),jo=lr(function(t){var n=Pe(t),r=l(t,Or);return n===Pe(r)?n=F:r.pop(),r.length&&r[0]===t[0]?Un(r,_e(n,2)):[]}),wo=lr(function(t){var n=Pe(t),r=l(t,Or);return n===Pe(r)?n=F:r.pop(),r.length&&r[0]===t[0]?Un(r,F,n):[]}),mo=lr(Ze),Ao=le(function(t,n){var r=t?t.length:0,e=gn(t,n); +return fr(t,l(n,function(t){return me(t,r)?+t:t}).sort(Br)),e}),ko=lr(function(t){return wr(En(t,1,au,true))}),Eo=lr(function(t){var n=Pe(t);return au(n)&&(n=F),wr(En(t,1,au,true),_e(n,2))}),Oo=lr(function(t){var n=Pe(t);return au(n)&&(n=F),wr(En(t,1,au,true),F,n)}),So=lr(function(t,n){return au(t)?wn(t,n):[]}),Io=lr(function(t){return kr(f(t,au))}),Ro=lr(function(t){var n=Pe(t);return au(n)&&(n=F),kr(f(t,au),_e(n,2))}),zo=lr(function(t){var n=Pe(t);return au(n)&&(n=F),kr(f(t,au),F,n)}),Wo=lr(Ve),Bo=lr(function(t){ +var n=t.length,n=1=n}),tf=Dn(function(){return arguments}())?Dn:function(t){return vu(t)&&ui.call(t,"callee")&&!di.call(t,"callee")},nf=Zu.isArray,rf=Gt?S(Gt):Tn,ef=Oi||Pu,uf=Jt?S(Jt):$n,of=Yt?S(Yt):Nn,ff=Ht?S(Ht):qn,cf=Qt?S(Qt):Vn,af=Xt?S(Xt):Kn,lf=ee(Yn),sf=ee(function(t,n){return t<=n}),hf=$r(function(t,n){if(Oe(n)||cu(n))Mr(n,Iu(n),t);else for(var r in n)ui.call(n,r)&&sn(t,r,n[r]); +}),pf=$r(function(t,n){Mr(n,Ru(n),t)}),_f=$r(function(t,n,r,e){Mr(n,Ru(n),t,e)}),vf=$r(function(t,n,r,e){Mr(n,Iu(n),t,e)}),gf=le(gn),df=lr(function(t){return t.push(F,an),r(_f,F,t)}),yf=lr(function(t){return t.push(F,Ie),r(mf,F,t)}),bf=Hr(function(t,n,r){t[n]=r},Cu(Mu)),xf=Hr(function(t,n,r){ui.call(t,n)?t[n].push(r):t[n]=[r]},_e),jf=lr(Mn),wf=$r(function(t,n,r){tr(t,n,r)}),mf=$r(function(t,n,r,e){tr(t,n,r,e)}),Af=le(function(t,n){return null==t?{}:(n=l(n,Ue),er(t,wn(zn(t,Ru,lo),n)))}),kf=le(function(t,n){ +return null==t?{}:er(t,l(n,Ue))}),Ef=oe(Iu),Of=oe(Ru),Sf=qr(function(t,n,r){return n=n.toLowerCase(),t+(r?Bu(n):n)}),If=qr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Rf=qr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),zf=Zr("toLowerCase"),Wf=qr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Bf=qr(function(t,n,r){return t+(r?" ":"")+Uf(n)}),Lf=qr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Uf=Zr("toUpperCase"),Cf=lr(function(t,n){try{return r(t,F,n)}catch(t){return lu(t)?t:new Vu(t); +}}),Mf=le(function(t,n){return u(n,function(n){n=Ue(n),vn(t,n,Zo(t[n],t))}),t}),Df=Jr(),Tf=Jr(true),$f=lr(function(t,n){return function(r){return Mn(r,t,n)}}),Ff=lr(function(t,n){return function(r){return Mn(t,r,n)}}),Nf=Xr(l),Pf=Xr(o),Zf=Xr(_),qf=re(),Vf=re(true),Kf=Qr(function(t,n){return t+n},0),Gf=ie("ceil"),Jf=Qr(function(t,n){return t/n},1),Yf=ie("floor"),Hf=Qr(function(t,n){return t*n},1),Qf=ie("round"),Xf=Qr(function(t,n){return t-n},0);return Ot.after=function(t,n){if(typeof n!="function")throw new Qu("Expected a function"); +return t=wu(t),function(){if(1>--t)return n.apply(this,arguments)}},Ot.ary=tu,Ot.assign=hf,Ot.assignIn=pf,Ot.assignInWith=_f,Ot.assignWith=vf,Ot.at=gf,Ot.before=nu,Ot.bind=Zo,Ot.bindAll=Mf,Ot.bindKey=qo,Ot.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return nf(t)?t:[t]},Ot.chain=Ge,Ot.chunk=function(t,n,r){if(n=(r?Ae(t,n,r):n===F)?1:zi(wu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,i=Zu(Ai(r/n));en?0:n,e)):[]},Ot.dropRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===F?1:wu(n),n=e-n,vr(t,0,0>n?0:n)):[]},Ot.dropRightWhile=function(t,n){return t&&t.length?mr(t,_e(n,3),true,true):[]},Ot.dropWhile=function(t,n){ +return t&&t.length?mr(t,_e(n,3),true):[]},Ot.fill=function(t,n,r,e){var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&Ae(t,n,r)&&(r=0,e=u),u=t.length,r=wu(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:wu(e),0>e&&(e+=u),e=r>e?0:mu(e);r>>0,r?(t=Eu(t))&&(typeof n=="string"||null!=n&&!ff(n))&&(n=jr(n),!n&&Wt.test(t))?Ir($(t),0,r):t.split(n,r):[]},Ot.spread=function(t,n){if(typeof t!="function")throw new Qu("Expected a function");return n=n===F?0:zi(wu(n),0),lr(function(e){var u=e[n];return e=Ir(e,0,n),u&&s(e,u),r(t,this,e)})},Ot.tail=function(t){ +var n=t?t.length:0;return n?vr(t,1,n):[]},Ot.take=function(t,n,r){return t&&t.length?(n=r||n===F?1:wu(n),vr(t,0,0>n?0:n)):[]},Ot.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===F?1:wu(n),n=e-n,vr(t,0>n?0:n,e)):[]},Ot.takeRightWhile=function(t,n){return t&&t.length?mr(t,_e(n,3),false,true):[]},Ot.takeWhile=function(t,n){return t&&t.length?mr(t,_e(n,3)):[]},Ot.tap=function(t,n){return n(t),t},Ot.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new Qu("Expected a function"); +return _u(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),uu(t,n,{leading:e,maxWait:n,trailing:u})},Ot.thru=Je,Ot.toArray=xu,Ot.toPairs=Ef,Ot.toPairsIn=Of,Ot.toPath=function(t){return nf(t)?l(t,Ue):bu(t)?[t]:Cr(vo(t))},Ot.toPlainObject=ku,Ot.transform=function(t,n,r){var e=nf(t),i=e||ef(t)||af(t);if(n=_e(n,4),null==r){var o=t&&t.constructor;r=i?e?new o:[]:_u(t)&&su(o)?Xi(_i(t)):{}}return(i?u:On)(t,function(t,e,u){return n(r,t,e,u)}),r},Ot.unary=function(t){return tu(t,1)},Ot.union=ko, +Ot.unionBy=Eo,Ot.unionWith=Oo,Ot.uniq=function(t){return t&&t.length?wr(t):[]},Ot.uniqBy=function(t,n){return t&&t.length?wr(t,_e(n,2)):[]},Ot.uniqWith=function(t,n){return t&&t.length?wr(t,F,n):[]},Ot.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=ke(e,r)?[e]:Sr(e);r=ze(r,e),e=Ue(Pe(e)),r=!(null!=r&&ui.call(r,e))||delete r[e]}return r},Ot.unzip=Ve,Ot.unzipWith=Ke,Ot.update=function(t,n,r){return null==t?t:pr(t,n,(typeof r=="function"?r:Mu)(Rn(t,n)),void 0)},Ot.updateWith=function(t,n,r,e){ +return e=typeof e=="function"?e:F,null!=t&&(t=pr(t,n,(typeof r=="function"?r:Mu)(Rn(t,n)),e)),t},Ot.values=Wu,Ot.valuesIn=function(t){return null==t?[]:I(t,Ru(t))},Ot.without=So,Ot.words=Uu,Ot.wrap=function(t,n){return n=null==n?Mu:n,Jo(n,t)},Ot.xor=Io,Ot.xorBy=Ro,Ot.xorWith=zo,Ot.zip=Wo,Ot.zipObject=function(t,n){return Er(t||[],n||[],sn)},Ot.zipObjectDeep=function(t,n){return Er(t||[],n||[],pr)},Ot.zipWith=Bo,Ot.entries=Ef,Ot.entriesIn=Of,Ot.extend=pf,Ot.extendWith=_f,Tu(Ot,Ot),Ot.add=Kf,Ot.attempt=Cf, +Ot.camelCase=Sf,Ot.capitalize=Bu,Ot.ceil=Gf,Ot.clamp=function(t,n,r){return r===F&&(r=n,n=F),r!==F&&(r=Au(r),r=r===r?r:0),n!==F&&(n=Au(n),n=n===n?n:0),dn(Au(t),n,r)},Ot.clone=function(t){return yn(t,false,true)},Ot.cloneDeep=function(t){return yn(t,true,true)},Ot.cloneDeepWith=function(t,n){return yn(t,true,true,n)},Ot.cloneWith=function(t,n){return yn(t,false,true,n)},Ot.conformsTo=function(t,n){return null==n||xn(t,n,Iu(n))},Ot.deburr=Lu,Ot.defaultTo=function(t,n){return null==t||t!==t?n:t},Ot.divide=Jf,Ot.endsWith=function(t,n,r){ +t=Eu(t),n=jr(n);var e=t.length,e=r=r===F?e:dn(wu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n},Ot.eq=fu,Ot.escape=function(t){return(t=Eu(t))&&H.test(t)?t.replace(J,rn):t},Ot.escapeRegExp=function(t){return(t=Eu(t))&&ot.test(t)?t.replace(it,"\\$&"):t},Ot.every=function(t,n,r){var e=nf(t)?o:mn;return r&&Ae(t,n,r)&&(n=F),e(t,_e(n,3))},Ot.find=Co,Ot.findIndex=Te,Ot.findKey=function(t,n){return v(t,_e(n,3),On)},Ot.findLast=Mo,Ot.findLastIndex=$e,Ot.findLastKey=function(t,n){return v(t,_e(n,3),Sn); +},Ot.floor=Yf,Ot.forEach=He,Ot.forEachRight=Qe,Ot.forIn=function(t,n){return null==t?t:ro(t,_e(n,3),Ru)},Ot.forInRight=function(t,n){return null==t?t:eo(t,_e(n,3),Ru)},Ot.forOwn=function(t,n){return t&&On(t,_e(n,3))},Ot.forOwnRight=function(t,n){return t&&Sn(t,_e(n,3))},Ot.get=Ou,Ot.gt=Qo,Ot.gte=Xo,Ot.has=function(t,n){return null!=t&&ye(t,n,Bn)},Ot.hasIn=Su,Ot.head=Ne,Ot.identity=Mu,Ot.includes=function(t,n,r,e){return t=cu(t)?t:Wu(t),r=r&&!e?wu(r):0,e=t.length,0>r&&(r=zi(e+r,0)),yu(t)?r<=e&&-1r&&(r=zi(e+r,0)),d(t,n,r)):-1},Ot.inRange=function(t,n,r){return n=ju(n),r===F?(r=n,n=0):r=ju(r),t=Au(t),t>=Wi(n,r)&&t=t; +},Ot.isSet=cf,Ot.isString=yu,Ot.isSymbol=bu,Ot.isTypedArray=af,Ot.isUndefined=function(t){return t===F},Ot.isWeakMap=function(t){return vu(t)&&"[object WeakMap]"==Et(t)},Ot.isWeakSet=function(t){return vu(t)&&"[object WeakSet]"==fi.call(t)},Ot.join=function(t,n){return t?Ii.call(t,n):""},Ot.kebabCase=If,Ot.last=Pe,Ot.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==F&&(u=wu(r),u=0>u?zi(e+u,0):Wi(u,e-1)),n===n){for(r=u+1;r--&&t[r]!==n;);t=r}else t=g(t,b,u,true);return t}, +Ot.lowerCase=Rf,Ot.lowerFirst=zf,Ot.lt=lf,Ot.lte=sf,Ot.max=function(t){return t&&t.length?An(t,Mu,Wn):F},Ot.maxBy=function(t,n){return t&&t.length?An(t,_e(n,2),Wn):F},Ot.mean=function(t){return x(t,Mu)},Ot.meanBy=function(t,n){return x(t,_e(n,2))},Ot.min=function(t){return t&&t.length?An(t,Mu,Yn):F},Ot.minBy=function(t,n){return t&&t.length?An(t,_e(n,2),Yn):F},Ot.stubArray=Nu,Ot.stubFalse=Pu,Ot.stubObject=function(){return{}},Ot.stubString=function(){return""},Ot.stubTrue=function(){return true},Ot.multiply=Hf, +Ot.nth=function(t,n){return t&&t.length?nr(t,wu(n)):F},Ot.noConflict=function(){return Pt._===this&&(Pt._=ci),this},Ot.noop=$u,Ot.now=Po,Ot.pad=function(t,n,r){t=Eu(t);var e=(n=wu(n))?T(t):0;return!n||e>=n?t:(n=(n-e)/2,te(ki(n),r)+t+te(Ai(n),r))},Ot.padEnd=function(t,n,r){t=Eu(t);var e=(n=wu(n))?T(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=Ui(),Wi(t+r*(n-t+Tt("1e-"+((r+"").length-1))),n)):cr(t,n)},Ot.reduce=function(t,n,r){var e=nf(t)?h:m,u=3>arguments.length;return e(t,_e(n,4),r,u,to)},Ot.reduceRight=function(t,n,r){var e=nf(t)?p:m,u=3>arguments.length;return e(t,_e(n,4),r,u,no)},Ot.repeat=function(t,n,r){ +return n=(r?Ae(t,n,r):n===F)?1:wu(n),ar(Eu(t),n)},Ot.replace=function(){var t=arguments,n=Eu(t[0]);return 3>t.length?n:n.replace(t[1],t[2])},Ot.result=function(t,n,r){n=ke(n,t)?[n]:Sr(n);var e=-1,u=n.length;for(u||(t=F,u=1);++et||9007199254740991=i)return t;if(i=r-T(e),1>i)return e;if(r=o?Ir(o,0,i).join(""):t.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),of(u)){if(t.slice(i).search(u)){var f=r;for(u.global||(u=Ju(u.source,ku(gt.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else t.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Dt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Dt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:he(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Dt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right"); -Dt.prototype[t]=function(){return this.__filtered__?new Dt(this):this[r](1)}}),Dt.prototype.compact=function(){return this.filter(Cu)},Dt.prototype.find=function(t){return this.filter(t).head()},Dt.prototype.findLast=function(t){return this.reverse().find(t)},Dt.prototype.invokeMap=lr(function(t,n){return typeof t=="function"?new Dt(this):this.map(function(r){return Mn(r,t,n)})}),Dt.prototype.reject=function(t){return this.filter(uu(he(t)))},Dt.prototype.slice=function(t,n){t=ju(t);var r=this;return r.__filtered__&&(0n)?new Dt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)), -n!==F&&(n=ju(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},Dt.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Dt.prototype.toArray=function(){return this.take(4294967295)},On(Dt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=Ot[e?"take"+("last"==n?"Right":""):n],i=e||/^find/.test(n);u&&(Ot.prototype[n]=function(){function n(t){return t=u.apply(Ot,s([t],f)),e&&h?t[0]:t}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Dt,a=f[0],l=c||tf(o); -l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Dt(this),o=t.apply(o,f),o.__actions__.push({func:Ke,args:[n],thisArg:F}),new Mt(o,h)):a&&c?t.apply(this,f):(o=this.thru(n),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=Qu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Ot.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){ -var u=this.value();return n.apply(tf(u)?u:[],t)}return this[r](function(r){return n.apply(tf(r)?r:[],t)})}}),On(Dt.prototype,function(t,n){var r=Ot[n];if(r){var e=r.name+"";(Zi[e]||(Zi[e]=[])).push({name:n,func:r})}}),Zi[Jr(F,2).name]=[{name:"wrapper",func:F}],Dt.prototype.clone=function(){var t=new Dt(this.__wrapped__);return t.__actions__=Ur(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ur(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ur(this.__views__), -t},Dt.prototype.reverse=function(){if(this.__filtered__){var t=new Dt(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Dt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=tf(n),u=0>r,i=e?n.length:0;t=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++ci||i==t&&a==t)return Ar(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length;return{done:t,value:t?F:this.__values__[this.__index__++]}},Ot.prototype.plant=function(t){for(var n,r=this;r instanceof Rt;){var e=Ce(r);e.__index__=0,e.__values__=F,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},Ot.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Dt?(this.__actions__.length&&(t=new Dt(this)),t=t.reverse(),t.__actions__.push({func:Ke,args:[Pe],thisArg:F}),new Mt(t,this.__chain__)):this.thru(Pe); -},Ot.prototype.toJSON=Ot.prototype.valueOf=Ot.prototype.value=function(){return Ar(this.__wrapped__,this.__actions__)},Ot.prototype.first=Ot.prototype.head,vi&&(Ot.prototype[vi]=Ge),Ot}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Pt._=un, define(function(){return un})):qt?((qt.exports=un)._=un,Zt._=un):Pt._=un}).call(this); \ No newline at end of file +n=Cf(function(){return Ku(o,l+"return "+a).apply(F,f)}),n.source=a,lu(n))throw n;return n},Ot.times=function(t,n){if(t=wu(t),1>t||9007199254740991=i)return t;if(i=r-T(e),1>i)return e;if(r=o?Ir(o,0,i).join(""):t.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),ff(u)){if(t.slice(i).search(u)){var f=r;for(u.global||(u=Yu(u.source,Eu(gt.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else t.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Dt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Dt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:_e(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Dt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right"); +Dt.prototype[t]=function(){return this.__filtered__?new Dt(this):this[r](1)}}),Dt.prototype.compact=function(){return this.filter(Mu)},Dt.prototype.find=function(t){return this.filter(t).head()},Dt.prototype.findLast=function(t){return this.reverse().find(t)},Dt.prototype.invokeMap=lr(function(t,n){return typeof t=="function"?new Dt(this):this.map(function(r){return Mn(r,t,n)})}),Dt.prototype.reject=function(t){return this.filter(ou(_e(t)))},Dt.prototype.slice=function(t,n){t=wu(t);var r=this;return r.__filtered__&&(0n)?new Dt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)), +n!==F&&(n=wu(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},Dt.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Dt.prototype.toArray=function(){return this.take(4294967295)},On(Dt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=Ot[e?"take"+("last"==n?"Right":""):n],i=e||/^find/.test(n);u&&(Ot.prototype[n]=function(){function n(t){return t=u.apply(Ot,s([t],f)),e&&h?t[0]:t}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Dt,a=f[0],l=c||nf(o); +l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Dt(this),o=t.apply(o,f),o.__actions__.push({func:Je,args:[n],thisArg:F}),new Mt(o,h)):a&&c?t.apply(this,f):(o=this.thru(n),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=Xu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Ot.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){ +var u=this.value();return n.apply(nf(u)?u:[],t)}return this[r](function(r){return n.apply(nf(r)?r:[],t)})}}),On(Dt.prototype,function(t,n){var r=Ot[n];if(r){var e=r.name+"";(Zi[e]||(Zi[e]=[])).push({name:n,func:r})}}),Zi[Yr(F,2).name]=[{name:"wrapper",func:F}],Dt.prototype.clone=function(){var t=new Dt(this.__wrapped__);return t.__actions__=Cr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Cr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Cr(this.__views__), +t},Dt.prototype.reverse=function(){if(this.__filtered__){var t=new Dt(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Dt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=nf(n),u=0>r,i=e?n.length:0;t=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++ci||i==t&&a==t)return Ar(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length;return{done:t,value:t?F:this.__values__[this.__index__++]}},Ot.prototype.plant=function(t){for(var n,r=this;r instanceof Rt;){var e=De(r);e.__index__=0,e.__values__=F,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},Ot.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Dt?(this.__actions__.length&&(t=new Dt(this)),t=t.reverse(),t.__actions__.push({func:Je,args:[qe],thisArg:F}),new Mt(t,this.__chain__)):this.thru(qe); +},Ot.prototype.toJSON=Ot.prototype.valueOf=Ot.prototype.value=function(){return Ar(this.__wrapped__,this.__actions__)},Ot.prototype.first=Ot.prototype.head,vi&&(Ot.prototype[vi]=Ye),Ot}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Pt._=un, define(function(){return un})):qt?((qt.exports=un)._=un,Zt._=un):Pt._=un}).call(this); \ No newline at end of file diff --git a/StockManMVC/node_modules/lodash/package.json b/StockManMVC/node_modules/lodash/package.json index c9e9022..5f87ce3 100644 --- a/StockManMVC/node_modules/lodash/package.json +++ b/StockManMVC/node_modules/lodash/package.json @@ -1,18 +1,18 @@ { "_args": [ [ - "lodash@^4.8.0", + "lodash@^4.14.0", "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\node_modules\\async" ] ], - "_from": "lodash@>=4.8.0-0 <5.0.0-0", - "_id": "lodash@4.16.2", + "_from": "lodash@>=4.14.0-0 <5.0.0-0", + "_id": "lodash@4.16.4", "_inCache": true, "_location": "/lodash", "_nodeVersion": "4.4.7", "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/lodash-4.16.2.tgz_1474859465050_0.057903866516426206" + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/lodash-4.16.4.tgz_1475766806071_0.6463651182129979" }, "_npmUser": { "email": "john.david.dalton@gmail.com", @@ -22,19 +22,19 @@ "_phantomChildren": {}, "_requested": { "name": "lodash", - "raw": "lodash@^4.8.0", - "rawSpec": "^4.8.0", + "raw": "lodash@^4.14.0", + "rawSpec": "^4.14.0", "scope": null, - "spec": ">=4.8.0-0 <5.0.0-0", + "spec": ">=4.14.0-0 <5.0.0-0", "type": "range" }, "_requiredBy": [ "/async" ], - "_resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz", - "_shasum": "3e626db827048a699281a8a125226326cfc0e652", + "_resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz", + "_shasum": "01ce306b9bad1319f2a5528674f88297aeb70127", "_shrinkwrap": null, - "_spec": "lodash@^4.8.0", + "_spec": "lodash@^4.14.0", "_where": "C:\\Users\\samuele.STEAMWAREWIN\\Documents\\VisualStudioProjects\\StockMan\\StockManMVC\\node_modules\\async", "author": { "email": "john.david.dalton@gmail.com", @@ -66,8 +66,8 @@ "devDependencies": {}, "directories": {}, "dist": { - "shasum": "3e626db827048a699281a8a125226326cfc0e652", - "tarball": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz" + "shasum": "01ce306b9bad1319f2a5528674f88297aeb70127", + "tarball": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz" }, "homepage": "https://lodash.com/", "icon": "https://lodash.com/icon.svg", @@ -102,5 +102,5 @@ "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }, - "version": "4.16.2" + "version": "4.16.4" } diff --git a/StockManMVC/node_modules/lodash/toString.js b/StockManMVC/node_modules/lodash/toString.js index f20d65a..daaf681 100644 --- a/StockManMVC/node_modules/lodash/toString.js +++ b/StockManMVC/node_modules/lodash/toString.js @@ -8,8 +8,8 @@ var baseToString = require('./_baseToString'); * @memberOf _ * @since 4.0.0 * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. * @example * * _.toString(null); diff --git a/StockManMVC/node_modules/lodash/transform.js b/StockManMVC/node_modules/lodash/transform.js index f438ed8..d755a15 100644 --- a/StockManMVC/node_modules/lodash/transform.js +++ b/StockManMVC/node_modules/lodash/transform.js @@ -4,6 +4,7 @@ var arrayEach = require('./_arrayEach'), baseIteratee = require('./_baseIteratee'), getPrototype = require('./_getPrototype'), isArray = require('./isArray'), + isBuffer = require('./isBuffer'), isFunction = require('./isFunction'), isObject = require('./isObject'), isTypedArray = require('./isTypedArray'); @@ -39,22 +40,23 @@ var arrayEach = require('./_arrayEach'), * // => { '1': ['a', 'c'], '2': ['b'] } */ function transform(object, iteratee, accumulator) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = baseIteratee(iteratee, 4); + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + iteratee = baseIteratee(iteratee, 4); if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - } else { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { accumulator = {}; } } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { return iteratee(accumulator, value, index, object); }); return accumulator; diff --git a/StockManMVC/packages.config b/StockManMVC/packages.config index b44e69e..1c6a3b3 100644 --- a/StockManMVC/packages.config +++ b/StockManMVC/packages.config @@ -2,6 +2,7 @@ + @@ -26,6 +27,8 @@ + + diff --git a/VersGen/VersGen.cs b/VersGen/VersGen.cs index ef73ae2..1836bf1 100644 --- a/VersGen/VersGen.cs +++ b/VersGen/VersGen.cs @@ -5,7 +5,7 @@ using System.Reflection; -[assembly: AssemblyVersion("1.0.37.562")] -[assembly: AssemblyFileVersion("1.0.37.562")] +[assembly: AssemblyVersion("1.0.38.562")] +[assembly: AssemblyFileVersion("1.0.38.562")] [assembly: AssemblyCopyright("Steamware © 2006-2016")] [assembly: AssemblyCompany("Steamware")] diff --git a/VersGen/VersGen.tt b/VersGen/VersGen.tt index 6bb2939..d91c665 100644 --- a/VersGen/VersGen.tt +++ b/VersGen/VersGen.tt @@ -6,8 +6,8 @@ using System.Reflection; -[assembly: AssemblyVersion("1.0.37.<#= this.RevisionNumber #>")] -[assembly: AssemblyFileVersion("1.0.37.<#= this.RevisionNumber #>")] +[assembly: AssemblyVersion("1.0.38.<#= this.RevisionNumber #>")] +[assembly: AssemblyFileVersion("1.0.38.<#= this.RevisionNumber #>")] [assembly: AssemblyCopyright("Steamware © 2006-<#= DateTime.Now.Year #>")] [assembly: AssemblyCompany("Steamware")] <#+ diff --git a/VersGen/obj/Release/TempPE/VersGen.cs.dll b/VersGen/obj/Release/TempPE/VersGen.cs.dll index ade16e81632d37991c80079ceacc6e99a546c36f..d32ff41aebe4c30543b3bf9b5294384d24a10b7b 100644 GIT binary patch delta 48 zcmV-00MGw`5P%Snhyt|1v5NQt0VcD916=_S#?OursMr!mjO^sU8G01ylkfys0XVZs G1-An8VH7+7 delta 48 zcmZn=Xb_mt!K9S7vFisDqw3~n=2%97GMzo&a`+;BcJO*cZ@zw4e)0#F2uAbGo~+xM E0I&HG_W%F@ diff --git a/packages/Bower.1.3.11/Bower.1.3.11.nupkg b/packages/Bower.1.3.11/Bower.1.3.11.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..c171f95a29b52f6885d34c103a749e6ab00bd420 GIT binary patch literal 3290639 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%0A#- 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ø>y$HeB;mV7T3I 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 z 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 NxH5>#nZe|3(7iOEi_3RP#}&{TAR8J#T4M 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