@corva/dc-platform-shared 0.0.0-2eb17ab-1 → 0.0.0-4bc927c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2875) hide show
  1. package/CLI/components/App/App.css.js +1 -0
  2. package/CLI/context/auth.js +1 -0
  3. package/CLI/hocs/effects/useProvideAuth/api.js +1 -0
  4. package/CLI/hocs/effects/useProvideAuth/constants.js +1 -0
  5. package/CLI/hocs/effects/useProvideAuth/useProvideAuth.js +1 -0
  6. package/CLI/hocs/withGridLayoutHOC/withGridLayoutHOC.js +1 -0
  7. package/CLI/screens/LoginScreen/LoginScreen.js +1 -0
  8. package/CLI/screens/LoginScreen/components/Auth.js +1 -0
  9. package/CLI/screens/LoginScreen/components/AuthStep.js +1 -0
  10. package/CLI/screens/LoginScreen/components/EmailStep.js +1 -0
  11. package/README.md +1 -0
  12. package/cjs/devcenter/webpack/DevServerEntryPoint.js +1 -0
  13. package/cjs/devcenter/webpack/DevServerIsolatedAppEntryPoint.js +1 -0
  14. package/{dist/cjs → cjs}/devcenter/webpack/constants.js +1 -1
  15. package/cjs/devcenter/webpack/webpack.config.common.js +1 -0
  16. package/cjs/devcenter/webpack/webpack.config.prod.js +1 -0
  17. package/components/AppsGridDragHandle/AppsGridDragHandle.scss.js +1 -0
  18. package/components/GridLockButton/index.js +1 -0
  19. package/{dist/components → components}/Login/components/EmailField.js +1 -1
  20. package/components/Login/components/VerificationStep.js +1 -0
  21. package/components/Login/index.js +1 -0
  22. package/package.json +1 -167
  23. package/.circleci/config.yml +0 -236
  24. package/.eslintignore +0 -2
  25. package/.eslintrc +0 -14
  26. package/.git-hooks/commit-msg +0 -6
  27. package/.git-hooks/pre-commit +0 -3
  28. package/.github/workflows/auto-release.yml +0 -33
  29. package/.github/workflows/validate-pr-title.yml +0 -19
  30. package/.prettierrc +0 -1
  31. package/.versionrc.json +0 -7
  32. package/CHANGELOG.md +0 -400
  33. package/CODEOWNERS +0 -4
  34. package/babel.config.js +0 -34
  35. package/dist/CLI/components/App/App.css.js +0 -1
  36. package/dist/CLI/context/auth.js +0 -1
  37. package/dist/CLI/hocs/effects/useProvideAuth/useProvideAuth.js +0 -1
  38. package/dist/CLI/hocs/withGridLayoutHOC/withGridLayoutHOC.js +0 -1
  39. package/dist/CLI/screens/LoginScreen/LoginScreen.js +0 -1
  40. package/dist/CLI/screens/LoginScreen/components/Auth.js +0 -1
  41. package/dist/CLI/screens/LoginScreen/components/AuthStep.js +0 -1
  42. package/dist/CLI/screens/LoginScreen/components/EmailStep.js +0 -1
  43. package/dist/LICENSE +0 -0
  44. package/dist/README.md +0 -27
  45. package/dist/cjs/devcenter/webpack/DevServerEntryPoint.js +0 -1
  46. package/dist/cjs/devcenter/webpack/DevServerIsolatedAppEntryPoint.js +0 -1
  47. package/dist/cjs/devcenter/webpack/webpack.config.common.js +0 -1
  48. package/dist/cjs/devcenter/webpack/webpack.config.prod.js +0 -1
  49. package/dist/components/AppsGridDragHandle/AppsGridDragHandle.scss.js +0 -1
  50. package/dist/components/GridLockButton/index.js +0 -1
  51. package/dist/components/Login/index.js +0 -1
  52. package/dist/node_modules/@corva/eslint-config-browser/README.md +0 -27
  53. package/dist/node_modules/@corva/eslint-config-browser/eslint/index.js +0 -82
  54. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/LICENSE +0 -22
  55. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/README.md +0 -19
  56. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/caching.js +0 -327
  57. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/config-chain.js +0 -552
  58. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/config-descriptors.js +0 -211
  59. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/configuration.js +0 -342
  60. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/import.js +0 -10
  61. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/index-browser.js +0 -68
  62. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/index.js +0 -79
  63. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/module-types.js +0 -96
  64. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/package.js +0 -78
  65. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/plugins.js +0 -192
  66. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/types.js +0 -0
  67. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/files/utils.js +0 -48
  68. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/full.js +0 -329
  69. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/helpers/config-api.js +0 -85
  70. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/helpers/environment.js +0 -10
  71. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/index.js +0 -57
  72. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/item.js +0 -78
  73. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/partial.js +0 -187
  74. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/pattern-to-regex.js +0 -52
  75. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/plugin.js +0 -30
  76. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/printer.js +0 -127
  77. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/util.js +0 -35
  78. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/validation/option-assertions.js +0 -268
  79. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/validation/options.js +0 -201
  80. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/validation/plugins.js +0 -71
  81. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/config/validation/removed.js +0 -66
  82. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/gensync-utils/async.js +0 -89
  83. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/gensync-utils/fs.js +0 -53
  84. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/index.js +0 -266
  85. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/parse.js +0 -50
  86. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/parser/index.js +0 -97
  87. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js +0 -307
  88. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/tools/build-external-helpers.js +0 -148
  89. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transform-ast.js +0 -48
  90. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transform-file-browser.js +0 -26
  91. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transform-file.js +0 -45
  92. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transform.js +0 -44
  93. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js +0 -68
  94. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/file/file.js +0 -255
  95. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/file/generate.js +0 -89
  96. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/file/merge-map.js +0 -247
  97. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/index.js +0 -126
  98. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/normalize-file.js +0 -179
  99. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/normalize-opts.js +0 -65
  100. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/lib/transformation/plugin-pass.js +0 -53
  101. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/package.json +0 -65
  102. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/src/config/files/index-browser.js +0 -96
  103. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/src/config/files/index.js +0 -31
  104. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/src/transform-file-browser.js +0 -29
  105. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/core/src/transform-file.js +0 -40
  106. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/LICENSE +0 -22
  107. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/README.md +0 -108
  108. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/analyze-scope.js +0 -356
  109. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/configuration.js +0 -66
  110. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/convert/convertAST.js +0 -158
  111. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/convert/convertComments.js +0 -20
  112. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/convert/convertTokens.js +0 -150
  113. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/convert/index.js +0 -20
  114. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/index.js +0 -66
  115. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/lib/visitor-keys.js +0 -28
  116. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/LICENSE +0 -15
  117. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/README.md +0 -443
  118. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/bin/semver.js +0 -174
  119. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/package.json +0 -38
  120. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/range.bnf +0 -16
  121. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/node_modules/semver/semver.js +0 -1643
  122. package/dist/node_modules/@corva/eslint-config-browser/node_modules/@babel/eslint-parser/package.json +0 -42
  123. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/.babelrc +0 -3
  124. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/.eslintrc +0 -8
  125. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/CHANGELOG.md +0 -444
  126. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/LICENSE.md +0 -21
  127. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/README.md +0 -85
  128. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/base.js +0 -4
  129. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/hooks.js +0 -6
  130. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/index.js +0 -8
  131. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/legacy.js +0 -4
  132. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/package.json +0 -87
  133. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/rules/react-a11y.js +0 -247
  134. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/rules/react-hooks.js +0 -21
  135. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/rules/react.js +0 -552
  136. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/test/.eslintrc +0 -9
  137. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/test/requires.js +0 -15
  138. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/test/test-base.js +0 -34
  139. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/test/test-react-order.js +0 -136
  140. package/dist/node_modules/@corva/eslint-config-browser/node_modules/eslint-config-airbnb/whitespace.js +0 -105
  141. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/LICENSE +0 -47
  142. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/README.md +0 -39
  143. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_DataView.js +0 -7
  144. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Hash.js +0 -32
  145. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_LazyWrapper.js +0 -28
  146. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_ListCache.js +0 -32
  147. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_LodashWrapper.js +0 -22
  148. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Map.js +0 -7
  149. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_MapCache.js +0 -32
  150. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Promise.js +0 -7
  151. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Set.js +0 -7
  152. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_SetCache.js +0 -27
  153. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Stack.js +0 -27
  154. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Symbol.js +0 -6
  155. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_Uint8Array.js +0 -6
  156. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_WeakMap.js +0 -7
  157. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_apply.js +0 -21
  158. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayAggregator.js +0 -22
  159. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayEach.js +0 -22
  160. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayEachRight.js +0 -21
  161. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayEvery.js +0 -23
  162. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayFilter.js +0 -25
  163. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayIncludes.js +0 -17
  164. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayIncludesWith.js +0 -22
  165. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayLikeKeys.js +0 -49
  166. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayMap.js +0 -21
  167. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayPush.js +0 -20
  168. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayReduce.js +0 -26
  169. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayReduceRight.js +0 -24
  170. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arraySample.js +0 -15
  171. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arraySampleSize.js +0 -17
  172. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arrayShuffle.js +0 -15
  173. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_arraySome.js +0 -23
  174. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_asciiSize.js +0 -12
  175. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_asciiToArray.js +0 -12
  176. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_asciiWords.js +0 -15
  177. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_assignMergeValue.js +0 -20
  178. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_assignValue.js +0 -28
  179. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_assocIndexOf.js +0 -21
  180. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseAggregator.js +0 -21
  181. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseAssign.js +0 -17
  182. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseAssignIn.js +0 -17
  183. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseAssignValue.js +0 -25
  184. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseAt.js +0 -23
  185. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseClamp.js +0 -22
  186. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseClone.js +0 -166
  187. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseConforms.js +0 -18
  188. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseConformsTo.js +0 -27
  189. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseCreate.js +0 -30
  190. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseDelay.js +0 -21
  191. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseDifference.js +0 -67
  192. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseEach.js +0 -14
  193. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseEachRight.js +0 -14
  194. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseEvery.js +0 -21
  195. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseExtremum.js +0 -32
  196. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFill.js +0 -32
  197. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFilter.js +0 -21
  198. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFindIndex.js +0 -24
  199. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFindKey.js +0 -23
  200. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFlatten.js +0 -38
  201. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFor.js +0 -16
  202. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseForOwn.js +0 -16
  203. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseForOwnRight.js +0 -16
  204. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseForRight.js +0 -15
  205. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseFunctions.js +0 -19
  206. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseGet.js +0 -24
  207. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseGetAllKeys.js +0 -20
  208. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseGetTag.js +0 -28
  209. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseGt.js +0 -14
  210. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseHas.js +0 -19
  211. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseHasIn.js +0 -13
  212. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseInRange.js +0 -18
  213. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIndexOf.js +0 -20
  214. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIndexOfWith.js +0 -23
  215. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIntersection.js +0 -74
  216. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseInverter.js +0 -21
  217. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseInvoke.js +0 -24
  218. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsArguments.js +0 -18
  219. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsArrayBuffer.js +0 -17
  220. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsDate.js +0 -18
  221. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsEqual.js +0 -28
  222. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsEqualDeep.js +0 -83
  223. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsMap.js +0 -18
  224. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsMatch.js +0 -62
  225. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsNaN.js +0 -12
  226. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsNative.js +0 -47
  227. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsRegExp.js +0 -18
  228. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsSet.js +0 -18
  229. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIsTypedArray.js +0 -60
  230. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseIteratee.js +0 -31
  231. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseKeys.js +0 -30
  232. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseKeysIn.js +0 -33
  233. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseLodash.js +0 -10
  234. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseLt.js +0 -14
  235. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMap.js +0 -22
  236. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMatches.js +0 -22
  237. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMatchesProperty.js +0 -33
  238. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMean.js +0 -20
  239. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMerge.js +0 -42
  240. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseMergeDeep.js +0 -94
  241. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseNth.js +0 -20
  242. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseOrderBy.js +0 -49
  243. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePick.js +0 -19
  244. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePickBy.js +0 -30
  245. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseProperty.js +0 -14
  246. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePropertyDeep.js +0 -16
  247. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePropertyOf.js +0 -14
  248. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePullAll.js +0 -51
  249. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_basePullAt.js +0 -37
  250. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseRandom.js +0 -18
  251. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseRange.js +0 -28
  252. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseReduce.js +0 -23
  253. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseRepeat.js +0 -35
  254. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseRest.js +0 -17
  255. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSample.js +0 -15
  256. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSampleSize.js +0 -18
  257. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSet.js +0 -51
  258. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSetData.js +0 -17
  259. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSetToString.js +0 -22
  260. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseShuffle.js +0 -15
  261. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSlice.js +0 -31
  262. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSome.js +0 -22
  263. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSortBy.js +0 -21
  264. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSortedIndex.js +0 -42
  265. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSortedIndexBy.js +0 -67
  266. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSortedUniq.js +0 -30
  267. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseSum.js +0 -24
  268. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseTimes.js +0 -20
  269. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseToNumber.js +0 -24
  270. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseToPairs.js +0 -18
  271. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseToString.js +0 -37
  272. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseTrim.js +0 -19
  273. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseUnary.js +0 -14
  274. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseUniq.js +0 -72
  275. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseUnset.js +0 -20
  276. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseUpdate.js +0 -18
  277. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseValues.js +0 -19
  278. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseWhile.js +0 -26
  279. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseWrapperValue.js +0 -25
  280. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseXor.js +0 -36
  281. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_baseZipObject.js +0 -23
  282. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cacheHas.js +0 -13
  283. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_castArrayLikeObject.js +0 -14
  284. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_castFunction.js +0 -14
  285. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_castPath.js +0 -21
  286. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_castRest.js +0 -14
  287. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_castSlice.js +0 -18
  288. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_charsEndIndex.js +0 -19
  289. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_charsStartIndex.js +0 -20
  290. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneArrayBuffer.js +0 -16
  291. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneBuffer.js +0 -35
  292. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneDataView.js +0 -16
  293. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneRegExp.js +0 -17
  294. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneSymbol.js +0 -18
  295. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_cloneTypedArray.js +0 -16
  296. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_compareAscending.js +0 -41
  297. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_compareMultiple.js +0 -44
  298. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_composeArgs.js +0 -39
  299. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_composeArgsRight.js +0 -41
  300. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_copyArray.js +0 -20
  301. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_copyObject.js +0 -40
  302. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_copySymbols.js +0 -16
  303. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_copySymbolsIn.js +0 -16
  304. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_coreJsData.js +0 -6
  305. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_countHolders.js +0 -21
  306. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createAggregator.js +0 -23
  307. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createAssigner.js +0 -37
  308. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createBaseEach.js +0 -32
  309. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createBaseFor.js +0 -25
  310. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createBind.js +0 -28
  311. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createCaseFirst.js +0 -33
  312. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createCompounder.js +0 -24
  313. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createCtor.js +0 -37
  314. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createCurry.js +0 -46
  315. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createFind.js +0 -25
  316. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createFlow.js +0 -78
  317. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createHybrid.js +0 -92
  318. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createInverter.js +0 -17
  319. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createMathOperation.js +0 -38
  320. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createOver.js +0 -27
  321. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createPadding.js +0 -33
  322. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createPartial.js +0 -43
  323. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createRange.js +0 -30
  324. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createRecurry.js +0 -56
  325. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createRelationalOperation.js +0 -20
  326. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createRound.js +0 -35
  327. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createSet.js +0 -19
  328. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createToPairs.js +0 -30
  329. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_createWrap.js +0 -106
  330. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_customDefaultsAssignIn.js +0 -29
  331. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_customDefaultsMerge.js +0 -28
  332. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_customOmitClone.js +0 -16
  333. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_deburrLetter.js +0 -71
  334. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_defineProperty.js +0 -11
  335. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_equalArrays.js +0 -84
  336. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_equalByTag.js +0 -112
  337. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_equalObjects.js +0 -90
  338. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_escapeHtmlChar.js +0 -21
  339. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_escapeStringChar.js +0 -22
  340. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_flatRest.js +0 -16
  341. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_freeGlobal.js +0 -4
  342. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getAllKeys.js +0 -16
  343. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getAllKeysIn.js +0 -17
  344. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getData.js +0 -15
  345. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getFuncName.js +0 -31
  346. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getHolder.js +0 -13
  347. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getMapData.js +0 -18
  348. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getMatchData.js +0 -24
  349. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getNative.js +0 -17
  350. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getPrototype.js +0 -6
  351. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getRawTag.js +0 -46
  352. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getSymbols.js +0 -30
  353. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getSymbolsIn.js +0 -25
  354. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getTag.js +0 -58
  355. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getValue.js +0 -13
  356. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getView.js +0 -33
  357. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_getWrapDetails.js +0 -17
  358. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hasPath.js +0 -39
  359. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hasUnicode.js +0 -26
  360. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hasUnicodeWord.js +0 -15
  361. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hashClear.js +0 -15
  362. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hashDelete.js +0 -17
  363. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hashGet.js +0 -30
  364. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hashHas.js +0 -23
  365. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_hashSet.js +0 -23
  366. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_initCloneArray.js +0 -26
  367. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_initCloneByTag.js +0 -77
  368. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_initCloneObject.js +0 -18
  369. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_insertWrapDetails.js +0 -23
  370. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isFlattenable.js +0 -20
  371. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isIndex.js +0 -25
  372. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isIterateeCall.js +0 -30
  373. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isKey.js +0 -29
  374. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isKeyable.js +0 -15
  375. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isLaziable.js +0 -28
  376. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isMaskable.js +0 -14
  377. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isMasked.js +0 -20
  378. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isPrototype.js +0 -18
  379. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_isStrictComparable.js +0 -15
  380. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_iteratorToArray.js +0 -18
  381. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_lazyClone.js +0 -23
  382. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_lazyReverse.js +0 -23
  383. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_lazyValue.js +0 -69
  384. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_listCacheClear.js +0 -13
  385. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_listCacheDelete.js +0 -35
  386. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_listCacheGet.js +0 -19
  387. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_listCacheHas.js +0 -16
  388. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_listCacheSet.js +0 -26
  389. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapCacheClear.js +0 -21
  390. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapCacheDelete.js +0 -18
  391. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapCacheGet.js +0 -16
  392. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapCacheHas.js +0 -16
  393. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapCacheSet.js +0 -22
  394. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mapToArray.js +0 -18
  395. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_matchesStrictComparable.js +0 -20
  396. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_memoizeCapped.js +0 -26
  397. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_mergeData.js +0 -90
  398. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_metaMap.js +0 -6
  399. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_nativeCreate.js +0 -6
  400. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_nativeKeys.js +0 -6
  401. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_nativeKeysIn.js +0 -20
  402. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_nodeUtil.js +0 -30
  403. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_objectToString.js +0 -22
  404. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_overArg.js +0 -15
  405. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_overRest.js +0 -36
  406. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_parent.js +0 -16
  407. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_reEscape.js +0 -4
  408. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_reEvaluate.js +0 -4
  409. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_reInterpolate.js +0 -4
  410. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_realNames.js +0 -4
  411. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_reorder.js +0 -29
  412. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_replaceHolders.js +0 -29
  413. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_root.js +0 -9
  414. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_safeGet.js +0 -21
  415. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setCacheAdd.js +0 -19
  416. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setCacheHas.js +0 -14
  417. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setData.js +0 -20
  418. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setToArray.js +0 -18
  419. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setToPairs.js +0 -18
  420. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setToString.js +0 -14
  421. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_setWrapToString.js +0 -21
  422. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_shortOut.js +0 -37
  423. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_shuffleSelf.js +0 -28
  424. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stackClear.js +0 -15
  425. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stackDelete.js +0 -18
  426. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stackGet.js +0 -14
  427. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stackHas.js +0 -14
  428. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stackSet.js +0 -34
  429. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_strictIndexOf.js +0 -23
  430. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_strictLastIndexOf.js +0 -21
  431. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stringSize.js +0 -18
  432. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stringToArray.js +0 -18
  433. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_stringToPath.js +0 -27
  434. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_toKey.js +0 -21
  435. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_toSource.js +0 -26
  436. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_trimmedEndIndex.js +0 -19
  437. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_unescapeHtmlChar.js +0 -21
  438. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_unicodeSize.js +0 -44
  439. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_unicodeToArray.js +0 -40
  440. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_unicodeWords.js +0 -69
  441. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_updateWrapDetails.js +0 -46
  442. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/_wrapperClone.js +0 -23
  443. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/add.js +0 -22
  444. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/after.js +0 -42
  445. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/array.js +0 -67
  446. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/ary.js +0 -29
  447. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/assign.js +0 -58
  448. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/assignIn.js +0 -40
  449. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/assignInWith.js +0 -38
  450. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/assignWith.js +0 -37
  451. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/at.js +0 -23
  452. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/attempt.js +0 -35
  453. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/before.js +0 -40
  454. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/bind.js +0 -57
  455. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/bindAll.js +0 -41
  456. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/bindKey.js +0 -68
  457. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/camelCase.js +0 -29
  458. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/capitalize.js +0 -23
  459. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/castArray.js +0 -44
  460. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/ceil.js +0 -26
  461. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/chain.js +0 -38
  462. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/chunk.js +0 -50
  463. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/clamp.js +0 -39
  464. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/clone.js +0 -36
  465. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/cloneDeep.js +0 -29
  466. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/cloneDeepWith.js +0 -40
  467. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/cloneWith.js +0 -42
  468. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/collection.js +0 -30
  469. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/commit.js +0 -33
  470. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/compact.js +0 -31
  471. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/concat.js +0 -43
  472. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/cond.js +0 -60
  473. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/conforms.js +0 -35
  474. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/conformsTo.js +0 -32
  475. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/constant.js +0 -26
  476. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/core.js +0 -3877
  477. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/core.min.js +0 -29
  478. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/countBy.js +0 -40
  479. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/create.js +0 -43
  480. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/curry.js +0 -57
  481. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/curryRight.js +0 -54
  482. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/date.js +0 -3
  483. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/debounce.js +0 -191
  484. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/deburr.js +0 -45
  485. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/defaultTo.js +0 -25
  486. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/defaults.js +0 -64
  487. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/defaultsDeep.js +0 -30
  488. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/defer.js +0 -26
  489. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/delay.js +0 -28
  490. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/difference.js +0 -33
  491. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/differenceBy.js +0 -44
  492. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/differenceWith.js +0 -40
  493. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/divide.js +0 -22
  494. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/drop.js +0 -38
  495. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/dropRight.js +0 -39
  496. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/dropRightWhile.js +0 -45
  497. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/dropWhile.js +0 -45
  498. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/each.js +0 -1
  499. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/eachRight.js +0 -1
  500. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/endsWith.js +0 -43
  501. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/entries.js +0 -1
  502. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/entriesIn.js +0 -1
  503. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/eq.js +0 -37
  504. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/escape.js +0 -43
  505. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/escapeRegExp.js +0 -32
  506. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/every.js +0 -56
  507. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/extend.js +0 -1
  508. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/extendWith.js +0 -1
  509. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fill.js +0 -45
  510. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/filter.js +0 -52
  511. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/find.js +0 -42
  512. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/findIndex.js +0 -55
  513. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/findKey.js +0 -44
  514. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/findLast.js +0 -25
  515. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/findLastIndex.js +0 -59
  516. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/findLastKey.js +0 -44
  517. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/first.js +0 -1
  518. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flake.lock +0 -40
  519. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flake.nix +0 -20
  520. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flatMap.js +0 -29
  521. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flatMapDeep.js +0 -31
  522. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flatMapDepth.js +0 -31
  523. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flatten.js +0 -22
  524. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flattenDeep.js +0 -25
  525. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flattenDepth.js +0 -33
  526. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flip.js +0 -28
  527. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/floor.js +0 -26
  528. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flow.js +0 -27
  529. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/flowRight.js +0 -26
  530. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forEach.js +0 -41
  531. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forEachRight.js +0 -31
  532. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forIn.js +0 -39
  533. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forInRight.js +0 -37
  534. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forOwn.js +0 -36
  535. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/forOwnRight.js +0 -34
  536. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/F.js +0 -1
  537. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/T.js +0 -1
  538. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/__.js +0 -1
  539. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/_baseConvert.js +0 -569
  540. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/_convertBrowser.js +0 -18
  541. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/_falseOptions.js +0 -7
  542. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/_mapping.js +0 -358
  543. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/_util.js +0 -16
  544. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/add.js +0 -5
  545. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/after.js +0 -5
  546. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/all.js +0 -1
  547. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/allPass.js +0 -1
  548. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/always.js +0 -1
  549. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/any.js +0 -1
  550. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/anyPass.js +0 -1
  551. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/apply.js +0 -1
  552. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/array.js +0 -2
  553. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/ary.js +0 -5
  554. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assign.js +0 -5
  555. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignAll.js +0 -5
  556. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignAllWith.js +0 -5
  557. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignIn.js +0 -5
  558. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignInAll.js +0 -5
  559. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignInAllWith.js +0 -5
  560. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignInWith.js +0 -5
  561. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assignWith.js +0 -5
  562. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assoc.js +0 -1
  563. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/assocPath.js +0 -1
  564. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/at.js +0 -5
  565. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/attempt.js +0 -5
  566. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/before.js +0 -5
  567. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/bind.js +0 -5
  568. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/bindAll.js +0 -5
  569. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/bindKey.js +0 -5
  570. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/camelCase.js +0 -5
  571. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/capitalize.js +0 -5
  572. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/castArray.js +0 -5
  573. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/ceil.js +0 -5
  574. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/chain.js +0 -5
  575. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/chunk.js +0 -5
  576. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/clamp.js +0 -5
  577. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/clone.js +0 -5
  578. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/cloneDeep.js +0 -5
  579. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/cloneDeepWith.js +0 -5
  580. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/cloneWith.js +0 -5
  581. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/collection.js +0 -2
  582. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/commit.js +0 -5
  583. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/compact.js +0 -5
  584. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/complement.js +0 -1
  585. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/compose.js +0 -1
  586. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/concat.js +0 -5
  587. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/cond.js +0 -5
  588. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/conforms.js +0 -1
  589. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/conformsTo.js +0 -5
  590. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/constant.js +0 -5
  591. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/contains.js +0 -1
  592. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/convert.js +0 -18
  593. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/countBy.js +0 -5
  594. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/create.js +0 -5
  595. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/curry.js +0 -5
  596. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/curryN.js +0 -5
  597. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/curryRight.js +0 -5
  598. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/curryRightN.js +0 -5
  599. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/date.js +0 -2
  600. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/debounce.js +0 -5
  601. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/deburr.js +0 -5
  602. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defaultTo.js +0 -5
  603. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defaults.js +0 -5
  604. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defaultsAll.js +0 -5
  605. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defaultsDeep.js +0 -5
  606. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defaultsDeepAll.js +0 -5
  607. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/defer.js +0 -5
  608. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/delay.js +0 -5
  609. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/difference.js +0 -5
  610. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/differenceBy.js +0 -5
  611. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/differenceWith.js +0 -5
  612. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dissoc.js +0 -1
  613. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dissocPath.js +0 -1
  614. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/divide.js +0 -5
  615. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/drop.js +0 -5
  616. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dropLast.js +0 -1
  617. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dropLastWhile.js +0 -1
  618. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dropRight.js +0 -5
  619. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dropRightWhile.js +0 -5
  620. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/dropWhile.js +0 -5
  621. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/each.js +0 -1
  622. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/eachRight.js +0 -1
  623. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/endsWith.js +0 -5
  624. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/entries.js +0 -1
  625. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/entriesIn.js +0 -1
  626. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/eq.js +0 -5
  627. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/equals.js +0 -1
  628. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/escape.js +0 -5
  629. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/escapeRegExp.js +0 -5
  630. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/every.js +0 -5
  631. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/extend.js +0 -1
  632. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/extendAll.js +0 -1
  633. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/extendAllWith.js +0 -1
  634. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/extendWith.js +0 -1
  635. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/fill.js +0 -5
  636. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/filter.js +0 -5
  637. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/find.js +0 -5
  638. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findFrom.js +0 -5
  639. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findIndex.js +0 -5
  640. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findIndexFrom.js +0 -5
  641. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findKey.js +0 -5
  642. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findLast.js +0 -5
  643. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findLastFrom.js +0 -5
  644. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findLastIndex.js +0 -5
  645. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findLastIndexFrom.js +0 -5
  646. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/findLastKey.js +0 -5
  647. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/first.js +0 -1
  648. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flatMap.js +0 -5
  649. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flatMapDeep.js +0 -5
  650. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flatMapDepth.js +0 -5
  651. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flatten.js +0 -5
  652. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flattenDeep.js +0 -5
  653. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flattenDepth.js +0 -5
  654. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flip.js +0 -5
  655. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/floor.js +0 -5
  656. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flow.js +0 -5
  657. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/flowRight.js +0 -5
  658. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forEach.js +0 -5
  659. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forEachRight.js +0 -5
  660. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forIn.js +0 -5
  661. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forInRight.js +0 -5
  662. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forOwn.js +0 -5
  663. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/forOwnRight.js +0 -5
  664. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/fromPairs.js +0 -5
  665. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/function.js +0 -2
  666. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/functions.js +0 -5
  667. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/functionsIn.js +0 -5
  668. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/get.js +0 -5
  669. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/getOr.js +0 -5
  670. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/groupBy.js +0 -5
  671. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/gt.js +0 -5
  672. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/gte.js +0 -5
  673. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/has.js +0 -5
  674. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/hasIn.js +0 -5
  675. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/head.js +0 -5
  676. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/identical.js +0 -1
  677. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/identity.js +0 -5
  678. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/inRange.js +0 -5
  679. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/includes.js +0 -5
  680. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/includesFrom.js +0 -5
  681. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/indexBy.js +0 -1
  682. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/indexOf.js +0 -5
  683. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/indexOfFrom.js +0 -5
  684. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/init.js +0 -1
  685. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/initial.js +0 -5
  686. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/intersection.js +0 -5
  687. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/intersectionBy.js +0 -5
  688. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/intersectionWith.js +0 -5
  689. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invert.js +0 -5
  690. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invertBy.js +0 -5
  691. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invertObj.js +0 -1
  692. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invoke.js +0 -5
  693. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invokeArgs.js +0 -5
  694. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invokeArgsMap.js +0 -5
  695. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/invokeMap.js +0 -5
  696. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isArguments.js +0 -5
  697. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isArray.js +0 -5
  698. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isArrayBuffer.js +0 -5
  699. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isArrayLike.js +0 -5
  700. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isArrayLikeObject.js +0 -5
  701. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isBoolean.js +0 -5
  702. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isBuffer.js +0 -5
  703. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isDate.js +0 -5
  704. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isElement.js +0 -5
  705. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isEmpty.js +0 -5
  706. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isEqual.js +0 -5
  707. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isEqualWith.js +0 -5
  708. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isError.js +0 -5
  709. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isFinite.js +0 -5
  710. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isFunction.js +0 -5
  711. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isInteger.js +0 -5
  712. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isLength.js +0 -5
  713. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isMap.js +0 -5
  714. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isMatch.js +0 -5
  715. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isMatchWith.js +0 -5
  716. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isNaN.js +0 -5
  717. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isNative.js +0 -5
  718. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isNil.js +0 -5
  719. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isNull.js +0 -5
  720. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isNumber.js +0 -5
  721. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isObject.js +0 -5
  722. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isObjectLike.js +0 -5
  723. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isPlainObject.js +0 -5
  724. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isRegExp.js +0 -5
  725. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isSafeInteger.js +0 -5
  726. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isSet.js +0 -5
  727. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isString.js +0 -5
  728. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isSymbol.js +0 -5
  729. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isTypedArray.js +0 -5
  730. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isUndefined.js +0 -5
  731. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isWeakMap.js +0 -5
  732. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/isWeakSet.js +0 -5
  733. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/iteratee.js +0 -5
  734. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/join.js +0 -5
  735. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/juxt.js +0 -1
  736. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/kebabCase.js +0 -5
  737. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/keyBy.js +0 -5
  738. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/keys.js +0 -5
  739. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/keysIn.js +0 -5
  740. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lang.js +0 -2
  741. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/last.js +0 -5
  742. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lastIndexOf.js +0 -5
  743. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lastIndexOfFrom.js +0 -5
  744. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lowerCase.js +0 -5
  745. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lowerFirst.js +0 -5
  746. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lt.js +0 -5
  747. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/lte.js +0 -5
  748. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/map.js +0 -5
  749. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mapKeys.js +0 -5
  750. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mapValues.js +0 -5
  751. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/matches.js +0 -1
  752. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/matchesProperty.js +0 -5
  753. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/math.js +0 -2
  754. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/max.js +0 -5
  755. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/maxBy.js +0 -5
  756. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mean.js +0 -5
  757. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/meanBy.js +0 -5
  758. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/memoize.js +0 -5
  759. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/merge.js +0 -5
  760. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mergeAll.js +0 -5
  761. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mergeAllWith.js +0 -5
  762. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mergeWith.js +0 -5
  763. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/method.js +0 -5
  764. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/methodOf.js +0 -5
  765. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/min.js +0 -5
  766. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/minBy.js +0 -5
  767. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/mixin.js +0 -5
  768. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/multiply.js +0 -5
  769. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/nAry.js +0 -1
  770. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/negate.js +0 -5
  771. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/next.js +0 -5
  772. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/noop.js +0 -5
  773. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/now.js +0 -5
  774. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/nth.js +0 -5
  775. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/nthArg.js +0 -5
  776. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/number.js +0 -2
  777. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/object.js +0 -2
  778. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/omit.js +0 -5
  779. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/omitAll.js +0 -1
  780. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/omitBy.js +0 -5
  781. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/once.js +0 -5
  782. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/orderBy.js +0 -5
  783. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/over.js +0 -5
  784. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/overArgs.js +0 -5
  785. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/overEvery.js +0 -5
  786. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/overSome.js +0 -5
  787. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pad.js +0 -5
  788. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/padChars.js +0 -5
  789. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/padCharsEnd.js +0 -5
  790. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/padCharsStart.js +0 -5
  791. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/padEnd.js +0 -5
  792. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/padStart.js +0 -5
  793. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/parseInt.js +0 -5
  794. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/partial.js +0 -5
  795. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/partialRight.js +0 -5
  796. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/partition.js +0 -5
  797. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/path.js +0 -1
  798. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pathEq.js +0 -1
  799. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pathOr.js +0 -1
  800. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/paths.js +0 -1
  801. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pick.js +0 -5
  802. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pickAll.js +0 -1
  803. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pickBy.js +0 -5
  804. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pipe.js +0 -1
  805. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/placeholder.js +0 -6
  806. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/plant.js +0 -5
  807. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pluck.js +0 -1
  808. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/prop.js +0 -1
  809. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/propEq.js +0 -1
  810. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/propOr.js +0 -1
  811. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/property.js +0 -1
  812. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/propertyOf.js +0 -5
  813. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/props.js +0 -1
  814. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pull.js +0 -5
  815. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pullAll.js +0 -5
  816. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pullAllBy.js +0 -5
  817. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pullAllWith.js +0 -5
  818. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/pullAt.js +0 -5
  819. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/random.js +0 -5
  820. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/range.js +0 -5
  821. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/rangeRight.js +0 -5
  822. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/rangeStep.js +0 -5
  823. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/rangeStepRight.js +0 -5
  824. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/rearg.js +0 -5
  825. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/reduce.js +0 -5
  826. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/reduceRight.js +0 -5
  827. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/reject.js +0 -5
  828. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/remove.js +0 -5
  829. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/repeat.js +0 -5
  830. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/replace.js +0 -5
  831. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/rest.js +0 -5
  832. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/restFrom.js +0 -5
  833. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/result.js +0 -5
  834. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/reverse.js +0 -5
  835. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/round.js +0 -5
  836. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sample.js +0 -5
  837. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sampleSize.js +0 -5
  838. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/seq.js +0 -2
  839. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/set.js +0 -5
  840. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/setWith.js +0 -5
  841. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/shuffle.js +0 -5
  842. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/size.js +0 -5
  843. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/slice.js +0 -5
  844. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/snakeCase.js +0 -5
  845. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/some.js +0 -5
  846. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortBy.js +0 -5
  847. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedIndex.js +0 -5
  848. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedIndexBy.js +0 -5
  849. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedIndexOf.js +0 -5
  850. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedLastIndex.js +0 -5
  851. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedLastIndexBy.js +0 -5
  852. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedLastIndexOf.js +0 -5
  853. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedUniq.js +0 -5
  854. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sortedUniqBy.js +0 -5
  855. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/split.js +0 -5
  856. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/spread.js +0 -5
  857. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/spreadFrom.js +0 -5
  858. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/startCase.js +0 -5
  859. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/startsWith.js +0 -5
  860. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/string.js +0 -2
  861. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/stubArray.js +0 -5
  862. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/stubFalse.js +0 -5
  863. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/stubObject.js +0 -5
  864. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/stubString.js +0 -5
  865. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/stubTrue.js +0 -5
  866. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/subtract.js +0 -5
  867. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sum.js +0 -5
  868. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/sumBy.js +0 -5
  869. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/symmetricDifference.js +0 -1
  870. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/symmetricDifferenceBy.js +0 -1
  871. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/symmetricDifferenceWith.js +0 -1
  872. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/tail.js +0 -5
  873. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/take.js +0 -5
  874. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/takeLast.js +0 -1
  875. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/takeLastWhile.js +0 -1
  876. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/takeRight.js +0 -5
  877. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/takeRightWhile.js +0 -5
  878. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/takeWhile.js +0 -5
  879. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/tap.js +0 -5
  880. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/template.js +0 -5
  881. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/templateSettings.js +0 -5
  882. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/throttle.js +0 -5
  883. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/thru.js +0 -5
  884. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/times.js +0 -5
  885. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toArray.js +0 -5
  886. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toFinite.js +0 -5
  887. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toInteger.js +0 -5
  888. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toIterator.js +0 -5
  889. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toJSON.js +0 -5
  890. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toLength.js +0 -5
  891. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toLower.js +0 -5
  892. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toNumber.js +0 -5
  893. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toPairs.js +0 -5
  894. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toPairsIn.js +0 -5
  895. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toPath.js +0 -5
  896. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toPlainObject.js +0 -5
  897. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toSafeInteger.js +0 -5
  898. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toString.js +0 -5
  899. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/toUpper.js +0 -5
  900. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/transform.js +0 -5
  901. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trim.js +0 -5
  902. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trimChars.js +0 -5
  903. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trimCharsEnd.js +0 -5
  904. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trimCharsStart.js +0 -5
  905. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trimEnd.js +0 -5
  906. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/trimStart.js +0 -5
  907. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/truncate.js +0 -5
  908. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unapply.js +0 -1
  909. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unary.js +0 -5
  910. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unescape.js +0 -5
  911. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/union.js +0 -5
  912. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unionBy.js +0 -5
  913. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unionWith.js +0 -5
  914. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/uniq.js +0 -5
  915. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/uniqBy.js +0 -5
  916. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/uniqWith.js +0 -5
  917. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/uniqueId.js +0 -5
  918. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unnest.js +0 -1
  919. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unset.js +0 -5
  920. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unzip.js +0 -5
  921. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/unzipWith.js +0 -5
  922. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/update.js +0 -5
  923. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/updateWith.js +0 -5
  924. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/upperCase.js +0 -5
  925. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/upperFirst.js +0 -5
  926. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/useWith.js +0 -1
  927. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/util.js +0 -2
  928. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/value.js +0 -5
  929. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/valueOf.js +0 -5
  930. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/values.js +0 -5
  931. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/valuesIn.js +0 -5
  932. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/where.js +0 -1
  933. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/whereEq.js +0 -1
  934. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/without.js +0 -5
  935. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/words.js +0 -5
  936. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrap.js +0 -5
  937. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrapperAt.js +0 -5
  938. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrapperChain.js +0 -5
  939. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrapperLodash.js +0 -5
  940. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrapperReverse.js +0 -5
  941. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/wrapperValue.js +0 -5
  942. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/xor.js +0 -5
  943. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/xorBy.js +0 -5
  944. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/xorWith.js +0 -5
  945. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zip.js +0 -5
  946. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zipAll.js +0 -5
  947. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zipObj.js +0 -1
  948. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zipObject.js +0 -5
  949. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zipObjectDeep.js +0 -5
  950. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp/zipWith.js +0 -5
  951. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fp.js +0 -2
  952. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/fromPairs.js +0 -28
  953. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/function.js +0 -25
  954. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/functions.js +0 -31
  955. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/functionsIn.js +0 -31
  956. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/get.js +0 -33
  957. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/groupBy.js +0 -41
  958. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/gt.js +0 -29
  959. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/gte.js +0 -30
  960. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/has.js +0 -35
  961. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/hasIn.js +0 -34
  962. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/head.js +0 -23
  963. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/identity.js +0 -21
  964. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/inRange.js +0 -55
  965. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/includes.js +0 -53
  966. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/index.js +0 -1
  967. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/indexOf.js +0 -42
  968. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/initial.js +0 -22
  969. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/intersection.js +0 -30
  970. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/intersectionBy.js +0 -45
  971. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/intersectionWith.js +0 -41
  972. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/invert.js +0 -42
  973. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/invertBy.js +0 -56
  974. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/invoke.js +0 -24
  975. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/invokeMap.js +0 -41
  976. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isArguments.js +0 -36
  977. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isArray.js +0 -26
  978. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isArrayBuffer.js +0 -27
  979. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isArrayLike.js +0 -33
  980. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isArrayLikeObject.js +0 -33
  981. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isBoolean.js +0 -29
  982. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isBuffer.js +0 -38
  983. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isDate.js +0 -27
  984. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isElement.js +0 -25
  985. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isEmpty.js +0 -77
  986. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isEqual.js +0 -35
  987. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isEqualWith.js +0 -41
  988. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isError.js +0 -36
  989. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isFinite.js +0 -36
  990. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isFunction.js +0 -37
  991. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isInteger.js +0 -33
  992. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isLength.js +0 -35
  993. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isMap.js +0 -27
  994. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isMatch.js +0 -36
  995. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isMatchWith.js +0 -41
  996. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isNaN.js +0 -38
  997. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isNative.js +0 -40
  998. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isNil.js +0 -25
  999. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isNull.js +0 -22
  1000. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isNumber.js +0 -38
  1001. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isObject.js +0 -31
  1002. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isObjectLike.js +0 -29
  1003. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isPlainObject.js +0 -62
  1004. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isRegExp.js +0 -27
  1005. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isSafeInteger.js +0 -37
  1006. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isSet.js +0 -27
  1007. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isString.js +0 -30
  1008. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isSymbol.js +0 -29
  1009. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isTypedArray.js +0 -27
  1010. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isUndefined.js +0 -22
  1011. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isWeakMap.js +0 -28
  1012. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/isWeakSet.js +0 -28
  1013. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/iteratee.js +0 -53
  1014. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/join.js +0 -26
  1015. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/kebabCase.js +0 -28
  1016. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/keyBy.js +0 -36
  1017. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/keys.js +0 -37
  1018. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/keysIn.js +0 -32
  1019. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lang.js +0 -58
  1020. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/last.js +0 -20
  1021. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lastIndexOf.js +0 -46
  1022. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lodash.js +0 -17209
  1023. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lodash.min.js +0 -140
  1024. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lowerCase.js +0 -27
  1025. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lowerFirst.js +0 -22
  1026. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lt.js +0 -29
  1027. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/lte.js +0 -30
  1028. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/map.js +0 -53
  1029. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/mapKeys.js +0 -36
  1030. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/mapValues.js +0 -43
  1031. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/matches.js +0 -46
  1032. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/matchesProperty.js +0 -44
  1033. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/math.js +0 -17
  1034. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/max.js +0 -29
  1035. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/maxBy.js +0 -34
  1036. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/mean.js +0 -22
  1037. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/meanBy.js +0 -31
  1038. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/memoize.js +0 -73
  1039. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/merge.js +0 -39
  1040. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/mergeWith.js +0 -39
  1041. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/method.js +0 -34
  1042. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/methodOf.js +0 -33
  1043. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/min.js +0 -29
  1044. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/minBy.js +0 -34
  1045. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/mixin.js +0 -74
  1046. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/multiply.js +0 -22
  1047. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/negate.js +0 -40
  1048. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/next.js +0 -35
  1049. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/noop.js +0 -17
  1050. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/now.js +0 -23
  1051. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/nth.js +0 -29
  1052. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/nthArg.js +0 -32
  1053. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/number.js +0 -5
  1054. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/object.js +0 -49
  1055. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/omit.js +0 -57
  1056. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/omitBy.js +0 -29
  1057. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/once.js +0 -25
  1058. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/orderBy.js +0 -47
  1059. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/over.js +0 -24
  1060. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/overArgs.js +0 -61
  1061. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/overEvery.js +0 -34
  1062. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/overSome.js +0 -37
  1063. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/package.json +0 -17
  1064. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pad.js +0 -49
  1065. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/padEnd.js +0 -39
  1066. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/padStart.js +0 -39
  1067. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/parseInt.js +0 -43
  1068. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/partial.js +0 -50
  1069. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/partialRight.js +0 -49
  1070. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/partition.js +0 -43
  1071. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pick.js +0 -25
  1072. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pickBy.js +0 -37
  1073. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/plant.js +0 -48
  1074. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/property.js +0 -32
  1075. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/propertyOf.js +0 -30
  1076. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pull.js +0 -29
  1077. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pullAll.js +0 -29
  1078. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pullAllBy.js +0 -33
  1079. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pullAllWith.js +0 -32
  1080. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/pullAt.js +0 -43
  1081. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/random.js +0 -82
  1082. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/range.js +0 -46
  1083. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/rangeRight.js +0 -41
  1084. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/rearg.js +0 -33
  1085. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/reduce.js +0 -51
  1086. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/reduceRight.js +0 -36
  1087. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/reject.js +0 -46
  1088. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/release.md +0 -48
  1089. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/remove.js +0 -53
  1090. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/repeat.js +0 -37
  1091. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/replace.js +0 -29
  1092. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/rest.js +0 -40
  1093. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/result.js +0 -56
  1094. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/reverse.js +0 -34
  1095. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/round.js +0 -26
  1096. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sample.js +0 -24
  1097. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sampleSize.js +0 -37
  1098. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/seq.js +0 -16
  1099. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/set.js +0 -35
  1100. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/setWith.js +0 -32
  1101. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/shuffle.js +0 -25
  1102. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/size.js +0 -46
  1103. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/slice.js +0 -37
  1104. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/snakeCase.js +0 -28
  1105. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/some.js +0 -51
  1106. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortBy.js +0 -48
  1107. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedIndex.js +0 -24
  1108. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedIndexBy.js +0 -33
  1109. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedIndexOf.js +0 -31
  1110. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedLastIndex.js +0 -25
  1111. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedLastIndexBy.js +0 -33
  1112. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedLastIndexOf.js +0 -31
  1113. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedUniq.js +0 -24
  1114. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sortedUniqBy.js +0 -26
  1115. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/split.js +0 -52
  1116. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/spread.js +0 -63
  1117. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/startCase.js +0 -29
  1118. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/startsWith.js +0 -39
  1119. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/string.js +0 -33
  1120. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/stubArray.js +0 -23
  1121. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/stubFalse.js +0 -18
  1122. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/stubObject.js +0 -23
  1123. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/stubString.js +0 -18
  1124. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/stubTrue.js +0 -18
  1125. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/subtract.js +0 -22
  1126. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sum.js +0 -24
  1127. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/sumBy.js +0 -33
  1128. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/tail.js +0 -22
  1129. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/take.js +0 -37
  1130. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/takeRight.js +0 -39
  1131. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/takeRightWhile.js +0 -45
  1132. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/takeWhile.js +0 -45
  1133. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/tap.js +0 -29
  1134. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/template.js +0 -272
  1135. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/templateSettings.js +0 -67
  1136. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/throttle.js +0 -69
  1137. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/thru.js +0 -28
  1138. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/times.js +0 -51
  1139. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toArray.js +0 -58
  1140. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toFinite.js +0 -42
  1141. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toInteger.js +0 -36
  1142. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toIterator.js +0 -23
  1143. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toJSON.js +0 -1
  1144. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toLength.js +0 -38
  1145. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toLower.js +0 -28
  1146. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toNumber.js +0 -64
  1147. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toPairs.js +0 -30
  1148. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toPairsIn.js +0 -30
  1149. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toPath.js +0 -33
  1150. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toPlainObject.js +0 -32
  1151. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toSafeInteger.js +0 -37
  1152. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toString.js +0 -28
  1153. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/toUpper.js +0 -28
  1154. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/transform.js +0 -65
  1155. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/trim.js +0 -47
  1156. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/trimEnd.js +0 -41
  1157. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/trimStart.js +0 -43
  1158. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/truncate.js +0 -111
  1159. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unary.js +0 -22
  1160. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unescape.js +0 -34
  1161. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/union.js +0 -26
  1162. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unionBy.js +0 -39
  1163. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unionWith.js +0 -34
  1164. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/uniq.js +0 -25
  1165. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/uniqBy.js +0 -31
  1166. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/uniqWith.js +0 -28
  1167. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/uniqueId.js +0 -28
  1168. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unset.js +0 -34
  1169. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unzip.js +0 -45
  1170. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/unzipWith.js +0 -39
  1171. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/update.js +0 -35
  1172. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/updateWith.js +0 -33
  1173. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/upperCase.js +0 -27
  1174. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/upperFirst.js +0 -22
  1175. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/util.js +0 -34
  1176. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/value.js +0 -1
  1177. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/valueOf.js +0 -1
  1178. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/values.js +0 -34
  1179. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/valuesIn.js +0 -32
  1180. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/without.js +0 -31
  1181. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/words.js +0 -35
  1182. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrap.js +0 -30
  1183. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrapperAt.js +0 -48
  1184. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrapperChain.js +0 -34
  1185. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrapperLodash.js +0 -147
  1186. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrapperReverse.js +0 -44
  1187. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/wrapperValue.js +0 -21
  1188. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/xor.js +0 -28
  1189. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/xorBy.js +0 -39
  1190. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/xorWith.js +0 -34
  1191. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/zip.js +0 -22
  1192. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/zipObject.js +0 -24
  1193. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/zipObjectDeep.js +0 -23
  1194. package/dist/node_modules/@corva/eslint-config-browser/node_modules/lodash/zipWith.js +0 -32
  1195. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/LICENSE +0 -15
  1196. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/README.md +0 -412
  1197. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/bin/semver +0 -160
  1198. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/package.json +0 -38
  1199. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/range.bnf +0 -16
  1200. package/dist/node_modules/@corva/eslint-config-browser/node_modules/semver/semver.js +0 -1525
  1201. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/CHANGELOG.md +0 -301
  1202. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/LICENSE +0 -28
  1203. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/README.md +0 -729
  1204. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/dist/source-map.debug.js +0 -3091
  1205. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/dist/source-map.js +0 -3090
  1206. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/dist/source-map.min.js +0 -2
  1207. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/dist/source-map.min.js.map +0 -1
  1208. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/array-set.js +0 -121
  1209. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/base64-vlq.js +0 -140
  1210. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/base64.js +0 -67
  1211. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/binary-search.js +0 -111
  1212. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/mapping-list.js +0 -79
  1213. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/quick-sort.js +0 -114
  1214. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/source-map-consumer.js +0 -1082
  1215. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/source-map-generator.js +0 -416
  1216. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/source-node.js +0 -413
  1217. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/lib/util.js +0 -417
  1218. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/package.json +0 -72
  1219. package/dist/node_modules/@corva/eslint-config-browser/node_modules/source-map/source-map.js +0 -8
  1220. package/dist/node_modules/@corva/eslint-config-browser/package.json +0 -52
  1221. package/dist/node_modules/@corva/eslint-config-browser/prettier/index.js +0 -7
  1222. package/dist/node_modules/@jest/test-result/LICENSE +0 -21
  1223. package/dist/node_modules/@jest/test-result/build/formatTestResults.d.ts +0 -8
  1224. package/dist/node_modules/@jest/test-result/build/formatTestResults.js +0 -70
  1225. package/dist/node_modules/@jest/test-result/build/helpers.d.ts +0 -12
  1226. package/dist/node_modules/@jest/test-result/build/helpers.js +0 -185
  1227. package/dist/node_modules/@jest/test-result/build/index.d.ts +0 -9
  1228. package/dist/node_modules/@jest/test-result/build/index.js +0 -43
  1229. package/dist/node_modules/@jest/test-result/build/types.d.ts +0 -152
  1230. package/dist/node_modules/@jest/test-result/build/types.js +0 -1
  1231. package/dist/node_modules/@jest/test-result/package.json +0 -25
  1232. package/dist/node_modules/@jest/transform/LICENSE +0 -21
  1233. package/dist/node_modules/@jest/transform/build/ScriptTransformer.d.ts +0 -33
  1234. package/dist/node_modules/@jest/transform/build/ScriptTransformer.js +0 -882
  1235. package/dist/node_modules/@jest/transform/build/enhanceUnexpectedTokenMessage.d.ts +0 -12
  1236. package/dist/node_modules/@jest/transform/build/enhanceUnexpectedTokenMessage.js +0 -78
  1237. package/dist/node_modules/@jest/transform/build/index.d.ts +0 -10
  1238. package/dist/node_modules/@jest/transform/build/index.js +0 -85
  1239. package/dist/node_modules/@jest/transform/build/shouldInstrument.d.ts +0 -9
  1240. package/dist/node_modules/@jest/transform/build/shouldInstrument.js +0 -207
  1241. package/dist/node_modules/@jest/transform/build/types.d.ts +0 -44
  1242. package/dist/node_modules/@jest/transform/build/types.js +0 -1
  1243. package/dist/node_modules/@jest/transform/node_modules/chalk/index.d.ts +0 -415
  1244. package/dist/node_modules/@jest/transform/node_modules/chalk/license +0 -9
  1245. package/dist/node_modules/@jest/transform/node_modules/chalk/package.json +0 -68
  1246. package/dist/node_modules/@jest/transform/node_modules/chalk/readme.md +0 -341
  1247. package/dist/node_modules/@jest/transform/node_modules/chalk/source/index.js +0 -229
  1248. package/dist/node_modules/@jest/transform/node_modules/chalk/source/templates.js +0 -134
  1249. package/dist/node_modules/@jest/transform/node_modules/chalk/source/util.js +0 -39
  1250. package/dist/node_modules/@jest/transform/package.json +0 -47
  1251. package/dist/node_modules/babel-jest/LICENSE +0 -21
  1252. package/dist/node_modules/babel-jest/README.md +0 -25
  1253. package/dist/node_modules/babel-jest/build/index.d.ts +0 -15
  1254. package/dist/node_modules/babel-jest/build/index.js +0 -296
  1255. package/dist/node_modules/babel-jest/build/loadBabelConfig.d.ts +0 -7
  1256. package/dist/node_modules/babel-jest/build/loadBabelConfig.js +0 -21
  1257. package/dist/node_modules/babel-jest/node_modules/chalk/index.d.ts +0 -415
  1258. package/dist/node_modules/babel-jest/node_modules/chalk/license +0 -9
  1259. package/dist/node_modules/babel-jest/node_modules/chalk/package.json +0 -68
  1260. package/dist/node_modules/babel-jest/node_modules/chalk/readme.md +0 -341
  1261. package/dist/node_modules/babel-jest/node_modules/chalk/source/index.js +0 -229
  1262. package/dist/node_modules/babel-jest/node_modules/chalk/source/templates.js +0 -134
  1263. package/dist/node_modules/babel-jest/node_modules/chalk/source/util.js +0 -39
  1264. package/dist/node_modules/babel-jest/package.json +0 -38
  1265. package/dist/node_modules/babel-plugin-jest-hoist/LICENSE +0 -21
  1266. package/dist/node_modules/babel-plugin-jest-hoist/README.md +0 -33
  1267. package/dist/node_modules/babel-plugin-jest-hoist/build/index.d.ts +0 -14
  1268. package/dist/node_modules/babel-plugin-jest-hoist/build/index.js +0 -387
  1269. package/dist/node_modules/babel-plugin-jest-hoist/package.json +0 -34
  1270. package/dist/node_modules/babel-preset-jest/LICENSE +0 -21
  1271. package/dist/node_modules/babel-preset-jest/README.md +0 -33
  1272. package/dist/node_modules/babel-preset-jest/index.js +0 -14
  1273. package/dist/node_modules/babel-preset-jest/package.json +0 -25
  1274. package/dist/node_modules/chalk/index.d.ts +0 -415
  1275. package/dist/node_modules/chalk/license +0 -9
  1276. package/dist/node_modules/chalk/package.json +0 -68
  1277. package/dist/node_modules/chalk/readme.md +0 -335
  1278. package/dist/node_modules/chalk/source/index.js +0 -229
  1279. package/dist/node_modules/chalk/source/templates.js +0 -134
  1280. package/dist/node_modules/chalk/source/util.js +0 -39
  1281. package/dist/node_modules/eslint-config-airbnb-base/.babelrc +0 -3
  1282. package/dist/node_modules/eslint-config-airbnb-base/.eslintrc +0 -8
  1283. package/dist/node_modules/eslint-config-airbnb-base/CHANGELOG.md +0 -355
  1284. package/dist/node_modules/eslint-config-airbnb-base/LICENSE.md +0 -21
  1285. package/dist/node_modules/eslint-config-airbnb-base/README.md +0 -99
  1286. package/dist/node_modules/eslint-config-airbnb-base/index.js +0 -17
  1287. package/dist/node_modules/eslint-config-airbnb-base/legacy.js +0 -34
  1288. package/dist/node_modules/eslint-config-airbnb-base/package.json +0 -79
  1289. package/dist/node_modules/eslint-config-airbnb-base/rules/best-practices.js +0 -361
  1290. package/dist/node_modules/eslint-config-airbnb-base/rules/errors.js +0 -177
  1291. package/dist/node_modules/eslint-config-airbnb-base/rules/es6.js +0 -186
  1292. package/dist/node_modules/eslint-config-airbnb-base/rules/imports.js +0 -262
  1293. package/dist/node_modules/eslint-config-airbnb-base/rules/node.js +0 -43
  1294. package/dist/node_modules/eslint-config-airbnb-base/rules/strict.js +0 -6
  1295. package/dist/node_modules/eslint-config-airbnb-base/rules/style.js +0 -533
  1296. package/dist/node_modules/eslint-config-airbnb-base/rules/variables.js +0 -56
  1297. package/dist/node_modules/eslint-config-airbnb-base/test/.eslintrc +0 -8
  1298. package/dist/node_modules/eslint-config-airbnb-base/test/requires.js +0 -13
  1299. package/dist/node_modules/eslint-config-airbnb-base/test/test-base.js +0 -32
  1300. package/dist/node_modules/eslint-config-airbnb-base/whitespace.js +0 -91
  1301. package/dist/node_modules/eslint-scope/CHANGELOG.md +0 -64
  1302. package/dist/node_modules/eslint-scope/LICENSE +0 -22
  1303. package/dist/node_modules/eslint-scope/README.md +0 -54
  1304. package/dist/node_modules/eslint-scope/lib/definition.js +0 -86
  1305. package/dist/node_modules/eslint-scope/lib/index.js +0 -165
  1306. package/dist/node_modules/eslint-scope/lib/pattern-visitor.js +0 -152
  1307. package/dist/node_modules/eslint-scope/lib/reference.js +0 -167
  1308. package/dist/node_modules/eslint-scope/lib/referencer.js +0 -629
  1309. package/dist/node_modules/eslint-scope/lib/scope-manager.js +0 -247
  1310. package/dist/node_modules/eslint-scope/lib/scope.js +0 -748
  1311. package/dist/node_modules/eslint-scope/lib/variable.js +0 -88
  1312. package/dist/node_modules/eslint-scope/package.json +0 -48
  1313. package/dist/node_modules/estraverse/.jshintrc +0 -16
  1314. package/dist/node_modules/estraverse/LICENSE.BSD +0 -19
  1315. package/dist/node_modules/estraverse/README.md +0 -153
  1316. package/dist/node_modules/estraverse/estraverse.js +0 -782
  1317. package/dist/node_modules/estraverse/gulpfile.js +0 -70
  1318. package/dist/node_modules/estraverse/package.json +0 -40
  1319. package/dist/node_modules/jest/LICENSE +0 -21
  1320. package/dist/node_modules/jest/README.md +0 -11
  1321. package/dist/node_modules/jest/bin/jest.js +0 -13
  1322. package/dist/node_modules/jest/build/jest.d.ts +0 -8
  1323. package/dist/node_modules/jest/build/jest.js +0 -61
  1324. package/dist/node_modules/jest/package.json +0 -52
  1325. package/dist/node_modules/jest-cli/LICENSE +0 -21
  1326. package/dist/node_modules/jest-cli/README.md +0 -11
  1327. package/dist/node_modules/jest-cli/bin/jest.js +0 -17
  1328. package/dist/node_modules/jest-cli/build/cli/args.d.ts +0 -506
  1329. package/dist/node_modules/jest-cli/build/cli/args.js +0 -786
  1330. package/dist/node_modules/jest-cli/build/cli/index.d.ts +0 -9
  1331. package/dist/node_modules/jest-cli/build/cli/index.js +0 -273
  1332. package/dist/node_modules/jest-cli/build/index.d.ts +0 -7
  1333. package/dist/node_modules/jest-cli/build/index.js +0 -13
  1334. package/dist/node_modules/jest-cli/build/init/errors.d.ts +0 -12
  1335. package/dist/node_modules/jest-cli/build/init/errors.js +0 -35
  1336. package/dist/node_modules/jest-cli/build/init/generateConfigFile.d.ts +0 -8
  1337. package/dist/node_modules/jest-cli/build/init/generateConfigFile.js +0 -108
  1338. package/dist/node_modules/jest-cli/build/init/index.d.ts +0 -8
  1339. package/dist/node_modules/jest-cli/build/init/index.js +0 -250
  1340. package/dist/node_modules/jest-cli/build/init/modifyPackageJson.d.ts +0 -12
  1341. package/dist/node_modules/jest-cli/build/init/modifyPackageJson.js +0 -28
  1342. package/dist/node_modules/jest-cli/build/init/questions.d.ts +0 -10
  1343. package/dist/node_modules/jest-cli/build/init/questions.js +0 -75
  1344. package/dist/node_modules/jest-cli/build/init/types.d.ts +0 -12
  1345. package/dist/node_modules/jest-cli/build/init/types.js +0 -1
  1346. package/dist/node_modules/jest-cli/node_modules/chalk/index.d.ts +0 -415
  1347. package/dist/node_modules/jest-cli/node_modules/chalk/license +0 -9
  1348. package/dist/node_modules/jest-cli/node_modules/chalk/package.json +0 -68
  1349. package/dist/node_modules/jest-cli/node_modules/chalk/readme.md +0 -341
  1350. package/dist/node_modules/jest-cli/node_modules/chalk/source/index.js +0 -229
  1351. package/dist/node_modules/jest-cli/node_modules/chalk/source/templates.js +0 -134
  1352. package/dist/node_modules/jest-cli/node_modules/chalk/source/util.js +0 -39
  1353. package/dist/node_modules/jest-cli/package.json +0 -76
  1354. package/dist/node_modules/jest-haste-map/LICENSE +0 -21
  1355. package/dist/node_modules/jest-haste-map/build/HasteFS.d.ts +0 -27
  1356. package/dist/node_modules/jest-haste-map/build/HasteFS.js +0 -179
  1357. package/dist/node_modules/jest-haste-map/build/ModuleMap.d.ts +0 -48
  1358. package/dist/node_modules/jest-haste-map/build/ModuleMap.js +0 -305
  1359. package/dist/node_modules/jest-haste-map/build/blacklist.d.ts +0 -8
  1360. package/dist/node_modules/jest-haste-map/build/blacklist.js +0 -59
  1361. package/dist/node_modules/jest-haste-map/build/constants.d.ts +0 -9
  1362. package/dist/node_modules/jest-haste-map/build/constants.js +0 -52
  1363. package/dist/node_modules/jest-haste-map/build/crawlers/node.d.ts +0 -12
  1364. package/dist/node_modules/jest-haste-map/build/crawlers/node.js +0 -320
  1365. package/dist/node_modules/jest-haste-map/build/crawlers/watchman.d.ts +0 -13
  1366. package/dist/node_modules/jest-haste-map/build/crawlers/watchman.js +0 -327
  1367. package/dist/node_modules/jest-haste-map/build/getMockName.d.ts +0 -8
  1368. package/dist/node_modules/jest-haste-map/build/getMockName.js +0 -76
  1369. package/dist/node_modules/jest-haste-map/build/index.d.ts +0 -187
  1370. package/dist/node_modules/jest-haste-map/build/index.js +0 -1245
  1371. package/dist/node_modules/jest-haste-map/build/lib/FSEventsWatcher.d.ts +0 -44
  1372. package/dist/node_modules/jest-haste-map/build/lib/FSEventsWatcher.js +0 -295
  1373. package/dist/node_modules/jest-haste-map/build/lib/WatchmanWatcher.js +0 -442
  1374. package/dist/node_modules/jest-haste-map/build/lib/dependencyExtractor.d.ts +0 -7
  1375. package/dist/node_modules/jest-haste-map/build/lib/dependencyExtractor.js +0 -99
  1376. package/dist/node_modules/jest-haste-map/build/lib/fast_path.d.ts +0 -8
  1377. package/dist/node_modules/jest-haste-map/build/lib/fast_path.js +0 -81
  1378. package/dist/node_modules/jest-haste-map/build/lib/getPlatformExtension.d.ts +0 -7
  1379. package/dist/node_modules/jest-haste-map/build/lib/getPlatformExtension.js +0 -31
  1380. package/dist/node_modules/jest-haste-map/build/lib/isRegExpSupported.d.ts +0 -7
  1381. package/dist/node_modules/jest-haste-map/build/lib/isRegExpSupported.js +0 -22
  1382. package/dist/node_modules/jest-haste-map/build/lib/normalizePathSep.d.ts +0 -8
  1383. package/dist/node_modules/jest-haste-map/build/lib/normalizePathSep.js +0 -75
  1384. package/dist/node_modules/jest-haste-map/build/types.d.ts +0 -102
  1385. package/dist/node_modules/jest-haste-map/build/types.js +0 -1
  1386. package/dist/node_modules/jest-haste-map/build/worker.d.ts +0 -9
  1387. package/dist/node_modules/jest-haste-map/build/worker.js +0 -197
  1388. package/dist/node_modules/jest-haste-map/package.json +0 -46
  1389. package/dist/node_modules/jest-serializer/LICENSE +0 -21
  1390. package/dist/node_modules/jest-serializer/README.md +0 -47
  1391. package/dist/node_modules/jest-serializer/build/index.d.ts +0 -20
  1392. package/dist/node_modules/jest-serializer/build/index.js +0 -109
  1393. package/dist/node_modules/jest-serializer/package.json +0 -26
  1394. package/dist/node_modules/jest-serializer/v8.d.ts +0 -11
  1395. package/dist/node_modules/jest-util/LICENSE +0 -21
  1396. package/dist/node_modules/jest-util/build/ErrorWithStack.d.ts +0 -9
  1397. package/dist/node_modules/jest-util/build/ErrorWithStack.js +0 -24
  1398. package/dist/node_modules/jest-util/build/clearLine.d.ts +0 -8
  1399. package/dist/node_modules/jest-util/build/clearLine.js +0 -18
  1400. package/dist/node_modules/jest-util/build/convertDescriptorToString.d.ts +0 -7
  1401. package/dist/node_modules/jest-util/build/convertDescriptorToString.js +0 -41
  1402. package/dist/node_modules/jest-util/build/createDirectory.d.ts +0 -8
  1403. package/dist/node_modules/jest-util/build/createDirectory.js +0 -76
  1404. package/dist/node_modules/jest-util/build/createProcessObject.d.ts +0 -8
  1405. package/dist/node_modules/jest-util/build/createProcessObject.js +0 -134
  1406. package/dist/node_modules/jest-util/build/deepCyclicCopy.d.ts +0 -11
  1407. package/dist/node_modules/jest-util/build/deepCyclicCopy.js +0 -84
  1408. package/dist/node_modules/jest-util/build/formatTime.d.ts +0 -7
  1409. package/dist/node_modules/jest-util/build/formatTime.js +0 -24
  1410. package/dist/node_modules/jest-util/build/globsToMatcher.d.ts +0 -27
  1411. package/dist/node_modules/jest-util/build/globsToMatcher.js +0 -109
  1412. package/dist/node_modules/jest-util/build/index.d.ts +0 -24
  1413. package/dist/node_modules/jest-util/build/index.js +0 -198
  1414. package/dist/node_modules/jest-util/build/installCommonGlobals.d.ts +0 -9
  1415. package/dist/node_modules/jest-util/build/installCommonGlobals.js +0 -127
  1416. package/dist/node_modules/jest-util/build/interopRequireDefault.d.ts +0 -7
  1417. package/dist/node_modules/jest-util/build/interopRequireDefault.js +0 -22
  1418. package/dist/node_modules/jest-util/build/isInteractive.d.ts +0 -8
  1419. package/dist/node_modules/jest-util/build/isInteractive.js +0 -31
  1420. package/dist/node_modules/jest-util/build/isPromise.d.ts +0 -8
  1421. package/dist/node_modules/jest-util/build/isPromise.js +0 -20
  1422. package/dist/node_modules/jest-util/build/pluralize.d.ts +0 -7
  1423. package/dist/node_modules/jest-util/build/pluralize.js +0 -16
  1424. package/dist/node_modules/jest-util/build/preRunMessage.d.ts +0 -9
  1425. package/dist/node_modules/jest-util/build/preRunMessage.js +0 -48
  1426. package/dist/node_modules/jest-util/build/replacePathSepForGlob.d.ts +0 -8
  1427. package/dist/node_modules/jest-util/build/replacePathSepForGlob.js +0 -16
  1428. package/dist/node_modules/jest-util/build/setGlobal.d.ts +0 -9
  1429. package/dist/node_modules/jest-util/build/setGlobal.js +0 -19
  1430. package/dist/node_modules/jest-util/build/specialChars.d.ts +0 -14
  1431. package/dist/node_modules/jest-util/build/specialChars.js +0 -25
  1432. package/dist/node_modules/jest-util/build/testPathPatternToRegExp.d.ts +0 -9
  1433. package/dist/node_modules/jest-util/build/testPathPatternToRegExp.js +0 -19
  1434. package/dist/node_modules/jest-util/build/tryRealpath.d.ts +0 -8
  1435. package/dist/node_modules/jest-util/build/tryRealpath.js +0 -34
  1436. package/dist/node_modules/jest-util/node_modules/chalk/index.d.ts +0 -415
  1437. package/dist/node_modules/jest-util/node_modules/chalk/license +0 -9
  1438. package/dist/node_modules/jest-util/node_modules/chalk/package.json +0 -68
  1439. package/dist/node_modules/jest-util/node_modules/chalk/readme.md +0 -341
  1440. package/dist/node_modules/jest-util/node_modules/chalk/source/index.js +0 -229
  1441. package/dist/node_modules/jest-util/node_modules/chalk/source/templates.js +0 -134
  1442. package/dist/node_modules/jest-util/node_modules/chalk/source/util.js +0 -39
  1443. package/dist/node_modules/jest-util/package.json +0 -32
  1444. package/dist/node_modules/lodash/LICENSE +0 -47
  1445. package/dist/node_modules/lodash/README.md +0 -39
  1446. package/dist/node_modules/lodash/_DataView.js +0 -7
  1447. package/dist/node_modules/lodash/_Hash.js +0 -32
  1448. package/dist/node_modules/lodash/_LazyWrapper.js +0 -28
  1449. package/dist/node_modules/lodash/_ListCache.js +0 -32
  1450. package/dist/node_modules/lodash/_LodashWrapper.js +0 -22
  1451. package/dist/node_modules/lodash/_Map.js +0 -7
  1452. package/dist/node_modules/lodash/_MapCache.js +0 -32
  1453. package/dist/node_modules/lodash/_Promise.js +0 -7
  1454. package/dist/node_modules/lodash/_Set.js +0 -7
  1455. package/dist/node_modules/lodash/_SetCache.js +0 -27
  1456. package/dist/node_modules/lodash/_Stack.js +0 -27
  1457. package/dist/node_modules/lodash/_Symbol.js +0 -6
  1458. package/dist/node_modules/lodash/_Uint8Array.js +0 -6
  1459. package/dist/node_modules/lodash/_WeakMap.js +0 -7
  1460. package/dist/node_modules/lodash/_apply.js +0 -21
  1461. package/dist/node_modules/lodash/_arrayAggregator.js +0 -22
  1462. package/dist/node_modules/lodash/_arrayEach.js +0 -22
  1463. package/dist/node_modules/lodash/_arrayEachRight.js +0 -21
  1464. package/dist/node_modules/lodash/_arrayEvery.js +0 -23
  1465. package/dist/node_modules/lodash/_arrayFilter.js +0 -25
  1466. package/dist/node_modules/lodash/_arrayIncludes.js +0 -17
  1467. package/dist/node_modules/lodash/_arrayIncludesWith.js +0 -22
  1468. package/dist/node_modules/lodash/_arrayLikeKeys.js +0 -49
  1469. package/dist/node_modules/lodash/_arrayMap.js +0 -21
  1470. package/dist/node_modules/lodash/_arrayPush.js +0 -20
  1471. package/dist/node_modules/lodash/_arrayReduce.js +0 -26
  1472. package/dist/node_modules/lodash/_arrayReduceRight.js +0 -24
  1473. package/dist/node_modules/lodash/_arraySample.js +0 -15
  1474. package/dist/node_modules/lodash/_arraySampleSize.js +0 -17
  1475. package/dist/node_modules/lodash/_arrayShuffle.js +0 -15
  1476. package/dist/node_modules/lodash/_arraySome.js +0 -23
  1477. package/dist/node_modules/lodash/_asciiSize.js +0 -12
  1478. package/dist/node_modules/lodash/_asciiToArray.js +0 -12
  1479. package/dist/node_modules/lodash/_asciiWords.js +0 -15
  1480. package/dist/node_modules/lodash/_assignMergeValue.js +0 -20
  1481. package/dist/node_modules/lodash/_assignValue.js +0 -28
  1482. package/dist/node_modules/lodash/_assocIndexOf.js +0 -21
  1483. package/dist/node_modules/lodash/_baseAggregator.js +0 -21
  1484. package/dist/node_modules/lodash/_baseAssign.js +0 -17
  1485. package/dist/node_modules/lodash/_baseAssignIn.js +0 -17
  1486. package/dist/node_modules/lodash/_baseAssignValue.js +0 -25
  1487. package/dist/node_modules/lodash/_baseAt.js +0 -23
  1488. package/dist/node_modules/lodash/_baseClamp.js +0 -22
  1489. package/dist/node_modules/lodash/_baseClone.js +0 -166
  1490. package/dist/node_modules/lodash/_baseConforms.js +0 -18
  1491. package/dist/node_modules/lodash/_baseConformsTo.js +0 -27
  1492. package/dist/node_modules/lodash/_baseCreate.js +0 -30
  1493. package/dist/node_modules/lodash/_baseDelay.js +0 -21
  1494. package/dist/node_modules/lodash/_baseDifference.js +0 -67
  1495. package/dist/node_modules/lodash/_baseEach.js +0 -14
  1496. package/dist/node_modules/lodash/_baseEachRight.js +0 -14
  1497. package/dist/node_modules/lodash/_baseEvery.js +0 -21
  1498. package/dist/node_modules/lodash/_baseExtremum.js +0 -32
  1499. package/dist/node_modules/lodash/_baseFill.js +0 -32
  1500. package/dist/node_modules/lodash/_baseFilter.js +0 -21
  1501. package/dist/node_modules/lodash/_baseFindIndex.js +0 -24
  1502. package/dist/node_modules/lodash/_baseFindKey.js +0 -23
  1503. package/dist/node_modules/lodash/_baseFlatten.js +0 -38
  1504. package/dist/node_modules/lodash/_baseFor.js +0 -16
  1505. package/dist/node_modules/lodash/_baseForOwn.js +0 -16
  1506. package/dist/node_modules/lodash/_baseForOwnRight.js +0 -16
  1507. package/dist/node_modules/lodash/_baseForRight.js +0 -15
  1508. package/dist/node_modules/lodash/_baseFunctions.js +0 -19
  1509. package/dist/node_modules/lodash/_baseGet.js +0 -24
  1510. package/dist/node_modules/lodash/_baseGetAllKeys.js +0 -20
  1511. package/dist/node_modules/lodash/_baseGetTag.js +0 -28
  1512. package/dist/node_modules/lodash/_baseGt.js +0 -14
  1513. package/dist/node_modules/lodash/_baseHas.js +0 -19
  1514. package/dist/node_modules/lodash/_baseHasIn.js +0 -13
  1515. package/dist/node_modules/lodash/_baseInRange.js +0 -18
  1516. package/dist/node_modules/lodash/_baseIndexOf.js +0 -20
  1517. package/dist/node_modules/lodash/_baseIndexOfWith.js +0 -23
  1518. package/dist/node_modules/lodash/_baseIntersection.js +0 -74
  1519. package/dist/node_modules/lodash/_baseInverter.js +0 -21
  1520. package/dist/node_modules/lodash/_baseInvoke.js +0 -24
  1521. package/dist/node_modules/lodash/_baseIsArguments.js +0 -18
  1522. package/dist/node_modules/lodash/_baseIsArrayBuffer.js +0 -17
  1523. package/dist/node_modules/lodash/_baseIsDate.js +0 -18
  1524. package/dist/node_modules/lodash/_baseIsEqual.js +0 -28
  1525. package/dist/node_modules/lodash/_baseIsEqualDeep.js +0 -83
  1526. package/dist/node_modules/lodash/_baseIsMap.js +0 -18
  1527. package/dist/node_modules/lodash/_baseIsMatch.js +0 -62
  1528. package/dist/node_modules/lodash/_baseIsNaN.js +0 -12
  1529. package/dist/node_modules/lodash/_baseIsNative.js +0 -47
  1530. package/dist/node_modules/lodash/_baseIsRegExp.js +0 -18
  1531. package/dist/node_modules/lodash/_baseIsSet.js +0 -18
  1532. package/dist/node_modules/lodash/_baseIsTypedArray.js +0 -60
  1533. package/dist/node_modules/lodash/_baseIteratee.js +0 -31
  1534. package/dist/node_modules/lodash/_baseKeys.js +0 -30
  1535. package/dist/node_modules/lodash/_baseKeysIn.js +0 -33
  1536. package/dist/node_modules/lodash/_baseLodash.js +0 -10
  1537. package/dist/node_modules/lodash/_baseLt.js +0 -14
  1538. package/dist/node_modules/lodash/_baseMap.js +0 -22
  1539. package/dist/node_modules/lodash/_baseMatches.js +0 -22
  1540. package/dist/node_modules/lodash/_baseMatchesProperty.js +0 -33
  1541. package/dist/node_modules/lodash/_baseMean.js +0 -20
  1542. package/dist/node_modules/lodash/_baseMerge.js +0 -42
  1543. package/dist/node_modules/lodash/_baseMergeDeep.js +0 -94
  1544. package/dist/node_modules/lodash/_baseNth.js +0 -20
  1545. package/dist/node_modules/lodash/_baseOrderBy.js +0 -49
  1546. package/dist/node_modules/lodash/_basePick.js +0 -19
  1547. package/dist/node_modules/lodash/_basePickBy.js +0 -30
  1548. package/dist/node_modules/lodash/_baseProperty.js +0 -14
  1549. package/dist/node_modules/lodash/_basePropertyDeep.js +0 -16
  1550. package/dist/node_modules/lodash/_basePropertyOf.js +0 -14
  1551. package/dist/node_modules/lodash/_basePullAll.js +0 -51
  1552. package/dist/node_modules/lodash/_basePullAt.js +0 -37
  1553. package/dist/node_modules/lodash/_baseRandom.js +0 -18
  1554. package/dist/node_modules/lodash/_baseRange.js +0 -28
  1555. package/dist/node_modules/lodash/_baseReduce.js +0 -23
  1556. package/dist/node_modules/lodash/_baseRepeat.js +0 -35
  1557. package/dist/node_modules/lodash/_baseRest.js +0 -17
  1558. package/dist/node_modules/lodash/_baseSample.js +0 -15
  1559. package/dist/node_modules/lodash/_baseSampleSize.js +0 -18
  1560. package/dist/node_modules/lodash/_baseSet.js +0 -51
  1561. package/dist/node_modules/lodash/_baseSetData.js +0 -17
  1562. package/dist/node_modules/lodash/_baseSetToString.js +0 -22
  1563. package/dist/node_modules/lodash/_baseShuffle.js +0 -15
  1564. package/dist/node_modules/lodash/_baseSlice.js +0 -31
  1565. package/dist/node_modules/lodash/_baseSome.js +0 -22
  1566. package/dist/node_modules/lodash/_baseSortBy.js +0 -21
  1567. package/dist/node_modules/lodash/_baseSortedIndex.js +0 -42
  1568. package/dist/node_modules/lodash/_baseSortedIndexBy.js +0 -67
  1569. package/dist/node_modules/lodash/_baseSortedUniq.js +0 -30
  1570. package/dist/node_modules/lodash/_baseSum.js +0 -24
  1571. package/dist/node_modules/lodash/_baseTimes.js +0 -20
  1572. package/dist/node_modules/lodash/_baseToNumber.js +0 -24
  1573. package/dist/node_modules/lodash/_baseToPairs.js +0 -18
  1574. package/dist/node_modules/lodash/_baseToString.js +0 -37
  1575. package/dist/node_modules/lodash/_baseUnary.js +0 -14
  1576. package/dist/node_modules/lodash/_baseUniq.js +0 -72
  1577. package/dist/node_modules/lodash/_baseUnset.js +0 -20
  1578. package/dist/node_modules/lodash/_baseUpdate.js +0 -18
  1579. package/dist/node_modules/lodash/_baseValues.js +0 -19
  1580. package/dist/node_modules/lodash/_baseWhile.js +0 -26
  1581. package/dist/node_modules/lodash/_baseWrapperValue.js +0 -25
  1582. package/dist/node_modules/lodash/_baseXor.js +0 -36
  1583. package/dist/node_modules/lodash/_baseZipObject.js +0 -23
  1584. package/dist/node_modules/lodash/_cacheHas.js +0 -13
  1585. package/dist/node_modules/lodash/_castArrayLikeObject.js +0 -14
  1586. package/dist/node_modules/lodash/_castFunction.js +0 -14
  1587. package/dist/node_modules/lodash/_castPath.js +0 -21
  1588. package/dist/node_modules/lodash/_castRest.js +0 -14
  1589. package/dist/node_modules/lodash/_castSlice.js +0 -18
  1590. package/dist/node_modules/lodash/_charsEndIndex.js +0 -19
  1591. package/dist/node_modules/lodash/_charsStartIndex.js +0 -20
  1592. package/dist/node_modules/lodash/_cloneArrayBuffer.js +0 -16
  1593. package/dist/node_modules/lodash/_cloneBuffer.js +0 -35
  1594. package/dist/node_modules/lodash/_cloneDataView.js +0 -16
  1595. package/dist/node_modules/lodash/_cloneRegExp.js +0 -17
  1596. package/dist/node_modules/lodash/_cloneSymbol.js +0 -18
  1597. package/dist/node_modules/lodash/_cloneTypedArray.js +0 -16
  1598. package/dist/node_modules/lodash/_compareAscending.js +0 -41
  1599. package/dist/node_modules/lodash/_compareMultiple.js +0 -44
  1600. package/dist/node_modules/lodash/_composeArgs.js +0 -39
  1601. package/dist/node_modules/lodash/_composeArgsRight.js +0 -41
  1602. package/dist/node_modules/lodash/_copyArray.js +0 -20
  1603. package/dist/node_modules/lodash/_copyObject.js +0 -40
  1604. package/dist/node_modules/lodash/_copySymbols.js +0 -16
  1605. package/dist/node_modules/lodash/_copySymbolsIn.js +0 -16
  1606. package/dist/node_modules/lodash/_coreJsData.js +0 -6
  1607. package/dist/node_modules/lodash/_countHolders.js +0 -21
  1608. package/dist/node_modules/lodash/_createAggregator.js +0 -23
  1609. package/dist/node_modules/lodash/_createAssigner.js +0 -37
  1610. package/dist/node_modules/lodash/_createBaseEach.js +0 -32
  1611. package/dist/node_modules/lodash/_createBaseFor.js +0 -25
  1612. package/dist/node_modules/lodash/_createBind.js +0 -28
  1613. package/dist/node_modules/lodash/_createCaseFirst.js +0 -33
  1614. package/dist/node_modules/lodash/_createCompounder.js +0 -24
  1615. package/dist/node_modules/lodash/_createCtor.js +0 -37
  1616. package/dist/node_modules/lodash/_createCurry.js +0 -46
  1617. package/dist/node_modules/lodash/_createFind.js +0 -25
  1618. package/dist/node_modules/lodash/_createFlow.js +0 -78
  1619. package/dist/node_modules/lodash/_createHybrid.js +0 -92
  1620. package/dist/node_modules/lodash/_createInverter.js +0 -17
  1621. package/dist/node_modules/lodash/_createMathOperation.js +0 -38
  1622. package/dist/node_modules/lodash/_createOver.js +0 -27
  1623. package/dist/node_modules/lodash/_createPadding.js +0 -33
  1624. package/dist/node_modules/lodash/_createPartial.js +0 -43
  1625. package/dist/node_modules/lodash/_createRange.js +0 -30
  1626. package/dist/node_modules/lodash/_createRecurry.js +0 -56
  1627. package/dist/node_modules/lodash/_createRelationalOperation.js +0 -20
  1628. package/dist/node_modules/lodash/_createRound.js +0 -35
  1629. package/dist/node_modules/lodash/_createSet.js +0 -19
  1630. package/dist/node_modules/lodash/_createToPairs.js +0 -30
  1631. package/dist/node_modules/lodash/_createWrap.js +0 -106
  1632. package/dist/node_modules/lodash/_customDefaultsAssignIn.js +0 -29
  1633. package/dist/node_modules/lodash/_customDefaultsMerge.js +0 -28
  1634. package/dist/node_modules/lodash/_customOmitClone.js +0 -16
  1635. package/dist/node_modules/lodash/_deburrLetter.js +0 -71
  1636. package/dist/node_modules/lodash/_defineProperty.js +0 -11
  1637. package/dist/node_modules/lodash/_equalArrays.js +0 -84
  1638. package/dist/node_modules/lodash/_equalByTag.js +0 -112
  1639. package/dist/node_modules/lodash/_equalObjects.js +0 -90
  1640. package/dist/node_modules/lodash/_escapeHtmlChar.js +0 -21
  1641. package/dist/node_modules/lodash/_escapeStringChar.js +0 -22
  1642. package/dist/node_modules/lodash/_flatRest.js +0 -16
  1643. package/dist/node_modules/lodash/_freeGlobal.js +0 -4
  1644. package/dist/node_modules/lodash/_getAllKeys.js +0 -16
  1645. package/dist/node_modules/lodash/_getAllKeysIn.js +0 -17
  1646. package/dist/node_modules/lodash/_getData.js +0 -15
  1647. package/dist/node_modules/lodash/_getFuncName.js +0 -31
  1648. package/dist/node_modules/lodash/_getHolder.js +0 -13
  1649. package/dist/node_modules/lodash/_getMapData.js +0 -18
  1650. package/dist/node_modules/lodash/_getMatchData.js +0 -24
  1651. package/dist/node_modules/lodash/_getNative.js +0 -17
  1652. package/dist/node_modules/lodash/_getPrototype.js +0 -6
  1653. package/dist/node_modules/lodash/_getRawTag.js +0 -46
  1654. package/dist/node_modules/lodash/_getSymbols.js +0 -30
  1655. package/dist/node_modules/lodash/_getSymbolsIn.js +0 -25
  1656. package/dist/node_modules/lodash/_getTag.js +0 -58
  1657. package/dist/node_modules/lodash/_getValue.js +0 -13
  1658. package/dist/node_modules/lodash/_getView.js +0 -33
  1659. package/dist/node_modules/lodash/_getWrapDetails.js +0 -17
  1660. package/dist/node_modules/lodash/_hasPath.js +0 -39
  1661. package/dist/node_modules/lodash/_hasUnicode.js +0 -26
  1662. package/dist/node_modules/lodash/_hasUnicodeWord.js +0 -15
  1663. package/dist/node_modules/lodash/_hashClear.js +0 -15
  1664. package/dist/node_modules/lodash/_hashDelete.js +0 -17
  1665. package/dist/node_modules/lodash/_hashGet.js +0 -30
  1666. package/dist/node_modules/lodash/_hashHas.js +0 -23
  1667. package/dist/node_modules/lodash/_hashSet.js +0 -23
  1668. package/dist/node_modules/lodash/_initCloneArray.js +0 -26
  1669. package/dist/node_modules/lodash/_initCloneByTag.js +0 -77
  1670. package/dist/node_modules/lodash/_initCloneObject.js +0 -18
  1671. package/dist/node_modules/lodash/_insertWrapDetails.js +0 -23
  1672. package/dist/node_modules/lodash/_isFlattenable.js +0 -20
  1673. package/dist/node_modules/lodash/_isIndex.js +0 -25
  1674. package/dist/node_modules/lodash/_isIterateeCall.js +0 -30
  1675. package/dist/node_modules/lodash/_isKey.js +0 -29
  1676. package/dist/node_modules/lodash/_isKeyable.js +0 -15
  1677. package/dist/node_modules/lodash/_isLaziable.js +0 -28
  1678. package/dist/node_modules/lodash/_isMaskable.js +0 -14
  1679. package/dist/node_modules/lodash/_isMasked.js +0 -20
  1680. package/dist/node_modules/lodash/_isPrototype.js +0 -18
  1681. package/dist/node_modules/lodash/_isStrictComparable.js +0 -15
  1682. package/dist/node_modules/lodash/_iteratorToArray.js +0 -18
  1683. package/dist/node_modules/lodash/_lazyClone.js +0 -23
  1684. package/dist/node_modules/lodash/_lazyReverse.js +0 -23
  1685. package/dist/node_modules/lodash/_lazyValue.js +0 -69
  1686. package/dist/node_modules/lodash/_listCacheClear.js +0 -13
  1687. package/dist/node_modules/lodash/_listCacheDelete.js +0 -35
  1688. package/dist/node_modules/lodash/_listCacheGet.js +0 -19
  1689. package/dist/node_modules/lodash/_listCacheHas.js +0 -16
  1690. package/dist/node_modules/lodash/_listCacheSet.js +0 -26
  1691. package/dist/node_modules/lodash/_mapCacheClear.js +0 -21
  1692. package/dist/node_modules/lodash/_mapCacheDelete.js +0 -18
  1693. package/dist/node_modules/lodash/_mapCacheGet.js +0 -16
  1694. package/dist/node_modules/lodash/_mapCacheHas.js +0 -16
  1695. package/dist/node_modules/lodash/_mapCacheSet.js +0 -22
  1696. package/dist/node_modules/lodash/_mapToArray.js +0 -18
  1697. package/dist/node_modules/lodash/_matchesStrictComparable.js +0 -20
  1698. package/dist/node_modules/lodash/_memoizeCapped.js +0 -26
  1699. package/dist/node_modules/lodash/_mergeData.js +0 -90
  1700. package/dist/node_modules/lodash/_metaMap.js +0 -6
  1701. package/dist/node_modules/lodash/_nativeCreate.js +0 -6
  1702. package/dist/node_modules/lodash/_nativeKeys.js +0 -6
  1703. package/dist/node_modules/lodash/_nativeKeysIn.js +0 -20
  1704. package/dist/node_modules/lodash/_nodeUtil.js +0 -30
  1705. package/dist/node_modules/lodash/_objectToString.js +0 -22
  1706. package/dist/node_modules/lodash/_overArg.js +0 -15
  1707. package/dist/node_modules/lodash/_overRest.js +0 -36
  1708. package/dist/node_modules/lodash/_parent.js +0 -16
  1709. package/dist/node_modules/lodash/_reEscape.js +0 -4
  1710. package/dist/node_modules/lodash/_reEvaluate.js +0 -4
  1711. package/dist/node_modules/lodash/_reInterpolate.js +0 -4
  1712. package/dist/node_modules/lodash/_realNames.js +0 -4
  1713. package/dist/node_modules/lodash/_reorder.js +0 -29
  1714. package/dist/node_modules/lodash/_replaceHolders.js +0 -29
  1715. package/dist/node_modules/lodash/_root.js +0 -9
  1716. package/dist/node_modules/lodash/_safeGet.js +0 -21
  1717. package/dist/node_modules/lodash/_setCacheAdd.js +0 -19
  1718. package/dist/node_modules/lodash/_setCacheHas.js +0 -14
  1719. package/dist/node_modules/lodash/_setData.js +0 -20
  1720. package/dist/node_modules/lodash/_setToArray.js +0 -18
  1721. package/dist/node_modules/lodash/_setToPairs.js +0 -18
  1722. package/dist/node_modules/lodash/_setToString.js +0 -14
  1723. package/dist/node_modules/lodash/_setWrapToString.js +0 -21
  1724. package/dist/node_modules/lodash/_shortOut.js +0 -37
  1725. package/dist/node_modules/lodash/_shuffleSelf.js +0 -28
  1726. package/dist/node_modules/lodash/_stackClear.js +0 -15
  1727. package/dist/node_modules/lodash/_stackDelete.js +0 -18
  1728. package/dist/node_modules/lodash/_stackGet.js +0 -14
  1729. package/dist/node_modules/lodash/_stackHas.js +0 -14
  1730. package/dist/node_modules/lodash/_stackSet.js +0 -34
  1731. package/dist/node_modules/lodash/_strictIndexOf.js +0 -23
  1732. package/dist/node_modules/lodash/_strictLastIndexOf.js +0 -21
  1733. package/dist/node_modules/lodash/_stringSize.js +0 -18
  1734. package/dist/node_modules/lodash/_stringToArray.js +0 -18
  1735. package/dist/node_modules/lodash/_stringToPath.js +0 -27
  1736. package/dist/node_modules/lodash/_toKey.js +0 -21
  1737. package/dist/node_modules/lodash/_toSource.js +0 -26
  1738. package/dist/node_modules/lodash/_unescapeHtmlChar.js +0 -21
  1739. package/dist/node_modules/lodash/_unicodeSize.js +0 -44
  1740. package/dist/node_modules/lodash/_unicodeToArray.js +0 -40
  1741. package/dist/node_modules/lodash/_unicodeWords.js +0 -69
  1742. package/dist/node_modules/lodash/_updateWrapDetails.js +0 -46
  1743. package/dist/node_modules/lodash/_wrapperClone.js +0 -23
  1744. package/dist/node_modules/lodash/add.js +0 -22
  1745. package/dist/node_modules/lodash/after.js +0 -42
  1746. package/dist/node_modules/lodash/array.js +0 -67
  1747. package/dist/node_modules/lodash/ary.js +0 -29
  1748. package/dist/node_modules/lodash/assign.js +0 -58
  1749. package/dist/node_modules/lodash/assignIn.js +0 -40
  1750. package/dist/node_modules/lodash/assignInWith.js +0 -38
  1751. package/dist/node_modules/lodash/assignWith.js +0 -37
  1752. package/dist/node_modules/lodash/at.js +0 -23
  1753. package/dist/node_modules/lodash/attempt.js +0 -35
  1754. package/dist/node_modules/lodash/before.js +0 -40
  1755. package/dist/node_modules/lodash/bind.js +0 -57
  1756. package/dist/node_modules/lodash/bindAll.js +0 -41
  1757. package/dist/node_modules/lodash/bindKey.js +0 -68
  1758. package/dist/node_modules/lodash/camelCase.js +0 -29
  1759. package/dist/node_modules/lodash/capitalize.js +0 -23
  1760. package/dist/node_modules/lodash/castArray.js +0 -44
  1761. package/dist/node_modules/lodash/ceil.js +0 -26
  1762. package/dist/node_modules/lodash/chain.js +0 -38
  1763. package/dist/node_modules/lodash/chunk.js +0 -50
  1764. package/dist/node_modules/lodash/clamp.js +0 -39
  1765. package/dist/node_modules/lodash/clone.js +0 -36
  1766. package/dist/node_modules/lodash/cloneDeep.js +0 -29
  1767. package/dist/node_modules/lodash/cloneDeepWith.js +0 -40
  1768. package/dist/node_modules/lodash/cloneWith.js +0 -42
  1769. package/dist/node_modules/lodash/collection.js +0 -30
  1770. package/dist/node_modules/lodash/commit.js +0 -33
  1771. package/dist/node_modules/lodash/compact.js +0 -31
  1772. package/dist/node_modules/lodash/concat.js +0 -43
  1773. package/dist/node_modules/lodash/cond.js +0 -60
  1774. package/dist/node_modules/lodash/conforms.js +0 -35
  1775. package/dist/node_modules/lodash/conformsTo.js +0 -32
  1776. package/dist/node_modules/lodash/constant.js +0 -26
  1777. package/dist/node_modules/lodash/core.js +0 -3877
  1778. package/dist/node_modules/lodash/core.min.js +0 -30
  1779. package/dist/node_modules/lodash/countBy.js +0 -40
  1780. package/dist/node_modules/lodash/create.js +0 -43
  1781. package/dist/node_modules/lodash/curry.js +0 -57
  1782. package/dist/node_modules/lodash/curryRight.js +0 -54
  1783. package/dist/node_modules/lodash/date.js +0 -3
  1784. package/dist/node_modules/lodash/debounce.js +0 -191
  1785. package/dist/node_modules/lodash/deburr.js +0 -45
  1786. package/dist/node_modules/lodash/defaultTo.js +0 -25
  1787. package/dist/node_modules/lodash/defaults.js +0 -64
  1788. package/dist/node_modules/lodash/defaultsDeep.js +0 -30
  1789. package/dist/node_modules/lodash/defer.js +0 -26
  1790. package/dist/node_modules/lodash/delay.js +0 -28
  1791. package/dist/node_modules/lodash/difference.js +0 -33
  1792. package/dist/node_modules/lodash/differenceBy.js +0 -44
  1793. package/dist/node_modules/lodash/differenceWith.js +0 -40
  1794. package/dist/node_modules/lodash/divide.js +0 -22
  1795. package/dist/node_modules/lodash/drop.js +0 -38
  1796. package/dist/node_modules/lodash/dropRight.js +0 -39
  1797. package/dist/node_modules/lodash/dropRightWhile.js +0 -45
  1798. package/dist/node_modules/lodash/dropWhile.js +0 -45
  1799. package/dist/node_modules/lodash/each.js +0 -1
  1800. package/dist/node_modules/lodash/eachRight.js +0 -1
  1801. package/dist/node_modules/lodash/endsWith.js +0 -43
  1802. package/dist/node_modules/lodash/entries.js +0 -1
  1803. package/dist/node_modules/lodash/entriesIn.js +0 -1
  1804. package/dist/node_modules/lodash/eq.js +0 -37
  1805. package/dist/node_modules/lodash/escape.js +0 -43
  1806. package/dist/node_modules/lodash/escapeRegExp.js +0 -32
  1807. package/dist/node_modules/lodash/every.js +0 -56
  1808. package/dist/node_modules/lodash/extend.js +0 -1
  1809. package/dist/node_modules/lodash/extendWith.js +0 -1
  1810. package/dist/node_modules/lodash/fill.js +0 -45
  1811. package/dist/node_modules/lodash/filter.js +0 -52
  1812. package/dist/node_modules/lodash/find.js +0 -42
  1813. package/dist/node_modules/lodash/findIndex.js +0 -55
  1814. package/dist/node_modules/lodash/findKey.js +0 -44
  1815. package/dist/node_modules/lodash/findLast.js +0 -25
  1816. package/dist/node_modules/lodash/findLastIndex.js +0 -59
  1817. package/dist/node_modules/lodash/findLastKey.js +0 -44
  1818. package/dist/node_modules/lodash/first.js +0 -1
  1819. package/dist/node_modules/lodash/flatMap.js +0 -29
  1820. package/dist/node_modules/lodash/flatMapDeep.js +0 -31
  1821. package/dist/node_modules/lodash/flatMapDepth.js +0 -31
  1822. package/dist/node_modules/lodash/flatten.js +0 -22
  1823. package/dist/node_modules/lodash/flattenDeep.js +0 -25
  1824. package/dist/node_modules/lodash/flattenDepth.js +0 -33
  1825. package/dist/node_modules/lodash/flip.js +0 -28
  1826. package/dist/node_modules/lodash/floor.js +0 -26
  1827. package/dist/node_modules/lodash/flow.js +0 -27
  1828. package/dist/node_modules/lodash/flowRight.js +0 -26
  1829. package/dist/node_modules/lodash/forEach.js +0 -41
  1830. package/dist/node_modules/lodash/forEachRight.js +0 -31
  1831. package/dist/node_modules/lodash/forIn.js +0 -39
  1832. package/dist/node_modules/lodash/forInRight.js +0 -37
  1833. package/dist/node_modules/lodash/forOwn.js +0 -36
  1834. package/dist/node_modules/lodash/forOwnRight.js +0 -34
  1835. package/dist/node_modules/lodash/fp/F.js +0 -1
  1836. package/dist/node_modules/lodash/fp/T.js +0 -1
  1837. package/dist/node_modules/lodash/fp/__.js +0 -1
  1838. package/dist/node_modules/lodash/fp/_baseConvert.js +0 -569
  1839. package/dist/node_modules/lodash/fp/_convertBrowser.js +0 -18
  1840. package/dist/node_modules/lodash/fp/_falseOptions.js +0 -7
  1841. package/dist/node_modules/lodash/fp/_mapping.js +0 -358
  1842. package/dist/node_modules/lodash/fp/_util.js +0 -16
  1843. package/dist/node_modules/lodash/fp/add.js +0 -5
  1844. package/dist/node_modules/lodash/fp/after.js +0 -5
  1845. package/dist/node_modules/lodash/fp/all.js +0 -1
  1846. package/dist/node_modules/lodash/fp/allPass.js +0 -1
  1847. package/dist/node_modules/lodash/fp/always.js +0 -1
  1848. package/dist/node_modules/lodash/fp/any.js +0 -1
  1849. package/dist/node_modules/lodash/fp/anyPass.js +0 -1
  1850. package/dist/node_modules/lodash/fp/apply.js +0 -1
  1851. package/dist/node_modules/lodash/fp/array.js +0 -2
  1852. package/dist/node_modules/lodash/fp/ary.js +0 -5
  1853. package/dist/node_modules/lodash/fp/assign.js +0 -5
  1854. package/dist/node_modules/lodash/fp/assignAll.js +0 -5
  1855. package/dist/node_modules/lodash/fp/assignAllWith.js +0 -5
  1856. package/dist/node_modules/lodash/fp/assignIn.js +0 -5
  1857. package/dist/node_modules/lodash/fp/assignInAll.js +0 -5
  1858. package/dist/node_modules/lodash/fp/assignInAllWith.js +0 -5
  1859. package/dist/node_modules/lodash/fp/assignInWith.js +0 -5
  1860. package/dist/node_modules/lodash/fp/assignWith.js +0 -5
  1861. package/dist/node_modules/lodash/fp/assoc.js +0 -1
  1862. package/dist/node_modules/lodash/fp/assocPath.js +0 -1
  1863. package/dist/node_modules/lodash/fp/at.js +0 -5
  1864. package/dist/node_modules/lodash/fp/attempt.js +0 -5
  1865. package/dist/node_modules/lodash/fp/before.js +0 -5
  1866. package/dist/node_modules/lodash/fp/bind.js +0 -5
  1867. package/dist/node_modules/lodash/fp/bindAll.js +0 -5
  1868. package/dist/node_modules/lodash/fp/bindKey.js +0 -5
  1869. package/dist/node_modules/lodash/fp/camelCase.js +0 -5
  1870. package/dist/node_modules/lodash/fp/capitalize.js +0 -5
  1871. package/dist/node_modules/lodash/fp/castArray.js +0 -5
  1872. package/dist/node_modules/lodash/fp/ceil.js +0 -5
  1873. package/dist/node_modules/lodash/fp/chain.js +0 -5
  1874. package/dist/node_modules/lodash/fp/chunk.js +0 -5
  1875. package/dist/node_modules/lodash/fp/clamp.js +0 -5
  1876. package/dist/node_modules/lodash/fp/clone.js +0 -5
  1877. package/dist/node_modules/lodash/fp/cloneDeep.js +0 -5
  1878. package/dist/node_modules/lodash/fp/cloneDeepWith.js +0 -5
  1879. package/dist/node_modules/lodash/fp/cloneWith.js +0 -5
  1880. package/dist/node_modules/lodash/fp/collection.js +0 -2
  1881. package/dist/node_modules/lodash/fp/commit.js +0 -5
  1882. package/dist/node_modules/lodash/fp/compact.js +0 -5
  1883. package/dist/node_modules/lodash/fp/complement.js +0 -1
  1884. package/dist/node_modules/lodash/fp/compose.js +0 -1
  1885. package/dist/node_modules/lodash/fp/concat.js +0 -5
  1886. package/dist/node_modules/lodash/fp/cond.js +0 -5
  1887. package/dist/node_modules/lodash/fp/conforms.js +0 -1
  1888. package/dist/node_modules/lodash/fp/conformsTo.js +0 -5
  1889. package/dist/node_modules/lodash/fp/constant.js +0 -5
  1890. package/dist/node_modules/lodash/fp/contains.js +0 -1
  1891. package/dist/node_modules/lodash/fp/convert.js +0 -18
  1892. package/dist/node_modules/lodash/fp/countBy.js +0 -5
  1893. package/dist/node_modules/lodash/fp/create.js +0 -5
  1894. package/dist/node_modules/lodash/fp/curry.js +0 -5
  1895. package/dist/node_modules/lodash/fp/curryN.js +0 -5
  1896. package/dist/node_modules/lodash/fp/curryRight.js +0 -5
  1897. package/dist/node_modules/lodash/fp/curryRightN.js +0 -5
  1898. package/dist/node_modules/lodash/fp/date.js +0 -2
  1899. package/dist/node_modules/lodash/fp/debounce.js +0 -5
  1900. package/dist/node_modules/lodash/fp/deburr.js +0 -5
  1901. package/dist/node_modules/lodash/fp/defaultTo.js +0 -5
  1902. package/dist/node_modules/lodash/fp/defaults.js +0 -5
  1903. package/dist/node_modules/lodash/fp/defaultsAll.js +0 -5
  1904. package/dist/node_modules/lodash/fp/defaultsDeep.js +0 -5
  1905. package/dist/node_modules/lodash/fp/defaultsDeepAll.js +0 -5
  1906. package/dist/node_modules/lodash/fp/defer.js +0 -5
  1907. package/dist/node_modules/lodash/fp/delay.js +0 -5
  1908. package/dist/node_modules/lodash/fp/difference.js +0 -5
  1909. package/dist/node_modules/lodash/fp/differenceBy.js +0 -5
  1910. package/dist/node_modules/lodash/fp/differenceWith.js +0 -5
  1911. package/dist/node_modules/lodash/fp/dissoc.js +0 -1
  1912. package/dist/node_modules/lodash/fp/dissocPath.js +0 -1
  1913. package/dist/node_modules/lodash/fp/divide.js +0 -5
  1914. package/dist/node_modules/lodash/fp/drop.js +0 -5
  1915. package/dist/node_modules/lodash/fp/dropLast.js +0 -1
  1916. package/dist/node_modules/lodash/fp/dropLastWhile.js +0 -1
  1917. package/dist/node_modules/lodash/fp/dropRight.js +0 -5
  1918. package/dist/node_modules/lodash/fp/dropRightWhile.js +0 -5
  1919. package/dist/node_modules/lodash/fp/dropWhile.js +0 -5
  1920. package/dist/node_modules/lodash/fp/each.js +0 -1
  1921. package/dist/node_modules/lodash/fp/eachRight.js +0 -1
  1922. package/dist/node_modules/lodash/fp/endsWith.js +0 -5
  1923. package/dist/node_modules/lodash/fp/entries.js +0 -1
  1924. package/dist/node_modules/lodash/fp/entriesIn.js +0 -1
  1925. package/dist/node_modules/lodash/fp/eq.js +0 -5
  1926. package/dist/node_modules/lodash/fp/equals.js +0 -1
  1927. package/dist/node_modules/lodash/fp/escape.js +0 -5
  1928. package/dist/node_modules/lodash/fp/escapeRegExp.js +0 -5
  1929. package/dist/node_modules/lodash/fp/every.js +0 -5
  1930. package/dist/node_modules/lodash/fp/extend.js +0 -1
  1931. package/dist/node_modules/lodash/fp/extendAll.js +0 -1
  1932. package/dist/node_modules/lodash/fp/extendAllWith.js +0 -1
  1933. package/dist/node_modules/lodash/fp/extendWith.js +0 -1
  1934. package/dist/node_modules/lodash/fp/fill.js +0 -5
  1935. package/dist/node_modules/lodash/fp/filter.js +0 -5
  1936. package/dist/node_modules/lodash/fp/find.js +0 -5
  1937. package/dist/node_modules/lodash/fp/findFrom.js +0 -5
  1938. package/dist/node_modules/lodash/fp/findIndex.js +0 -5
  1939. package/dist/node_modules/lodash/fp/findIndexFrom.js +0 -5
  1940. package/dist/node_modules/lodash/fp/findKey.js +0 -5
  1941. package/dist/node_modules/lodash/fp/findLast.js +0 -5
  1942. package/dist/node_modules/lodash/fp/findLastFrom.js +0 -5
  1943. package/dist/node_modules/lodash/fp/findLastIndex.js +0 -5
  1944. package/dist/node_modules/lodash/fp/findLastIndexFrom.js +0 -5
  1945. package/dist/node_modules/lodash/fp/findLastKey.js +0 -5
  1946. package/dist/node_modules/lodash/fp/first.js +0 -1
  1947. package/dist/node_modules/lodash/fp/flatMap.js +0 -5
  1948. package/dist/node_modules/lodash/fp/flatMapDeep.js +0 -5
  1949. package/dist/node_modules/lodash/fp/flatMapDepth.js +0 -5
  1950. package/dist/node_modules/lodash/fp/flatten.js +0 -5
  1951. package/dist/node_modules/lodash/fp/flattenDeep.js +0 -5
  1952. package/dist/node_modules/lodash/fp/flattenDepth.js +0 -5
  1953. package/dist/node_modules/lodash/fp/flip.js +0 -5
  1954. package/dist/node_modules/lodash/fp/floor.js +0 -5
  1955. package/dist/node_modules/lodash/fp/flow.js +0 -5
  1956. package/dist/node_modules/lodash/fp/flowRight.js +0 -5
  1957. package/dist/node_modules/lodash/fp/forEach.js +0 -5
  1958. package/dist/node_modules/lodash/fp/forEachRight.js +0 -5
  1959. package/dist/node_modules/lodash/fp/forIn.js +0 -5
  1960. package/dist/node_modules/lodash/fp/forInRight.js +0 -5
  1961. package/dist/node_modules/lodash/fp/forOwn.js +0 -5
  1962. package/dist/node_modules/lodash/fp/forOwnRight.js +0 -5
  1963. package/dist/node_modules/lodash/fp/fromPairs.js +0 -5
  1964. package/dist/node_modules/lodash/fp/function.js +0 -2
  1965. package/dist/node_modules/lodash/fp/functions.js +0 -5
  1966. package/dist/node_modules/lodash/fp/functionsIn.js +0 -5
  1967. package/dist/node_modules/lodash/fp/get.js +0 -5
  1968. package/dist/node_modules/lodash/fp/getOr.js +0 -5
  1969. package/dist/node_modules/lodash/fp/groupBy.js +0 -5
  1970. package/dist/node_modules/lodash/fp/gt.js +0 -5
  1971. package/dist/node_modules/lodash/fp/gte.js +0 -5
  1972. package/dist/node_modules/lodash/fp/has.js +0 -5
  1973. package/dist/node_modules/lodash/fp/hasIn.js +0 -5
  1974. package/dist/node_modules/lodash/fp/head.js +0 -5
  1975. package/dist/node_modules/lodash/fp/identical.js +0 -1
  1976. package/dist/node_modules/lodash/fp/identity.js +0 -5
  1977. package/dist/node_modules/lodash/fp/inRange.js +0 -5
  1978. package/dist/node_modules/lodash/fp/includes.js +0 -5
  1979. package/dist/node_modules/lodash/fp/includesFrom.js +0 -5
  1980. package/dist/node_modules/lodash/fp/indexBy.js +0 -1
  1981. package/dist/node_modules/lodash/fp/indexOf.js +0 -5
  1982. package/dist/node_modules/lodash/fp/indexOfFrom.js +0 -5
  1983. package/dist/node_modules/lodash/fp/init.js +0 -1
  1984. package/dist/node_modules/lodash/fp/initial.js +0 -5
  1985. package/dist/node_modules/lodash/fp/intersection.js +0 -5
  1986. package/dist/node_modules/lodash/fp/intersectionBy.js +0 -5
  1987. package/dist/node_modules/lodash/fp/intersectionWith.js +0 -5
  1988. package/dist/node_modules/lodash/fp/invert.js +0 -5
  1989. package/dist/node_modules/lodash/fp/invertBy.js +0 -5
  1990. package/dist/node_modules/lodash/fp/invertObj.js +0 -1
  1991. package/dist/node_modules/lodash/fp/invoke.js +0 -5
  1992. package/dist/node_modules/lodash/fp/invokeArgs.js +0 -5
  1993. package/dist/node_modules/lodash/fp/invokeArgsMap.js +0 -5
  1994. package/dist/node_modules/lodash/fp/invokeMap.js +0 -5
  1995. package/dist/node_modules/lodash/fp/isArguments.js +0 -5
  1996. package/dist/node_modules/lodash/fp/isArray.js +0 -5
  1997. package/dist/node_modules/lodash/fp/isArrayBuffer.js +0 -5
  1998. package/dist/node_modules/lodash/fp/isArrayLike.js +0 -5
  1999. package/dist/node_modules/lodash/fp/isArrayLikeObject.js +0 -5
  2000. package/dist/node_modules/lodash/fp/isBoolean.js +0 -5
  2001. package/dist/node_modules/lodash/fp/isBuffer.js +0 -5
  2002. package/dist/node_modules/lodash/fp/isDate.js +0 -5
  2003. package/dist/node_modules/lodash/fp/isElement.js +0 -5
  2004. package/dist/node_modules/lodash/fp/isEmpty.js +0 -5
  2005. package/dist/node_modules/lodash/fp/isEqual.js +0 -5
  2006. package/dist/node_modules/lodash/fp/isEqualWith.js +0 -5
  2007. package/dist/node_modules/lodash/fp/isError.js +0 -5
  2008. package/dist/node_modules/lodash/fp/isFinite.js +0 -5
  2009. package/dist/node_modules/lodash/fp/isFunction.js +0 -5
  2010. package/dist/node_modules/lodash/fp/isInteger.js +0 -5
  2011. package/dist/node_modules/lodash/fp/isLength.js +0 -5
  2012. package/dist/node_modules/lodash/fp/isMap.js +0 -5
  2013. package/dist/node_modules/lodash/fp/isMatch.js +0 -5
  2014. package/dist/node_modules/lodash/fp/isMatchWith.js +0 -5
  2015. package/dist/node_modules/lodash/fp/isNaN.js +0 -5
  2016. package/dist/node_modules/lodash/fp/isNative.js +0 -5
  2017. package/dist/node_modules/lodash/fp/isNil.js +0 -5
  2018. package/dist/node_modules/lodash/fp/isNull.js +0 -5
  2019. package/dist/node_modules/lodash/fp/isNumber.js +0 -5
  2020. package/dist/node_modules/lodash/fp/isObject.js +0 -5
  2021. package/dist/node_modules/lodash/fp/isObjectLike.js +0 -5
  2022. package/dist/node_modules/lodash/fp/isPlainObject.js +0 -5
  2023. package/dist/node_modules/lodash/fp/isRegExp.js +0 -5
  2024. package/dist/node_modules/lodash/fp/isSafeInteger.js +0 -5
  2025. package/dist/node_modules/lodash/fp/isSet.js +0 -5
  2026. package/dist/node_modules/lodash/fp/isString.js +0 -5
  2027. package/dist/node_modules/lodash/fp/isSymbol.js +0 -5
  2028. package/dist/node_modules/lodash/fp/isTypedArray.js +0 -5
  2029. package/dist/node_modules/lodash/fp/isUndefined.js +0 -5
  2030. package/dist/node_modules/lodash/fp/isWeakMap.js +0 -5
  2031. package/dist/node_modules/lodash/fp/isWeakSet.js +0 -5
  2032. package/dist/node_modules/lodash/fp/iteratee.js +0 -5
  2033. package/dist/node_modules/lodash/fp/join.js +0 -5
  2034. package/dist/node_modules/lodash/fp/juxt.js +0 -1
  2035. package/dist/node_modules/lodash/fp/kebabCase.js +0 -5
  2036. package/dist/node_modules/lodash/fp/keyBy.js +0 -5
  2037. package/dist/node_modules/lodash/fp/keys.js +0 -5
  2038. package/dist/node_modules/lodash/fp/keysIn.js +0 -5
  2039. package/dist/node_modules/lodash/fp/lang.js +0 -2
  2040. package/dist/node_modules/lodash/fp/last.js +0 -5
  2041. package/dist/node_modules/lodash/fp/lastIndexOf.js +0 -5
  2042. package/dist/node_modules/lodash/fp/lastIndexOfFrom.js +0 -5
  2043. package/dist/node_modules/lodash/fp/lowerCase.js +0 -5
  2044. package/dist/node_modules/lodash/fp/lowerFirst.js +0 -5
  2045. package/dist/node_modules/lodash/fp/lt.js +0 -5
  2046. package/dist/node_modules/lodash/fp/lte.js +0 -5
  2047. package/dist/node_modules/lodash/fp/map.js +0 -5
  2048. package/dist/node_modules/lodash/fp/mapKeys.js +0 -5
  2049. package/dist/node_modules/lodash/fp/mapValues.js +0 -5
  2050. package/dist/node_modules/lodash/fp/matches.js +0 -1
  2051. package/dist/node_modules/lodash/fp/matchesProperty.js +0 -5
  2052. package/dist/node_modules/lodash/fp/math.js +0 -2
  2053. package/dist/node_modules/lodash/fp/max.js +0 -5
  2054. package/dist/node_modules/lodash/fp/maxBy.js +0 -5
  2055. package/dist/node_modules/lodash/fp/mean.js +0 -5
  2056. package/dist/node_modules/lodash/fp/meanBy.js +0 -5
  2057. package/dist/node_modules/lodash/fp/memoize.js +0 -5
  2058. package/dist/node_modules/lodash/fp/merge.js +0 -5
  2059. package/dist/node_modules/lodash/fp/mergeAll.js +0 -5
  2060. package/dist/node_modules/lodash/fp/mergeAllWith.js +0 -5
  2061. package/dist/node_modules/lodash/fp/mergeWith.js +0 -5
  2062. package/dist/node_modules/lodash/fp/method.js +0 -5
  2063. package/dist/node_modules/lodash/fp/methodOf.js +0 -5
  2064. package/dist/node_modules/lodash/fp/min.js +0 -5
  2065. package/dist/node_modules/lodash/fp/minBy.js +0 -5
  2066. package/dist/node_modules/lodash/fp/mixin.js +0 -5
  2067. package/dist/node_modules/lodash/fp/multiply.js +0 -5
  2068. package/dist/node_modules/lodash/fp/nAry.js +0 -1
  2069. package/dist/node_modules/lodash/fp/negate.js +0 -5
  2070. package/dist/node_modules/lodash/fp/next.js +0 -5
  2071. package/dist/node_modules/lodash/fp/noop.js +0 -5
  2072. package/dist/node_modules/lodash/fp/now.js +0 -5
  2073. package/dist/node_modules/lodash/fp/nth.js +0 -5
  2074. package/dist/node_modules/lodash/fp/nthArg.js +0 -5
  2075. package/dist/node_modules/lodash/fp/number.js +0 -2
  2076. package/dist/node_modules/lodash/fp/object.js +0 -2
  2077. package/dist/node_modules/lodash/fp/omit.js +0 -5
  2078. package/dist/node_modules/lodash/fp/omitAll.js +0 -1
  2079. package/dist/node_modules/lodash/fp/omitBy.js +0 -5
  2080. package/dist/node_modules/lodash/fp/once.js +0 -5
  2081. package/dist/node_modules/lodash/fp/orderBy.js +0 -5
  2082. package/dist/node_modules/lodash/fp/over.js +0 -5
  2083. package/dist/node_modules/lodash/fp/overArgs.js +0 -5
  2084. package/dist/node_modules/lodash/fp/overEvery.js +0 -5
  2085. package/dist/node_modules/lodash/fp/overSome.js +0 -5
  2086. package/dist/node_modules/lodash/fp/pad.js +0 -5
  2087. package/dist/node_modules/lodash/fp/padChars.js +0 -5
  2088. package/dist/node_modules/lodash/fp/padCharsEnd.js +0 -5
  2089. package/dist/node_modules/lodash/fp/padCharsStart.js +0 -5
  2090. package/dist/node_modules/lodash/fp/padEnd.js +0 -5
  2091. package/dist/node_modules/lodash/fp/padStart.js +0 -5
  2092. package/dist/node_modules/lodash/fp/parseInt.js +0 -5
  2093. package/dist/node_modules/lodash/fp/partial.js +0 -5
  2094. package/dist/node_modules/lodash/fp/partialRight.js +0 -5
  2095. package/dist/node_modules/lodash/fp/partition.js +0 -5
  2096. package/dist/node_modules/lodash/fp/path.js +0 -1
  2097. package/dist/node_modules/lodash/fp/pathEq.js +0 -1
  2098. package/dist/node_modules/lodash/fp/pathOr.js +0 -1
  2099. package/dist/node_modules/lodash/fp/paths.js +0 -1
  2100. package/dist/node_modules/lodash/fp/pick.js +0 -5
  2101. package/dist/node_modules/lodash/fp/pickAll.js +0 -1
  2102. package/dist/node_modules/lodash/fp/pickBy.js +0 -5
  2103. package/dist/node_modules/lodash/fp/pipe.js +0 -1
  2104. package/dist/node_modules/lodash/fp/placeholder.js +0 -6
  2105. package/dist/node_modules/lodash/fp/plant.js +0 -5
  2106. package/dist/node_modules/lodash/fp/pluck.js +0 -1
  2107. package/dist/node_modules/lodash/fp/prop.js +0 -1
  2108. package/dist/node_modules/lodash/fp/propEq.js +0 -1
  2109. package/dist/node_modules/lodash/fp/propOr.js +0 -1
  2110. package/dist/node_modules/lodash/fp/property.js +0 -1
  2111. package/dist/node_modules/lodash/fp/propertyOf.js +0 -5
  2112. package/dist/node_modules/lodash/fp/props.js +0 -1
  2113. package/dist/node_modules/lodash/fp/pull.js +0 -5
  2114. package/dist/node_modules/lodash/fp/pullAll.js +0 -5
  2115. package/dist/node_modules/lodash/fp/pullAllBy.js +0 -5
  2116. package/dist/node_modules/lodash/fp/pullAllWith.js +0 -5
  2117. package/dist/node_modules/lodash/fp/pullAt.js +0 -5
  2118. package/dist/node_modules/lodash/fp/random.js +0 -5
  2119. package/dist/node_modules/lodash/fp/range.js +0 -5
  2120. package/dist/node_modules/lodash/fp/rangeRight.js +0 -5
  2121. package/dist/node_modules/lodash/fp/rangeStep.js +0 -5
  2122. package/dist/node_modules/lodash/fp/rangeStepRight.js +0 -5
  2123. package/dist/node_modules/lodash/fp/rearg.js +0 -5
  2124. package/dist/node_modules/lodash/fp/reduce.js +0 -5
  2125. package/dist/node_modules/lodash/fp/reduceRight.js +0 -5
  2126. package/dist/node_modules/lodash/fp/reject.js +0 -5
  2127. package/dist/node_modules/lodash/fp/remove.js +0 -5
  2128. package/dist/node_modules/lodash/fp/repeat.js +0 -5
  2129. package/dist/node_modules/lodash/fp/replace.js +0 -5
  2130. package/dist/node_modules/lodash/fp/rest.js +0 -5
  2131. package/dist/node_modules/lodash/fp/restFrom.js +0 -5
  2132. package/dist/node_modules/lodash/fp/result.js +0 -5
  2133. package/dist/node_modules/lodash/fp/reverse.js +0 -5
  2134. package/dist/node_modules/lodash/fp/round.js +0 -5
  2135. package/dist/node_modules/lodash/fp/sample.js +0 -5
  2136. package/dist/node_modules/lodash/fp/sampleSize.js +0 -5
  2137. package/dist/node_modules/lodash/fp/seq.js +0 -2
  2138. package/dist/node_modules/lodash/fp/set.js +0 -5
  2139. package/dist/node_modules/lodash/fp/setWith.js +0 -5
  2140. package/dist/node_modules/lodash/fp/shuffle.js +0 -5
  2141. package/dist/node_modules/lodash/fp/size.js +0 -5
  2142. package/dist/node_modules/lodash/fp/slice.js +0 -5
  2143. package/dist/node_modules/lodash/fp/snakeCase.js +0 -5
  2144. package/dist/node_modules/lodash/fp/some.js +0 -5
  2145. package/dist/node_modules/lodash/fp/sortBy.js +0 -5
  2146. package/dist/node_modules/lodash/fp/sortedIndex.js +0 -5
  2147. package/dist/node_modules/lodash/fp/sortedIndexBy.js +0 -5
  2148. package/dist/node_modules/lodash/fp/sortedIndexOf.js +0 -5
  2149. package/dist/node_modules/lodash/fp/sortedLastIndex.js +0 -5
  2150. package/dist/node_modules/lodash/fp/sortedLastIndexBy.js +0 -5
  2151. package/dist/node_modules/lodash/fp/sortedLastIndexOf.js +0 -5
  2152. package/dist/node_modules/lodash/fp/sortedUniq.js +0 -5
  2153. package/dist/node_modules/lodash/fp/sortedUniqBy.js +0 -5
  2154. package/dist/node_modules/lodash/fp/split.js +0 -5
  2155. package/dist/node_modules/lodash/fp/spread.js +0 -5
  2156. package/dist/node_modules/lodash/fp/spreadFrom.js +0 -5
  2157. package/dist/node_modules/lodash/fp/startCase.js +0 -5
  2158. package/dist/node_modules/lodash/fp/startsWith.js +0 -5
  2159. package/dist/node_modules/lodash/fp/string.js +0 -2
  2160. package/dist/node_modules/lodash/fp/stubArray.js +0 -5
  2161. package/dist/node_modules/lodash/fp/stubFalse.js +0 -5
  2162. package/dist/node_modules/lodash/fp/stubObject.js +0 -5
  2163. package/dist/node_modules/lodash/fp/stubString.js +0 -5
  2164. package/dist/node_modules/lodash/fp/stubTrue.js +0 -5
  2165. package/dist/node_modules/lodash/fp/subtract.js +0 -5
  2166. package/dist/node_modules/lodash/fp/sum.js +0 -5
  2167. package/dist/node_modules/lodash/fp/sumBy.js +0 -5
  2168. package/dist/node_modules/lodash/fp/symmetricDifference.js +0 -1
  2169. package/dist/node_modules/lodash/fp/symmetricDifferenceBy.js +0 -1
  2170. package/dist/node_modules/lodash/fp/symmetricDifferenceWith.js +0 -1
  2171. package/dist/node_modules/lodash/fp/tail.js +0 -5
  2172. package/dist/node_modules/lodash/fp/take.js +0 -5
  2173. package/dist/node_modules/lodash/fp/takeLast.js +0 -1
  2174. package/dist/node_modules/lodash/fp/takeLastWhile.js +0 -1
  2175. package/dist/node_modules/lodash/fp/takeRight.js +0 -5
  2176. package/dist/node_modules/lodash/fp/takeRightWhile.js +0 -5
  2177. package/dist/node_modules/lodash/fp/takeWhile.js +0 -5
  2178. package/dist/node_modules/lodash/fp/tap.js +0 -5
  2179. package/dist/node_modules/lodash/fp/template.js +0 -5
  2180. package/dist/node_modules/lodash/fp/templateSettings.js +0 -5
  2181. package/dist/node_modules/lodash/fp/throttle.js +0 -5
  2182. package/dist/node_modules/lodash/fp/thru.js +0 -5
  2183. package/dist/node_modules/lodash/fp/times.js +0 -5
  2184. package/dist/node_modules/lodash/fp/toArray.js +0 -5
  2185. package/dist/node_modules/lodash/fp/toFinite.js +0 -5
  2186. package/dist/node_modules/lodash/fp/toInteger.js +0 -5
  2187. package/dist/node_modules/lodash/fp/toIterator.js +0 -5
  2188. package/dist/node_modules/lodash/fp/toJSON.js +0 -5
  2189. package/dist/node_modules/lodash/fp/toLength.js +0 -5
  2190. package/dist/node_modules/lodash/fp/toLower.js +0 -5
  2191. package/dist/node_modules/lodash/fp/toNumber.js +0 -5
  2192. package/dist/node_modules/lodash/fp/toPairs.js +0 -5
  2193. package/dist/node_modules/lodash/fp/toPairsIn.js +0 -5
  2194. package/dist/node_modules/lodash/fp/toPath.js +0 -5
  2195. package/dist/node_modules/lodash/fp/toPlainObject.js +0 -5
  2196. package/dist/node_modules/lodash/fp/toSafeInteger.js +0 -5
  2197. package/dist/node_modules/lodash/fp/toString.js +0 -5
  2198. package/dist/node_modules/lodash/fp/toUpper.js +0 -5
  2199. package/dist/node_modules/lodash/fp/transform.js +0 -5
  2200. package/dist/node_modules/lodash/fp/trim.js +0 -5
  2201. package/dist/node_modules/lodash/fp/trimChars.js +0 -5
  2202. package/dist/node_modules/lodash/fp/trimCharsEnd.js +0 -5
  2203. package/dist/node_modules/lodash/fp/trimCharsStart.js +0 -5
  2204. package/dist/node_modules/lodash/fp/trimEnd.js +0 -5
  2205. package/dist/node_modules/lodash/fp/trimStart.js +0 -5
  2206. package/dist/node_modules/lodash/fp/truncate.js +0 -5
  2207. package/dist/node_modules/lodash/fp/unapply.js +0 -1
  2208. package/dist/node_modules/lodash/fp/unary.js +0 -5
  2209. package/dist/node_modules/lodash/fp/unescape.js +0 -5
  2210. package/dist/node_modules/lodash/fp/union.js +0 -5
  2211. package/dist/node_modules/lodash/fp/unionBy.js +0 -5
  2212. package/dist/node_modules/lodash/fp/unionWith.js +0 -5
  2213. package/dist/node_modules/lodash/fp/uniq.js +0 -5
  2214. package/dist/node_modules/lodash/fp/uniqBy.js +0 -5
  2215. package/dist/node_modules/lodash/fp/uniqWith.js +0 -5
  2216. package/dist/node_modules/lodash/fp/uniqueId.js +0 -5
  2217. package/dist/node_modules/lodash/fp/unnest.js +0 -1
  2218. package/dist/node_modules/lodash/fp/unset.js +0 -5
  2219. package/dist/node_modules/lodash/fp/unzip.js +0 -5
  2220. package/dist/node_modules/lodash/fp/unzipWith.js +0 -5
  2221. package/dist/node_modules/lodash/fp/update.js +0 -5
  2222. package/dist/node_modules/lodash/fp/updateWith.js +0 -5
  2223. package/dist/node_modules/lodash/fp/upperCase.js +0 -5
  2224. package/dist/node_modules/lodash/fp/upperFirst.js +0 -5
  2225. package/dist/node_modules/lodash/fp/useWith.js +0 -1
  2226. package/dist/node_modules/lodash/fp/util.js +0 -2
  2227. package/dist/node_modules/lodash/fp/value.js +0 -5
  2228. package/dist/node_modules/lodash/fp/valueOf.js +0 -5
  2229. package/dist/node_modules/lodash/fp/values.js +0 -5
  2230. package/dist/node_modules/lodash/fp/valuesIn.js +0 -5
  2231. package/dist/node_modules/lodash/fp/where.js +0 -1
  2232. package/dist/node_modules/lodash/fp/whereEq.js +0 -1
  2233. package/dist/node_modules/lodash/fp/without.js +0 -5
  2234. package/dist/node_modules/lodash/fp/words.js +0 -5
  2235. package/dist/node_modules/lodash/fp/wrap.js +0 -5
  2236. package/dist/node_modules/lodash/fp/wrapperAt.js +0 -5
  2237. package/dist/node_modules/lodash/fp/wrapperChain.js +0 -5
  2238. package/dist/node_modules/lodash/fp/wrapperLodash.js +0 -5
  2239. package/dist/node_modules/lodash/fp/wrapperReverse.js +0 -5
  2240. package/dist/node_modules/lodash/fp/wrapperValue.js +0 -5
  2241. package/dist/node_modules/lodash/fp/xor.js +0 -5
  2242. package/dist/node_modules/lodash/fp/xorBy.js +0 -5
  2243. package/dist/node_modules/lodash/fp/xorWith.js +0 -5
  2244. package/dist/node_modules/lodash/fp/zip.js +0 -5
  2245. package/dist/node_modules/lodash/fp/zipAll.js +0 -5
  2246. package/dist/node_modules/lodash/fp/zipObj.js +0 -1
  2247. package/dist/node_modules/lodash/fp/zipObject.js +0 -5
  2248. package/dist/node_modules/lodash/fp/zipObjectDeep.js +0 -5
  2249. package/dist/node_modules/lodash/fp/zipWith.js +0 -5
  2250. package/dist/node_modules/lodash/fp.js +0 -2
  2251. package/dist/node_modules/lodash/fromPairs.js +0 -28
  2252. package/dist/node_modules/lodash/function.js +0 -25
  2253. package/dist/node_modules/lodash/functions.js +0 -31
  2254. package/dist/node_modules/lodash/functionsIn.js +0 -31
  2255. package/dist/node_modules/lodash/get.js +0 -33
  2256. package/dist/node_modules/lodash/groupBy.js +0 -41
  2257. package/dist/node_modules/lodash/gt.js +0 -29
  2258. package/dist/node_modules/lodash/gte.js +0 -30
  2259. package/dist/node_modules/lodash/has.js +0 -35
  2260. package/dist/node_modules/lodash/hasIn.js +0 -34
  2261. package/dist/node_modules/lodash/head.js +0 -23
  2262. package/dist/node_modules/lodash/identity.js +0 -21
  2263. package/dist/node_modules/lodash/inRange.js +0 -55
  2264. package/dist/node_modules/lodash/includes.js +0 -53
  2265. package/dist/node_modules/lodash/index.js +0 -1
  2266. package/dist/node_modules/lodash/indexOf.js +0 -42
  2267. package/dist/node_modules/lodash/initial.js +0 -22
  2268. package/dist/node_modules/lodash/intersection.js +0 -30
  2269. package/dist/node_modules/lodash/intersectionBy.js +0 -45
  2270. package/dist/node_modules/lodash/intersectionWith.js +0 -41
  2271. package/dist/node_modules/lodash/invert.js +0 -42
  2272. package/dist/node_modules/lodash/invertBy.js +0 -56
  2273. package/dist/node_modules/lodash/invoke.js +0 -24
  2274. package/dist/node_modules/lodash/invokeMap.js +0 -41
  2275. package/dist/node_modules/lodash/isArguments.js +0 -36
  2276. package/dist/node_modules/lodash/isArray.js +0 -26
  2277. package/dist/node_modules/lodash/isArrayBuffer.js +0 -27
  2278. package/dist/node_modules/lodash/isArrayLike.js +0 -33
  2279. package/dist/node_modules/lodash/isArrayLikeObject.js +0 -33
  2280. package/dist/node_modules/lodash/isBoolean.js +0 -29
  2281. package/dist/node_modules/lodash/isBuffer.js +0 -38
  2282. package/dist/node_modules/lodash/isDate.js +0 -27
  2283. package/dist/node_modules/lodash/isElement.js +0 -25
  2284. package/dist/node_modules/lodash/isEmpty.js +0 -77
  2285. package/dist/node_modules/lodash/isEqual.js +0 -35
  2286. package/dist/node_modules/lodash/isEqualWith.js +0 -41
  2287. package/dist/node_modules/lodash/isError.js +0 -36
  2288. package/dist/node_modules/lodash/isFinite.js +0 -36
  2289. package/dist/node_modules/lodash/isFunction.js +0 -37
  2290. package/dist/node_modules/lodash/isInteger.js +0 -33
  2291. package/dist/node_modules/lodash/isLength.js +0 -35
  2292. package/dist/node_modules/lodash/isMap.js +0 -27
  2293. package/dist/node_modules/lodash/isMatch.js +0 -36
  2294. package/dist/node_modules/lodash/isMatchWith.js +0 -41
  2295. package/dist/node_modules/lodash/isNaN.js +0 -38
  2296. package/dist/node_modules/lodash/isNative.js +0 -40
  2297. package/dist/node_modules/lodash/isNil.js +0 -25
  2298. package/dist/node_modules/lodash/isNull.js +0 -22
  2299. package/dist/node_modules/lodash/isNumber.js +0 -38
  2300. package/dist/node_modules/lodash/isObject.js +0 -31
  2301. package/dist/node_modules/lodash/isObjectLike.js +0 -29
  2302. package/dist/node_modules/lodash/isPlainObject.js +0 -62
  2303. package/dist/node_modules/lodash/isRegExp.js +0 -27
  2304. package/dist/node_modules/lodash/isSafeInteger.js +0 -37
  2305. package/dist/node_modules/lodash/isSet.js +0 -27
  2306. package/dist/node_modules/lodash/isString.js +0 -30
  2307. package/dist/node_modules/lodash/isSymbol.js +0 -29
  2308. package/dist/node_modules/lodash/isTypedArray.js +0 -27
  2309. package/dist/node_modules/lodash/isUndefined.js +0 -22
  2310. package/dist/node_modules/lodash/isWeakMap.js +0 -28
  2311. package/dist/node_modules/lodash/isWeakSet.js +0 -28
  2312. package/dist/node_modules/lodash/iteratee.js +0 -53
  2313. package/dist/node_modules/lodash/join.js +0 -26
  2314. package/dist/node_modules/lodash/kebabCase.js +0 -28
  2315. package/dist/node_modules/lodash/keyBy.js +0 -36
  2316. package/dist/node_modules/lodash/keys.js +0 -37
  2317. package/dist/node_modules/lodash/keysIn.js +0 -32
  2318. package/dist/node_modules/lodash/lang.js +0 -58
  2319. package/dist/node_modules/lodash/last.js +0 -20
  2320. package/dist/node_modules/lodash/lastIndexOf.js +0 -46
  2321. package/dist/node_modules/lodash/lodash.js +0 -17161
  2322. package/dist/node_modules/lodash/lodash.min.js +0 -139
  2323. package/dist/node_modules/lodash/lowerCase.js +0 -27
  2324. package/dist/node_modules/lodash/lowerFirst.js +0 -22
  2325. package/dist/node_modules/lodash/lt.js +0 -29
  2326. package/dist/node_modules/lodash/lte.js +0 -30
  2327. package/dist/node_modules/lodash/map.js +0 -53
  2328. package/dist/node_modules/lodash/mapKeys.js +0 -36
  2329. package/dist/node_modules/lodash/mapValues.js +0 -43
  2330. package/dist/node_modules/lodash/matches.js +0 -46
  2331. package/dist/node_modules/lodash/matchesProperty.js +0 -44
  2332. package/dist/node_modules/lodash/math.js +0 -17
  2333. package/dist/node_modules/lodash/max.js +0 -29
  2334. package/dist/node_modules/lodash/maxBy.js +0 -34
  2335. package/dist/node_modules/lodash/mean.js +0 -22
  2336. package/dist/node_modules/lodash/meanBy.js +0 -31
  2337. package/dist/node_modules/lodash/memoize.js +0 -73
  2338. package/dist/node_modules/lodash/merge.js +0 -39
  2339. package/dist/node_modules/lodash/mergeWith.js +0 -39
  2340. package/dist/node_modules/lodash/method.js +0 -34
  2341. package/dist/node_modules/lodash/methodOf.js +0 -33
  2342. package/dist/node_modules/lodash/min.js +0 -29
  2343. package/dist/node_modules/lodash/minBy.js +0 -34
  2344. package/dist/node_modules/lodash/mixin.js +0 -74
  2345. package/dist/node_modules/lodash/multiply.js +0 -22
  2346. package/dist/node_modules/lodash/negate.js +0 -40
  2347. package/dist/node_modules/lodash/next.js +0 -35
  2348. package/dist/node_modules/lodash/noop.js +0 -17
  2349. package/dist/node_modules/lodash/now.js +0 -23
  2350. package/dist/node_modules/lodash/nth.js +0 -29
  2351. package/dist/node_modules/lodash/nthArg.js +0 -32
  2352. package/dist/node_modules/lodash/number.js +0 -5
  2353. package/dist/node_modules/lodash/object.js +0 -49
  2354. package/dist/node_modules/lodash/omit.js +0 -57
  2355. package/dist/node_modules/lodash/omitBy.js +0 -29
  2356. package/dist/node_modules/lodash/once.js +0 -25
  2357. package/dist/node_modules/lodash/orderBy.js +0 -47
  2358. package/dist/node_modules/lodash/over.js +0 -24
  2359. package/dist/node_modules/lodash/overArgs.js +0 -61
  2360. package/dist/node_modules/lodash/overEvery.js +0 -34
  2361. package/dist/node_modules/lodash/overSome.js +0 -37
  2362. package/dist/node_modules/lodash/package.json +0 -17
  2363. package/dist/node_modules/lodash/pad.js +0 -49
  2364. package/dist/node_modules/lodash/padEnd.js +0 -39
  2365. package/dist/node_modules/lodash/padStart.js +0 -39
  2366. package/dist/node_modules/lodash/parseInt.js +0 -43
  2367. package/dist/node_modules/lodash/partial.js +0 -50
  2368. package/dist/node_modules/lodash/partialRight.js +0 -49
  2369. package/dist/node_modules/lodash/partition.js +0 -43
  2370. package/dist/node_modules/lodash/pick.js +0 -25
  2371. package/dist/node_modules/lodash/pickBy.js +0 -37
  2372. package/dist/node_modules/lodash/plant.js +0 -48
  2373. package/dist/node_modules/lodash/property.js +0 -32
  2374. package/dist/node_modules/lodash/propertyOf.js +0 -30
  2375. package/dist/node_modules/lodash/pull.js +0 -29
  2376. package/dist/node_modules/lodash/pullAll.js +0 -29
  2377. package/dist/node_modules/lodash/pullAllBy.js +0 -33
  2378. package/dist/node_modules/lodash/pullAllWith.js +0 -32
  2379. package/dist/node_modules/lodash/pullAt.js +0 -43
  2380. package/dist/node_modules/lodash/random.js +0 -82
  2381. package/dist/node_modules/lodash/range.js +0 -46
  2382. package/dist/node_modules/lodash/rangeRight.js +0 -41
  2383. package/dist/node_modules/lodash/rearg.js +0 -33
  2384. package/dist/node_modules/lodash/reduce.js +0 -51
  2385. package/dist/node_modules/lodash/reduceRight.js +0 -36
  2386. package/dist/node_modules/lodash/reject.js +0 -46
  2387. package/dist/node_modules/lodash/remove.js +0 -53
  2388. package/dist/node_modules/lodash/repeat.js +0 -37
  2389. package/dist/node_modules/lodash/replace.js +0 -29
  2390. package/dist/node_modules/lodash/rest.js +0 -40
  2391. package/dist/node_modules/lodash/result.js +0 -56
  2392. package/dist/node_modules/lodash/reverse.js +0 -34
  2393. package/dist/node_modules/lodash/round.js +0 -26
  2394. package/dist/node_modules/lodash/sample.js +0 -24
  2395. package/dist/node_modules/lodash/sampleSize.js +0 -37
  2396. package/dist/node_modules/lodash/seq.js +0 -16
  2397. package/dist/node_modules/lodash/set.js +0 -35
  2398. package/dist/node_modules/lodash/setWith.js +0 -32
  2399. package/dist/node_modules/lodash/shuffle.js +0 -25
  2400. package/dist/node_modules/lodash/size.js +0 -46
  2401. package/dist/node_modules/lodash/slice.js +0 -37
  2402. package/dist/node_modules/lodash/snakeCase.js +0 -28
  2403. package/dist/node_modules/lodash/some.js +0 -51
  2404. package/dist/node_modules/lodash/sortBy.js +0 -48
  2405. package/dist/node_modules/lodash/sortedIndex.js +0 -24
  2406. package/dist/node_modules/lodash/sortedIndexBy.js +0 -33
  2407. package/dist/node_modules/lodash/sortedIndexOf.js +0 -31
  2408. package/dist/node_modules/lodash/sortedLastIndex.js +0 -25
  2409. package/dist/node_modules/lodash/sortedLastIndexBy.js +0 -33
  2410. package/dist/node_modules/lodash/sortedLastIndexOf.js +0 -31
  2411. package/dist/node_modules/lodash/sortedUniq.js +0 -24
  2412. package/dist/node_modules/lodash/sortedUniqBy.js +0 -26
  2413. package/dist/node_modules/lodash/split.js +0 -52
  2414. package/dist/node_modules/lodash/spread.js +0 -63
  2415. package/dist/node_modules/lodash/startCase.js +0 -29
  2416. package/dist/node_modules/lodash/startsWith.js +0 -39
  2417. package/dist/node_modules/lodash/string.js +0 -33
  2418. package/dist/node_modules/lodash/stubArray.js +0 -23
  2419. package/dist/node_modules/lodash/stubFalse.js +0 -18
  2420. package/dist/node_modules/lodash/stubObject.js +0 -23
  2421. package/dist/node_modules/lodash/stubString.js +0 -18
  2422. package/dist/node_modules/lodash/stubTrue.js +0 -18
  2423. package/dist/node_modules/lodash/subtract.js +0 -22
  2424. package/dist/node_modules/lodash/sum.js +0 -24
  2425. package/dist/node_modules/lodash/sumBy.js +0 -33
  2426. package/dist/node_modules/lodash/tail.js +0 -22
  2427. package/dist/node_modules/lodash/take.js +0 -37
  2428. package/dist/node_modules/lodash/takeRight.js +0 -39
  2429. package/dist/node_modules/lodash/takeRightWhile.js +0 -45
  2430. package/dist/node_modules/lodash/takeWhile.js +0 -45
  2431. package/dist/node_modules/lodash/tap.js +0 -29
  2432. package/dist/node_modules/lodash/template.js +0 -251
  2433. package/dist/node_modules/lodash/templateSettings.js +0 -67
  2434. package/dist/node_modules/lodash/throttle.js +0 -69
  2435. package/dist/node_modules/lodash/thru.js +0 -28
  2436. package/dist/node_modules/lodash/times.js +0 -51
  2437. package/dist/node_modules/lodash/toArray.js +0 -58
  2438. package/dist/node_modules/lodash/toFinite.js +0 -42
  2439. package/dist/node_modules/lodash/toInteger.js +0 -36
  2440. package/dist/node_modules/lodash/toIterator.js +0 -23
  2441. package/dist/node_modules/lodash/toJSON.js +0 -1
  2442. package/dist/node_modules/lodash/toLength.js +0 -38
  2443. package/dist/node_modules/lodash/toLower.js +0 -28
  2444. package/dist/node_modules/lodash/toNumber.js +0 -66
  2445. package/dist/node_modules/lodash/toPairs.js +0 -30
  2446. package/dist/node_modules/lodash/toPairsIn.js +0 -30
  2447. package/dist/node_modules/lodash/toPath.js +0 -33
  2448. package/dist/node_modules/lodash/toPlainObject.js +0 -32
  2449. package/dist/node_modules/lodash/toSafeInteger.js +0 -37
  2450. package/dist/node_modules/lodash/toString.js +0 -28
  2451. package/dist/node_modules/lodash/toUpper.js +0 -28
  2452. package/dist/node_modules/lodash/transform.js +0 -65
  2453. package/dist/node_modules/lodash/trim.js +0 -49
  2454. package/dist/node_modules/lodash/trimEnd.js +0 -43
  2455. package/dist/node_modules/lodash/trimStart.js +0 -43
  2456. package/dist/node_modules/lodash/truncate.js +0 -111
  2457. package/dist/node_modules/lodash/unary.js +0 -22
  2458. package/dist/node_modules/lodash/unescape.js +0 -34
  2459. package/dist/node_modules/lodash/union.js +0 -26
  2460. package/dist/node_modules/lodash/unionBy.js +0 -39
  2461. package/dist/node_modules/lodash/unionWith.js +0 -34
  2462. package/dist/node_modules/lodash/uniq.js +0 -25
  2463. package/dist/node_modules/lodash/uniqBy.js +0 -31
  2464. package/dist/node_modules/lodash/uniqWith.js +0 -28
  2465. package/dist/node_modules/lodash/uniqueId.js +0 -28
  2466. package/dist/node_modules/lodash/unset.js +0 -34
  2467. package/dist/node_modules/lodash/unzip.js +0 -45
  2468. package/dist/node_modules/lodash/unzipWith.js +0 -39
  2469. package/dist/node_modules/lodash/update.js +0 -35
  2470. package/dist/node_modules/lodash/updateWith.js +0 -33
  2471. package/dist/node_modules/lodash/upperCase.js +0 -27
  2472. package/dist/node_modules/lodash/upperFirst.js +0 -22
  2473. package/dist/node_modules/lodash/util.js +0 -34
  2474. package/dist/node_modules/lodash/value.js +0 -1
  2475. package/dist/node_modules/lodash/valueOf.js +0 -1
  2476. package/dist/node_modules/lodash/values.js +0 -34
  2477. package/dist/node_modules/lodash/valuesIn.js +0 -32
  2478. package/dist/node_modules/lodash/without.js +0 -31
  2479. package/dist/node_modules/lodash/words.js +0 -35
  2480. package/dist/node_modules/lodash/wrap.js +0 -30
  2481. package/dist/node_modules/lodash/wrapperAt.js +0 -48
  2482. package/dist/node_modules/lodash/wrapperChain.js +0 -34
  2483. package/dist/node_modules/lodash/wrapperLodash.js +0 -147
  2484. package/dist/node_modules/lodash/wrapperReverse.js +0 -44
  2485. package/dist/node_modules/lodash/wrapperValue.js +0 -21
  2486. package/dist/node_modules/lodash/xor.js +0 -28
  2487. package/dist/node_modules/lodash/xorBy.js +0 -39
  2488. package/dist/node_modules/lodash/xorWith.js +0 -34
  2489. package/dist/node_modules/lodash/zip.js +0 -22
  2490. package/dist/node_modules/lodash/zipObject.js +0 -24
  2491. package/dist/node_modules/lodash/zipObjectDeep.js +0 -23
  2492. package/dist/node_modules/lodash/zipWith.js +0 -32
  2493. package/dist/node_modules/postcss/LICENSE +0 -20
  2494. package/dist/node_modules/postcss/README.md +0 -44
  2495. package/dist/node_modules/postcss/lib/at-rule.d.ts +0 -106
  2496. package/dist/node_modules/postcss/lib/at-rule.js +0 -25
  2497. package/dist/node_modules/postcss/lib/comment.d.ts +0 -56
  2498. package/dist/node_modules/postcss/lib/comment.js +0 -13
  2499. package/dist/node_modules/postcss/lib/container.d.ts +0 -442
  2500. package/dist/node_modules/postcss/lib/container.js +0 -433
  2501. package/dist/node_modules/postcss/lib/css-syntax-error.d.ts +0 -239
  2502. package/dist/node_modules/postcss/lib/css-syntax-error.js +0 -100
  2503. package/dist/node_modules/postcss/lib/declaration.d.ts +0 -124
  2504. package/dist/node_modules/postcss/lib/declaration.js +0 -24
  2505. package/dist/node_modules/postcss/lib/document.d.ts +0 -57
  2506. package/dist/node_modules/postcss/lib/document.js +0 -33
  2507. package/dist/node_modules/postcss/lib/fromJSON.d.ts +0 -5
  2508. package/dist/node_modules/postcss/lib/fromJSON.js +0 -54
  2509. package/dist/node_modules/postcss/lib/input.d.ts +0 -150
  2510. package/dist/node_modules/postcss/lib/input.js +0 -248
  2511. package/dist/node_modules/postcss/lib/lazy-result.d.ts +0 -176
  2512. package/dist/node_modules/postcss/lib/lazy-result.js +0 -550
  2513. package/dist/node_modules/postcss/lib/list.d.ts +0 -51
  2514. package/dist/node_modules/postcss/lib/list.js +0 -56
  2515. package/dist/node_modules/postcss/lib/map-generator.js +0 -331
  2516. package/dist/node_modules/postcss/lib/no-work-result.d.ts +0 -37
  2517. package/dist/node_modules/postcss/lib/no-work-result.js +0 -135
  2518. package/dist/node_modules/postcss/lib/node.d.ts +0 -478
  2519. package/dist/node_modules/postcss/lib/node.js +0 -379
  2520. package/dist/node_modules/postcss/lib/parse.d.ts +0 -5
  2521. package/dist/node_modules/postcss/lib/parse.js +0 -42
  2522. package/dist/node_modules/postcss/lib/parser.js +0 -603
  2523. package/dist/node_modules/postcss/lib/postcss.d.ts +0 -473
  2524. package/dist/node_modules/postcss/lib/postcss.js +0 -99
  2525. package/dist/node_modules/postcss/lib/postcss.mjs +0 -30
  2526. package/dist/node_modules/postcss/lib/previous-map.d.ts +0 -72
  2527. package/dist/node_modules/postcss/lib/previous-map.js +0 -142
  2528. package/dist/node_modules/postcss/lib/processor.d.ts +0 -102
  2529. package/dist/node_modules/postcss/lib/processor.js +0 -67
  2530. package/dist/node_modules/postcss/lib/result.d.ts +0 -196
  2531. package/dist/node_modules/postcss/lib/result.js +0 -42
  2532. package/dist/node_modules/postcss/lib/root.d.ts +0 -73
  2533. package/dist/node_modules/postcss/lib/root.js +0 -59
  2534. package/dist/node_modules/postcss/lib/rule.d.ts +0 -104
  2535. package/dist/node_modules/postcss/lib/rule.js +0 -27
  2536. package/dist/node_modules/postcss/lib/stringifier.d.ts +0 -37
  2537. package/dist/node_modules/postcss/lib/stringifier.js +0 -353
  2538. package/dist/node_modules/postcss/lib/stringify.d.ts +0 -5
  2539. package/dist/node_modules/postcss/lib/stringify.js +0 -11
  2540. package/dist/node_modules/postcss/lib/symbols.js +0 -5
  2541. package/dist/node_modules/postcss/lib/terminal-highlight.js +0 -70
  2542. package/dist/node_modules/postcss/lib/tokenize.js +0 -266
  2543. package/dist/node_modules/postcss/lib/warn-once.js +0 -13
  2544. package/dist/node_modules/postcss/lib/warning.d.ts +0 -138
  2545. package/dist/node_modules/postcss/lib/warning.js +0 -37
  2546. package/dist/node_modules/postcss/package.json +0 -85
  2547. package/dist/node_modules/postcss-loader/CHANGELOG.md +0 -403
  2548. package/dist/node_modules/postcss-loader/LICENSE +0 -20
  2549. package/dist/node_modules/postcss-loader/README.md +0 -1068
  2550. package/dist/node_modules/postcss-loader/dist/Error.js +0 -44
  2551. package/dist/node_modules/postcss-loader/dist/Warning.js +0 -36
  2552. package/dist/node_modules/postcss-loader/dist/cjs.js +0 -3
  2553. package/dist/node_modules/postcss-loader/dist/index.js +0 -139
  2554. package/dist/node_modules/postcss-loader/dist/options.json +0 -45
  2555. package/dist/node_modules/postcss-loader/dist/utils.js +0 -344
  2556. package/dist/node_modules/postcss-loader/node_modules/semver/LICENSE +0 -15
  2557. package/dist/node_modules/postcss-loader/node_modules/semver/README.md +0 -641
  2558. package/dist/node_modules/postcss-loader/node_modules/semver/bin/semver.js +0 -197
  2559. package/dist/node_modules/postcss-loader/node_modules/semver/classes/comparator.js +0 -141
  2560. package/dist/node_modules/postcss-loader/node_modules/semver/classes/index.js +0 -5
  2561. package/dist/node_modules/postcss-loader/node_modules/semver/classes/range.js +0 -539
  2562. package/dist/node_modules/postcss-loader/node_modules/semver/classes/semver.js +0 -302
  2563. package/dist/node_modules/postcss-loader/node_modules/semver/functions/clean.js +0 -6
  2564. package/dist/node_modules/postcss-loader/node_modules/semver/functions/cmp.js +0 -52
  2565. package/dist/node_modules/postcss-loader/node_modules/semver/functions/coerce.js +0 -60
  2566. package/dist/node_modules/postcss-loader/node_modules/semver/functions/compare-build.js +0 -7
  2567. package/dist/node_modules/postcss-loader/node_modules/semver/functions/compare-loose.js +0 -3
  2568. package/dist/node_modules/postcss-loader/node_modules/semver/functions/compare.js +0 -5
  2569. package/dist/node_modules/postcss-loader/node_modules/semver/functions/diff.js +0 -65
  2570. package/dist/node_modules/postcss-loader/node_modules/semver/functions/eq.js +0 -3
  2571. package/dist/node_modules/postcss-loader/node_modules/semver/functions/gt.js +0 -3
  2572. package/dist/node_modules/postcss-loader/node_modules/semver/functions/gte.js +0 -3
  2573. package/dist/node_modules/postcss-loader/node_modules/semver/functions/inc.js +0 -19
  2574. package/dist/node_modules/postcss-loader/node_modules/semver/functions/lt.js +0 -3
  2575. package/dist/node_modules/postcss-loader/node_modules/semver/functions/lte.js +0 -3
  2576. package/dist/node_modules/postcss-loader/node_modules/semver/functions/major.js +0 -3
  2577. package/dist/node_modules/postcss-loader/node_modules/semver/functions/minor.js +0 -3
  2578. package/dist/node_modules/postcss-loader/node_modules/semver/functions/neq.js +0 -3
  2579. package/dist/node_modules/postcss-loader/node_modules/semver/functions/parse.js +0 -16
  2580. package/dist/node_modules/postcss-loader/node_modules/semver/functions/patch.js +0 -3
  2581. package/dist/node_modules/postcss-loader/node_modules/semver/functions/prerelease.js +0 -6
  2582. package/dist/node_modules/postcss-loader/node_modules/semver/functions/rcompare.js +0 -3
  2583. package/dist/node_modules/postcss-loader/node_modules/semver/functions/rsort.js +0 -3
  2584. package/dist/node_modules/postcss-loader/node_modules/semver/functions/satisfies.js +0 -10
  2585. package/dist/node_modules/postcss-loader/node_modules/semver/functions/sort.js +0 -3
  2586. package/dist/node_modules/postcss-loader/node_modules/semver/functions/valid.js +0 -6
  2587. package/dist/node_modules/postcss-loader/node_modules/semver/index.js +0 -89
  2588. package/dist/node_modules/postcss-loader/node_modules/semver/internal/constants.js +0 -35
  2589. package/dist/node_modules/postcss-loader/node_modules/semver/internal/debug.js +0 -9
  2590. package/dist/node_modules/postcss-loader/node_modules/semver/internal/identifiers.js +0 -23
  2591. package/dist/node_modules/postcss-loader/node_modules/semver/internal/parse-options.js +0 -15
  2592. package/dist/node_modules/postcss-loader/node_modules/semver/internal/re.js +0 -217
  2593. package/dist/node_modules/postcss-loader/node_modules/semver/package.json +0 -78
  2594. package/dist/node_modules/postcss-loader/node_modules/semver/preload.js +0 -2
  2595. package/dist/node_modules/postcss-loader/node_modules/semver/range.bnf +0 -16
  2596. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/gtr.js +0 -4
  2597. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/intersects.js +0 -7
  2598. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/ltr.js +0 -4
  2599. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/max-satisfying.js +0 -25
  2600. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/min-satisfying.js +0 -24
  2601. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/min-version.js +0 -61
  2602. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/outside.js +0 -80
  2603. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/simplify.js +0 -47
  2604. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/subset.js +0 -247
  2605. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/to-comparators.js +0 -8
  2606. package/dist/node_modules/postcss-loader/node_modules/semver/ranges/valid.js +0 -11
  2607. package/dist/node_modules/postcss-loader/package.json +0 -96
  2608. package/dist/node_modules/prop-types/CHANGELOG.md +0 -92
  2609. package/dist/node_modules/prop-types/LICENSE +0 -21
  2610. package/dist/node_modules/prop-types/README.md +0 -296
  2611. package/dist/node_modules/prop-types/checkPropTypes.js +0 -102
  2612. package/dist/node_modules/prop-types/factory.js +0 -19
  2613. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -64
  2614. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -591
  2615. package/dist/node_modules/prop-types/index.js +0 -19
  2616. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -12
  2617. package/dist/node_modules/prop-types/package.json +0 -58
  2618. package/dist/node_modules/prop-types/prop-types.js +0 -1337
  2619. package/dist/node_modules/prop-types/prop-types.min.js +0 -1
  2620. package/dist/node_modules/react-is/LICENSE +0 -21
  2621. package/dist/node_modules/react-is/README.md +0 -104
  2622. package/dist/node_modules/react-is/build-info.json +0 -8
  2623. package/dist/node_modules/react-is/cjs/react-is.development.js +0 -181
  2624. package/dist/node_modules/react-is/cjs/react-is.production.min.js +0 -15
  2625. package/dist/node_modules/react-is/index.js +0 -7
  2626. package/dist/node_modules/react-is/package.json +0 -27
  2627. package/dist/node_modules/react-is/umd/react-is.development.js +0 -181
  2628. package/dist/node_modules/react-is/umd/react-is.production.min.js +0 -13
  2629. package/dist/node_modules/react-sizeme/LICENSE +0 -21
  2630. package/dist/node_modules/react-sizeme/README.md +0 -289
  2631. package/dist/node_modules/react-sizeme/dist/react-sizeme.js +0 -527
  2632. package/dist/node_modules/react-sizeme/dist/react-sizeme.js.map +0 -1
  2633. package/dist/node_modules/react-sizeme/dist/react-sizeme.min.js +0 -2
  2634. package/dist/node_modules/react-sizeme/dist/react-sizeme.min.js.map +0 -1
  2635. package/dist/node_modules/react-sizeme/package.json +0 -145
  2636. package/dist/node_modules/react-sizeme/rollup-min.config.js +0 -9
  2637. package/dist/node_modules/react-sizeme/rollup.config.js +0 -35
  2638. package/dist/node_modules/react-sizeme/wallaby.js +0 -20
  2639. package/dist/node_modules/semver/CHANGELOG.md +0 -85
  2640. package/dist/node_modules/semver/LICENSE +0 -15
  2641. package/dist/node_modules/semver/README.md +0 -563
  2642. package/dist/node_modules/semver/bin/semver.js +0 -173
  2643. package/dist/node_modules/semver/classes/comparator.js +0 -139
  2644. package/dist/node_modules/semver/classes/index.js +0 -5
  2645. package/dist/node_modules/semver/classes/range.js +0 -448
  2646. package/dist/node_modules/semver/classes/semver.js +0 -290
  2647. package/dist/node_modules/semver/functions/clean.js +0 -6
  2648. package/dist/node_modules/semver/functions/cmp.js +0 -48
  2649. package/dist/node_modules/semver/functions/coerce.js +0 -51
  2650. package/dist/node_modules/semver/functions/compare-build.js +0 -7
  2651. package/dist/node_modules/semver/functions/compare-loose.js +0 -3
  2652. package/dist/node_modules/semver/functions/compare.js +0 -5
  2653. package/dist/node_modules/semver/functions/diff.js +0 -23
  2654. package/dist/node_modules/semver/functions/eq.js +0 -3
  2655. package/dist/node_modules/semver/functions/gt.js +0 -3
  2656. package/dist/node_modules/semver/functions/gte.js +0 -3
  2657. package/dist/node_modules/semver/functions/inc.js +0 -15
  2658. package/dist/node_modules/semver/functions/lt.js +0 -3
  2659. package/dist/node_modules/semver/functions/lte.js +0 -3
  2660. package/dist/node_modules/semver/functions/major.js +0 -3
  2661. package/dist/node_modules/semver/functions/minor.js +0 -3
  2662. package/dist/node_modules/semver/functions/neq.js +0 -3
  2663. package/dist/node_modules/semver/functions/parse.js +0 -37
  2664. package/dist/node_modules/semver/functions/patch.js +0 -3
  2665. package/dist/node_modules/semver/functions/prerelease.js +0 -6
  2666. package/dist/node_modules/semver/functions/rcompare.js +0 -3
  2667. package/dist/node_modules/semver/functions/rsort.js +0 -3
  2668. package/dist/node_modules/semver/functions/satisfies.js +0 -10
  2669. package/dist/node_modules/semver/functions/sort.js +0 -3
  2670. package/dist/node_modules/semver/functions/valid.js +0 -6
  2671. package/dist/node_modules/semver/index.js +0 -47
  2672. package/dist/node_modules/semver/internal/constants.js +0 -17
  2673. package/dist/node_modules/semver/internal/debug.js +0 -9
  2674. package/dist/node_modules/semver/internal/identifiers.js +0 -23
  2675. package/dist/node_modules/semver/internal/re.js +0 -179
  2676. package/dist/node_modules/semver/package.json +0 -38
  2677. package/dist/node_modules/semver/preload.js +0 -2
  2678. package/dist/node_modules/semver/range.bnf +0 -16
  2679. package/dist/node_modules/semver/ranges/gtr.js +0 -4
  2680. package/dist/node_modules/semver/ranges/intersects.js +0 -7
  2681. package/dist/node_modules/semver/ranges/ltr.js +0 -4
  2682. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -25
  2683. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -24
  2684. package/dist/node_modules/semver/ranges/min-version.js +0 -57
  2685. package/dist/node_modules/semver/ranges/outside.js +0 -80
  2686. package/dist/node_modules/semver/ranges/simplify.js +0 -44
  2687. package/dist/node_modules/semver/ranges/to-comparators.js +0 -8
  2688. package/dist/node_modules/semver/ranges/valid.js +0 -11
  2689. package/dist/node_modules/terser-webpack-plugin/CHANGELOG.md +0 -428
  2690. package/dist/node_modules/terser-webpack-plugin/LICENSE +0 -20
  2691. package/dist/node_modules/terser-webpack-plugin/README.md +0 -698
  2692. package/dist/node_modules/terser-webpack-plugin/dist/Webpack4Cache.js +0 -134
  2693. package/dist/node_modules/terser-webpack-plugin/dist/Webpack5Cache.js +0 -37
  2694. package/dist/node_modules/terser-webpack-plugin/dist/cjs.js +0 -5
  2695. package/dist/node_modules/terser-webpack-plugin/dist/index.js +0 -594
  2696. package/dist/node_modules/terser-webpack-plugin/dist/minify.js +0 -179
  2697. package/dist/node_modules/terser-webpack-plugin/dist/options.json +0 -166
  2698. package/dist/node_modules/terser-webpack-plugin/package.json +0 -99
  2699. package/dist/package.json +0 -167
  2700. package/git-conventional-commits.json +0 -18
  2701. package/jest/setEnvVars.js +0 -3
  2702. package/jest/svgTransform.js +0 -8
  2703. package/public/common.css +0 -48
  2704. package/public/index.html +0 -18
  2705. package/public/modernizr-custom.js +0 -3
  2706. package/rollup.config.js +0 -97
  2707. package/scripts/build.sh +0 -6
  2708. package/src/CLI/assets/DevCenterLogo.js +0 -58
  2709. package/src/CLI/components/App/App.css +0 -22
  2710. package/src/CLI/components/App/App.js +0 -70
  2711. package/src/CLI/components/App/components/AppBar/AppBar.js +0 -157
  2712. package/src/CLI/components/App/components/AppBar/index.js +0 -1
  2713. package/src/CLI/components/App/components/index.js +0 -1
  2714. package/src/CLI/components/App/index.js +0 -1
  2715. package/src/CLI/components/index.js +0 -1
  2716. package/src/CLI/constants/index.js +0 -3
  2717. package/src/CLI/context/auth.js +0 -4
  2718. package/src/CLI/context/index.js +0 -1
  2719. package/src/CLI/flags/index.js +0 -0
  2720. package/src/CLI/hocs/__tests__/withAppDataProviderHOC.test.js +0 -57
  2721. package/src/CLI/hocs/__tests__/withCLIAppSettingsHOC.test.js +0 -68
  2722. package/src/CLI/hocs/__tests__/withGridLayoutHOC.test.js +0 -38
  2723. package/src/CLI/hocs/effects/__tests__/useProvideAuth.test.js +0 -74
  2724. package/src/CLI/hocs/effects/index.js +0 -1
  2725. package/src/CLI/hocs/effects/useProvideAuth/index.js +0 -1
  2726. package/src/CLI/hocs/effects/useProvideAuth/useProvideAuth.js +0 -93
  2727. package/src/CLI/hocs/utils.js +0 -22
  2728. package/src/CLI/hocs/withAppDataProviderHOC.js +0 -40
  2729. package/src/CLI/hocs/withCLIAppSettingsHOC.js +0 -33
  2730. package/src/CLI/hocs/withCorvaMagicHOC.js +0 -44
  2731. package/src/CLI/hocs/withDevCenterRouterHOC.js +0 -13
  2732. package/src/CLI/hocs/withGridLayoutHOC/index.js +0 -1
  2733. package/src/CLI/hocs/withGridLayoutHOC/withGridLayoutHOC.css +0 -12
  2734. package/src/CLI/hocs/withGridLayoutHOC/withGridLayoutHOC.global.css +0 -3
  2735. package/src/CLI/hocs/withGridLayoutHOC/withGridLayoutHOC.js +0 -96
  2736. package/src/CLI/hocs/withPDFLayoutHOC.js +0 -51
  2737. package/src/CLI/hocs/withReactRouterHOC.js +0 -60
  2738. package/src/CLI/index.js +0 -3
  2739. package/src/CLI/screens/LoginScreen/LoginScreen.css +0 -4
  2740. package/src/CLI/screens/LoginScreen/LoginScreen.js +0 -38
  2741. package/src/CLI/screens/LoginScreen/components/Auth.js +0 -36
  2742. package/src/CLI/screens/LoginScreen/components/AuthStep.js +0 -148
  2743. package/src/CLI/screens/LoginScreen/components/EmailStep.js +0 -82
  2744. package/src/CLI/screens/LoginScreen/components/IconLogo.js +0 -80
  2745. package/src/CLI/screens/LoginScreen/components/SSOButton.js +0 -113
  2746. package/src/CLI/screens/LoginScreen/components/index.js +0 -2
  2747. package/src/CLI/screens/LoginScreen/index.js +0 -1
  2748. package/src/CLI/screens/OAuthCallbackScreen/index.js +0 -51
  2749. package/src/CLI/screens/index.js +0 -2
  2750. package/src/cjs/devcenter/index.js +0 -1
  2751. package/src/cjs/devcenter/webpack/DevServerEntryPoint.js +0 -16
  2752. package/src/cjs/devcenter/webpack/DevServerIsolatedAppEntryPoint.js +0 -49
  2753. package/src/cjs/devcenter/webpack/constants.js +0 -71
  2754. package/src/cjs/devcenter/webpack/index.js +0 -7
  2755. package/src/cjs/devcenter/webpack/plugins/checkCorvaUIVersion.js +0 -51
  2756. package/src/cjs/devcenter/webpack/plugins/index.js +0 -1
  2757. package/src/cjs/devcenter/webpack/public/DevCenterIsolatedAppPage.html +0 -28
  2758. package/src/cjs/devcenter/webpack/public/favicon.ico +0 -0
  2759. package/src/cjs/devcenter/webpack/public/index.html +0 -28
  2760. package/src/cjs/devcenter/webpack/utils/__tests__/serializeDotEnv.test.js +0 -32
  2761. package/src/cjs/devcenter/webpack/utils/middlewares.js +0 -28
  2762. package/src/cjs/devcenter/webpack/utils/serializeDotEnv.js +0 -33
  2763. package/src/cjs/devcenter/webpack/validators/dependencies.js +0 -34
  2764. package/src/cjs/devcenter/webpack/validators/index.js +0 -13
  2765. package/src/cjs/devcenter/webpack/webpack.config.common.js +0 -103
  2766. package/src/cjs/devcenter/webpack/webpack.config.dev.js +0 -136
  2767. package/src/cjs/devcenter/webpack/webpack.config.prod.js +0 -119
  2768. package/src/cjs/index.js +0 -1
  2769. package/src/clients/auth0/index.js +0 -28
  2770. package/src/components/AppsGridDragHandle/AppsGridDragHandle.js +0 -30
  2771. package/src/components/AppsGridDragHandle/AppsGridDragHandle.scss +0 -62
  2772. package/src/components/GridLockButton/index.js +0 -55
  2773. package/src/components/Login/assets/images/google_logo.svg +0 -9
  2774. package/src/components/Login/assets/images/microsoft_logo.svg +0 -1
  2775. package/src/components/Login/assets/login_screen_progressive.jpg +0 -0
  2776. package/src/components/Login/assets/svg/promo.svg +0 -9
  2777. package/src/components/Login/assets/svg/promoDC.svg +0 -2400
  2778. package/src/components/Login/components/Chip.js +0 -48
  2779. package/src/components/Login/components/DCLogoIcon.js +0 -20
  2780. package/src/components/Login/components/EmailField.js +0 -75
  2781. package/src/components/Login/components/HiddenEmailField.js +0 -32
  2782. package/src/components/Login/components/Login.global.css +0 -110
  2783. package/src/components/Login/components/Login.js +0 -85
  2784. package/src/components/Login/components/LogoIcon.js +0 -20
  2785. package/src/components/Login/components/OrDivider.js +0 -48
  2786. package/src/components/Login/components/PasswordField.js +0 -73
  2787. package/src/components/Login/components/Step.js +0 -23
  2788. package/src/components/Login/components/StepContent.js +0 -29
  2789. package/src/components/Login/components/StepFooter.js +0 -78
  2790. package/src/components/Login/components/StepHeader.js +0 -31
  2791. package/src/components/Login/index.js +0 -24
  2792. package/src/components/index.js +0 -5
  2793. package/src/index.js +0 -3
  2794. package/src/styles/globalStyles.js +0 -8
  2795. package/src/utils/devcenter.js +0 -23
  2796. package/src/utils/index.js +0 -4
  2797. package/src/utils/recaptcha.js +0 -14
  2798. /package/{dist/CLI → CLI}/assets/DevCenterLogo.js +0 -0
  2799. /package/{dist/CLI → CLI}/components/App/App.js +0 -0
  2800. /package/{dist/CLI → CLI}/components/App/components/AppBar/AppBar.js +0 -0
  2801. /package/{dist/CLI → CLI}/constants/index.js +0 -0
  2802. /package/{dist/CLI → CLI}/hocs/utils.js +0 -0
  2803. /package/{dist/CLI → CLI}/hocs/withAppDataProviderHOC.js +0 -0
  2804. /package/{dist/CLI → CLI}/hocs/withCLIAppSettingsHOC.js +0 -0
  2805. /package/{dist/CLI → CLI}/hocs/withCorvaMagicHOC.js +0 -0
  2806. /package/{dist/CLI → CLI}/hocs/withDevCenterRouterHOC.js +0 -0
  2807. /package/{dist/CLI → CLI}/hocs/withGridLayoutHOC/withGridLayoutHOC.css.js +0 -0
  2808. /package/{dist/CLI → CLI}/hocs/withGridLayoutHOC/withGridLayoutHOC.global.css.js +0 -0
  2809. /package/{dist/CLI → CLI}/hocs/withPDFLayoutHOC.js +0 -0
  2810. /package/{dist/CLI → CLI}/hocs/withReactRouterHOC.js +0 -0
  2811. /package/{dist/CLI → CLI}/index.js +0 -0
  2812. /package/{dist/CLI → CLI}/screens/LoginScreen/LoginScreen.css.js +0 -0
  2813. /package/{dist/CLI → CLI}/screens/LoginScreen/components/IconLogo.js +0 -0
  2814. /package/{dist/CLI → CLI}/screens/LoginScreen/components/SSOButton.js +0 -0
  2815. /package/{dist/CLI → CLI}/screens/OAuthCallbackScreen/index.js +0 -0
  2816. /package/{dist/_virtual → _virtual}/_commonjsHelpers.js +0 -0
  2817. /package/{dist/_virtual → _virtual}/arrayLikeToArray.js +0 -0
  2818. /package/{dist/_virtual → _virtual}/arrayWithHoles.js +0 -0
  2819. /package/{dist/_virtual → _virtual}/arrayWithoutHoles.js +0 -0
  2820. /package/{dist/_virtual → _virtual}/iterableToArray.js +0 -0
  2821. /package/{dist/_virtual → _virtual}/iterableToArrayLimit.js +0 -0
  2822. /package/{dist/_virtual → _virtual}/nonIterableRest.js +0 -0
  2823. /package/{dist/_virtual → _virtual}/nonIterableSpread.js +0 -0
  2824. /package/{dist/_virtual → _virtual}/regeneratorRuntime.js +0 -0
  2825. /package/{dist/_virtual → _virtual}/typeof.js +0 -0
  2826. /package/{dist/_virtual → _virtual}/unsupportedIterableToArray.js +0 -0
  2827. /package/{dist/assets → assets}/319d9b9a39d511547cf55d1336a8eca4.svg +0 -0
  2828. /package/{dist/assets → assets}/55de612562c712e3a9d6ea86000e18c7.svg +0 -0
  2829. /package/{dist/assets → assets}/67f05495a7dbbee777bb0c7974f4588a.jpg +0 -0
  2830. /package/{dist/cjs → cjs}/devcenter/webpack/index.js +0 -0
  2831. /package/{dist/cjs → cjs}/devcenter/webpack/plugins/checkCorvaUIVersion.js +0 -0
  2832. /package/{dist/cjs → cjs}/devcenter/webpack/public/DevCenterIsolatedAppPage.html +0 -0
  2833. /package/{dist/cjs → cjs}/devcenter/webpack/public/favicon.ico +0 -0
  2834. /package/{dist/cjs → cjs}/devcenter/webpack/public/index.html +0 -0
  2835. /package/{dist/cjs → cjs}/devcenter/webpack/utils/middlewares.js +0 -0
  2836. /package/{dist/cjs → cjs}/devcenter/webpack/utils/serializeDotEnv.js +0 -0
  2837. /package/{dist/cjs → cjs}/devcenter/webpack/validators/dependencies.js +0 -0
  2838. /package/{dist/cjs → cjs}/devcenter/webpack/validators/index.js +0 -0
  2839. /package/{dist/cjs → cjs}/devcenter/webpack/webpack.config.dev.js +0 -0
  2840. /package/{dist/cjs → cjs}/index.js +0 -0
  2841. /package/{dist/clients → clients}/auth0/index.js +0 -0
  2842. /package/{dist/components → components}/AppsGridDragHandle/AppsGridDragHandle.js +0 -0
  2843. /package/{dist/components → components}/Login/components/Chip.js +0 -0
  2844. /package/{dist/components → components}/Login/components/HiddenEmailField.js +0 -0
  2845. /package/{dist/components → components}/Login/components/Login.global.css.js +0 -0
  2846. /package/{dist/components → components}/Login/components/Login.js +0 -0
  2847. /package/{dist/components → components}/Login/components/LogoIcon.js +0 -0
  2848. /package/{dist/components → components}/Login/components/OrDivider.js +0 -0
  2849. /package/{dist/components → components}/Login/components/PasswordField.js +0 -0
  2850. /package/{dist/components → components}/Login/components/Step.js +0 -0
  2851. /package/{dist/components → components}/Login/components/StepContent.js +0 -0
  2852. /package/{dist/components → components}/Login/components/StepFooter.js +0 -0
  2853. /package/{dist/components → components}/Login/components/StepHeader.js +0 -0
  2854. /package/{dist/components → components}/index.js +0 -0
  2855. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/arrayLikeToArray.js +0 -0
  2856. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/arrayWithHoles.js +0 -0
  2857. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/arrayWithoutHoles.js +0 -0
  2858. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/asyncToGenerator.js +0 -0
  2859. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/defineProperty.js +0 -0
  2860. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/iterableToArray.js +0 -0
  2861. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/iterableToArrayLimit.js +0 -0
  2862. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/nonIterableRest.js +0 -0
  2863. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/nonIterableSpread.js +0 -0
  2864. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/regeneratorRuntime.js +0 -0
  2865. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/slicedToArray.js +0 -0
  2866. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/taggedTemplateLiteral.js +0 -0
  2867. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/toConsumableArray.js +0 -0
  2868. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/typeof.js +0 -0
  2869. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -0
  2870. /package/{dist/ext-cjs → ext-cjs}/@babel/runtime/regenerator/index.js +0 -0
  2871. /package/{dist/ext-esm → ext-esm}/auth0-js/dist/auth0.min.esm.js +0 -0
  2872. /package/{dist/ext-esm → ext-esm}/style-inject/dist/style-inject.es.js +0 -0
  2873. /package/{dist/index.js → index.js} +0 -0
  2874. /package/{dist/utils → utils}/devcenter.js +0 -0
  2875. /package/{dist/utils → utils}/recaptcha.js +0 -0
@@ -1,3091 +0,0 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define([], factory);
6
- else if(typeof exports === 'object')
7
- exports["sourceMap"] = factory();
8
- else
9
- root["sourceMap"] = factory();
10
- })(this, function() {
11
- return /******/ (function(modules) { // webpackBootstrap
12
- /******/ // The module cache
13
- /******/ var installedModules = {};
14
- /******/
15
- /******/ // The require function
16
- /******/ function __webpack_require__(moduleId) {
17
- /******/
18
- /******/ // Check if module is in cache
19
- /******/ if(installedModules[moduleId])
20
- /******/ return installedModules[moduleId].exports;
21
- /******/
22
- /******/ // Create a new module (and put it into the cache)
23
- /******/ var module = installedModules[moduleId] = {
24
- /******/ exports: {},
25
- /******/ id: moduleId,
26
- /******/ loaded: false
27
- /******/ };
28
- /******/
29
- /******/ // Execute the module function
30
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
- /******/
32
- /******/ // Flag the module as loaded
33
- /******/ module.loaded = true;
34
- /******/
35
- /******/ // Return the exports of the module
36
- /******/ return module.exports;
37
- /******/ }
38
- /******/
39
- /******/
40
- /******/ // expose the modules object (__webpack_modules__)
41
- /******/ __webpack_require__.m = modules;
42
- /******/
43
- /******/ // expose the module cache
44
- /******/ __webpack_require__.c = installedModules;
45
- /******/
46
- /******/ // __webpack_public_path__
47
- /******/ __webpack_require__.p = "";
48
- /******/
49
- /******/ // Load entry module and return exports
50
- /******/ return __webpack_require__(0);
51
- /******/ })
52
- /************************************************************************/
53
- /******/ ([
54
- /* 0 */
55
- /***/ (function(module, exports, __webpack_require__) {
56
-
57
- /*
58
- * Copyright 2009-2011 Mozilla Foundation and contributors
59
- * Licensed under the New BSD license. See LICENSE.txt or:
60
- * http://opensource.org/licenses/BSD-3-Clause
61
- */
62
- exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
63
- exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
64
- exports.SourceNode = __webpack_require__(10).SourceNode;
65
-
66
-
67
- /***/ }),
68
- /* 1 */
69
- /***/ (function(module, exports, __webpack_require__) {
70
-
71
- /* -*- Mode: js; js-indent-level: 2; -*- */
72
- /*
73
- * Copyright 2011 Mozilla Foundation and contributors
74
- * Licensed under the New BSD license. See LICENSE or:
75
- * http://opensource.org/licenses/BSD-3-Clause
76
- */
77
-
78
- var base64VLQ = __webpack_require__(2);
79
- var util = __webpack_require__(4);
80
- var ArraySet = __webpack_require__(5).ArraySet;
81
- var MappingList = __webpack_require__(6).MappingList;
82
-
83
- /**
84
- * An instance of the SourceMapGenerator represents a source map which is
85
- * being built incrementally. You may pass an object with the following
86
- * properties:
87
- *
88
- * - file: The filename of the generated source.
89
- * - sourceRoot: A root for all relative URLs in this source map.
90
- */
91
- function SourceMapGenerator(aArgs) {
92
- if (!aArgs) {
93
- aArgs = {};
94
- }
95
- this._file = util.getArg(aArgs, 'file', null);
96
- this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
97
- this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
98
- this._sources = new ArraySet();
99
- this._names = new ArraySet();
100
- this._mappings = new MappingList();
101
- this._sourcesContents = null;
102
- }
103
-
104
- SourceMapGenerator.prototype._version = 3;
105
-
106
- /**
107
- * Creates a new SourceMapGenerator based on a SourceMapConsumer
108
- *
109
- * @param aSourceMapConsumer The SourceMap.
110
- */
111
- SourceMapGenerator.fromSourceMap =
112
- function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
113
- var sourceRoot = aSourceMapConsumer.sourceRoot;
114
- var generator = new SourceMapGenerator({
115
- file: aSourceMapConsumer.file,
116
- sourceRoot: sourceRoot
117
- });
118
- aSourceMapConsumer.eachMapping(function (mapping) {
119
- var newMapping = {
120
- generated: {
121
- line: mapping.generatedLine,
122
- column: mapping.generatedColumn
123
- }
124
- };
125
-
126
- if (mapping.source != null) {
127
- newMapping.source = mapping.source;
128
- if (sourceRoot != null) {
129
- newMapping.source = util.relative(sourceRoot, newMapping.source);
130
- }
131
-
132
- newMapping.original = {
133
- line: mapping.originalLine,
134
- column: mapping.originalColumn
135
- };
136
-
137
- if (mapping.name != null) {
138
- newMapping.name = mapping.name;
139
- }
140
- }
141
-
142
- generator.addMapping(newMapping);
143
- });
144
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
145
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
146
- if (content != null) {
147
- generator.setSourceContent(sourceFile, content);
148
- }
149
- });
150
- return generator;
151
- };
152
-
153
- /**
154
- * Add a single mapping from original source line and column to the generated
155
- * source's line and column for this source map being created. The mapping
156
- * object should have the following properties:
157
- *
158
- * - generated: An object with the generated line and column positions.
159
- * - original: An object with the original line and column positions.
160
- * - source: The original source file (relative to the sourceRoot).
161
- * - name: An optional original token name for this mapping.
162
- */
163
- SourceMapGenerator.prototype.addMapping =
164
- function SourceMapGenerator_addMapping(aArgs) {
165
- var generated = util.getArg(aArgs, 'generated');
166
- var original = util.getArg(aArgs, 'original', null);
167
- var source = util.getArg(aArgs, 'source', null);
168
- var name = util.getArg(aArgs, 'name', null);
169
-
170
- if (!this._skipValidation) {
171
- this._validateMapping(generated, original, source, name);
172
- }
173
-
174
- if (source != null) {
175
- source = String(source);
176
- if (!this._sources.has(source)) {
177
- this._sources.add(source);
178
- }
179
- }
180
-
181
- if (name != null) {
182
- name = String(name);
183
- if (!this._names.has(name)) {
184
- this._names.add(name);
185
- }
186
- }
187
-
188
- this._mappings.add({
189
- generatedLine: generated.line,
190
- generatedColumn: generated.column,
191
- originalLine: original != null && original.line,
192
- originalColumn: original != null && original.column,
193
- source: source,
194
- name: name
195
- });
196
- };
197
-
198
- /**
199
- * Set the source content for a source file.
200
- */
201
- SourceMapGenerator.prototype.setSourceContent =
202
- function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
203
- var source = aSourceFile;
204
- if (this._sourceRoot != null) {
205
- source = util.relative(this._sourceRoot, source);
206
- }
207
-
208
- if (aSourceContent != null) {
209
- // Add the source content to the _sourcesContents map.
210
- // Create a new _sourcesContents map if the property is null.
211
- if (!this._sourcesContents) {
212
- this._sourcesContents = Object.create(null);
213
- }
214
- this._sourcesContents[util.toSetString(source)] = aSourceContent;
215
- } else if (this._sourcesContents) {
216
- // Remove the source file from the _sourcesContents map.
217
- // If the _sourcesContents map is empty, set the property to null.
218
- delete this._sourcesContents[util.toSetString(source)];
219
- if (Object.keys(this._sourcesContents).length === 0) {
220
- this._sourcesContents = null;
221
- }
222
- }
223
- };
224
-
225
- /**
226
- * Applies the mappings of a sub-source-map for a specific source file to the
227
- * source map being generated. Each mapping to the supplied source file is
228
- * rewritten using the supplied source map. Note: The resolution for the
229
- * resulting mappings is the minimium of this map and the supplied map.
230
- *
231
- * @param aSourceMapConsumer The source map to be applied.
232
- * @param aSourceFile Optional. The filename of the source file.
233
- * If omitted, SourceMapConsumer's file property will be used.
234
- * @param aSourceMapPath Optional. The dirname of the path to the source map
235
- * to be applied. If relative, it is relative to the SourceMapConsumer.
236
- * This parameter is needed when the two source maps aren't in the same
237
- * directory, and the source map to be applied contains relative source
238
- * paths. If so, those relative source paths need to be rewritten
239
- * relative to the SourceMapGenerator.
240
- */
241
- SourceMapGenerator.prototype.applySourceMap =
242
- function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
243
- var sourceFile = aSourceFile;
244
- // If aSourceFile is omitted, we will use the file property of the SourceMap
245
- if (aSourceFile == null) {
246
- if (aSourceMapConsumer.file == null) {
247
- throw new Error(
248
- 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
249
- 'or the source map\'s "file" property. Both were omitted.'
250
- );
251
- }
252
- sourceFile = aSourceMapConsumer.file;
253
- }
254
- var sourceRoot = this._sourceRoot;
255
- // Make "sourceFile" relative if an absolute Url is passed.
256
- if (sourceRoot != null) {
257
- sourceFile = util.relative(sourceRoot, sourceFile);
258
- }
259
- // Applying the SourceMap can add and remove items from the sources and
260
- // the names array.
261
- var newSources = new ArraySet();
262
- var newNames = new ArraySet();
263
-
264
- // Find mappings for the "sourceFile"
265
- this._mappings.unsortedForEach(function (mapping) {
266
- if (mapping.source === sourceFile && mapping.originalLine != null) {
267
- // Check if it can be mapped by the source map, then update the mapping.
268
- var original = aSourceMapConsumer.originalPositionFor({
269
- line: mapping.originalLine,
270
- column: mapping.originalColumn
271
- });
272
- if (original.source != null) {
273
- // Copy mapping
274
- mapping.source = original.source;
275
- if (aSourceMapPath != null) {
276
- mapping.source = util.join(aSourceMapPath, mapping.source)
277
- }
278
- if (sourceRoot != null) {
279
- mapping.source = util.relative(sourceRoot, mapping.source);
280
- }
281
- mapping.originalLine = original.line;
282
- mapping.originalColumn = original.column;
283
- if (original.name != null) {
284
- mapping.name = original.name;
285
- }
286
- }
287
- }
288
-
289
- var source = mapping.source;
290
- if (source != null && !newSources.has(source)) {
291
- newSources.add(source);
292
- }
293
-
294
- var name = mapping.name;
295
- if (name != null && !newNames.has(name)) {
296
- newNames.add(name);
297
- }
298
-
299
- }, this);
300
- this._sources = newSources;
301
- this._names = newNames;
302
-
303
- // Copy sourcesContents of applied map.
304
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
305
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
306
- if (content != null) {
307
- if (aSourceMapPath != null) {
308
- sourceFile = util.join(aSourceMapPath, sourceFile);
309
- }
310
- if (sourceRoot != null) {
311
- sourceFile = util.relative(sourceRoot, sourceFile);
312
- }
313
- this.setSourceContent(sourceFile, content);
314
- }
315
- }, this);
316
- };
317
-
318
- /**
319
- * A mapping can have one of the three levels of data:
320
- *
321
- * 1. Just the generated position.
322
- * 2. The Generated position, original position, and original source.
323
- * 3. Generated and original position, original source, as well as a name
324
- * token.
325
- *
326
- * To maintain consistency, we validate that any new mapping being added falls
327
- * in to one of these categories.
328
- */
329
- SourceMapGenerator.prototype._validateMapping =
330
- function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
331
- aName) {
332
- // When aOriginal is truthy but has empty values for .line and .column,
333
- // it is most likely a programmer error. In this case we throw a very
334
- // specific error message to try to guide them the right way.
335
- // For example: https://github.com/Polymer/polymer-bundler/pull/519
336
- if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
337
- throw new Error(
338
- 'original.line and original.column are not numbers -- you probably meant to omit ' +
339
- 'the original mapping entirely and only map the generated position. If so, pass ' +
340
- 'null for the original mapping instead of an object with empty or null values.'
341
- );
342
- }
343
-
344
- if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
345
- && aGenerated.line > 0 && aGenerated.column >= 0
346
- && !aOriginal && !aSource && !aName) {
347
- // Case 1.
348
- return;
349
- }
350
- else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
351
- && aOriginal && 'line' in aOriginal && 'column' in aOriginal
352
- && aGenerated.line > 0 && aGenerated.column >= 0
353
- && aOriginal.line > 0 && aOriginal.column >= 0
354
- && aSource) {
355
- // Cases 2 and 3.
356
- return;
357
- }
358
- else {
359
- throw new Error('Invalid mapping: ' + JSON.stringify({
360
- generated: aGenerated,
361
- source: aSource,
362
- original: aOriginal,
363
- name: aName
364
- }));
365
- }
366
- };
367
-
368
- /**
369
- * Serialize the accumulated mappings in to the stream of base 64 VLQs
370
- * specified by the source map format.
371
- */
372
- SourceMapGenerator.prototype._serializeMappings =
373
- function SourceMapGenerator_serializeMappings() {
374
- var previousGeneratedColumn = 0;
375
- var previousGeneratedLine = 1;
376
- var previousOriginalColumn = 0;
377
- var previousOriginalLine = 0;
378
- var previousName = 0;
379
- var previousSource = 0;
380
- var result = '';
381
- var next;
382
- var mapping;
383
- var nameIdx;
384
- var sourceIdx;
385
-
386
- var mappings = this._mappings.toArray();
387
- for (var i = 0, len = mappings.length; i < len; i++) {
388
- mapping = mappings[i];
389
- next = ''
390
-
391
- if (mapping.generatedLine !== previousGeneratedLine) {
392
- previousGeneratedColumn = 0;
393
- while (mapping.generatedLine !== previousGeneratedLine) {
394
- next += ';';
395
- previousGeneratedLine++;
396
- }
397
- }
398
- else {
399
- if (i > 0) {
400
- if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
401
- continue;
402
- }
403
- next += ',';
404
- }
405
- }
406
-
407
- next += base64VLQ.encode(mapping.generatedColumn
408
- - previousGeneratedColumn);
409
- previousGeneratedColumn = mapping.generatedColumn;
410
-
411
- if (mapping.source != null) {
412
- sourceIdx = this._sources.indexOf(mapping.source);
413
- next += base64VLQ.encode(sourceIdx - previousSource);
414
- previousSource = sourceIdx;
415
-
416
- // lines are stored 0-based in SourceMap spec version 3
417
- next += base64VLQ.encode(mapping.originalLine - 1
418
- - previousOriginalLine);
419
- previousOriginalLine = mapping.originalLine - 1;
420
-
421
- next += base64VLQ.encode(mapping.originalColumn
422
- - previousOriginalColumn);
423
- previousOriginalColumn = mapping.originalColumn;
424
-
425
- if (mapping.name != null) {
426
- nameIdx = this._names.indexOf(mapping.name);
427
- next += base64VLQ.encode(nameIdx - previousName);
428
- previousName = nameIdx;
429
- }
430
- }
431
-
432
- result += next;
433
- }
434
-
435
- return result;
436
- };
437
-
438
- SourceMapGenerator.prototype._generateSourcesContent =
439
- function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
440
- return aSources.map(function (source) {
441
- if (!this._sourcesContents) {
442
- return null;
443
- }
444
- if (aSourceRoot != null) {
445
- source = util.relative(aSourceRoot, source);
446
- }
447
- var key = util.toSetString(source);
448
- return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
449
- ? this._sourcesContents[key]
450
- : null;
451
- }, this);
452
- };
453
-
454
- /**
455
- * Externalize the source map.
456
- */
457
- SourceMapGenerator.prototype.toJSON =
458
- function SourceMapGenerator_toJSON() {
459
- var map = {
460
- version: this._version,
461
- sources: this._sources.toArray(),
462
- names: this._names.toArray(),
463
- mappings: this._serializeMappings()
464
- };
465
- if (this._file != null) {
466
- map.file = this._file;
467
- }
468
- if (this._sourceRoot != null) {
469
- map.sourceRoot = this._sourceRoot;
470
- }
471
- if (this._sourcesContents) {
472
- map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
473
- }
474
-
475
- return map;
476
- };
477
-
478
- /**
479
- * Render the source map being generated to a string.
480
- */
481
- SourceMapGenerator.prototype.toString =
482
- function SourceMapGenerator_toString() {
483
- return JSON.stringify(this.toJSON());
484
- };
485
-
486
- exports.SourceMapGenerator = SourceMapGenerator;
487
-
488
-
489
- /***/ }),
490
- /* 2 */
491
- /***/ (function(module, exports, __webpack_require__) {
492
-
493
- /* -*- Mode: js; js-indent-level: 2; -*- */
494
- /*
495
- * Copyright 2011 Mozilla Foundation and contributors
496
- * Licensed under the New BSD license. See LICENSE or:
497
- * http://opensource.org/licenses/BSD-3-Clause
498
- *
499
- * Based on the Base 64 VLQ implementation in Closure Compiler:
500
- * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
501
- *
502
- * Copyright 2011 The Closure Compiler Authors. All rights reserved.
503
- * Redistribution and use in source and binary forms, with or without
504
- * modification, are permitted provided that the following conditions are
505
- * met:
506
- *
507
- * * Redistributions of source code must retain the above copyright
508
- * notice, this list of conditions and the following disclaimer.
509
- * * Redistributions in binary form must reproduce the above
510
- * copyright notice, this list of conditions and the following
511
- * disclaimer in the documentation and/or other materials provided
512
- * with the distribution.
513
- * * Neither the name of Google Inc. nor the names of its
514
- * contributors may be used to endorse or promote products derived
515
- * from this software without specific prior written permission.
516
- *
517
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
518
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
519
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
520
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
521
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
522
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
523
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
524
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
525
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
526
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
527
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
528
- */
529
-
530
- var base64 = __webpack_require__(3);
531
-
532
- // A single base 64 digit can contain 6 bits of data. For the base 64 variable
533
- // length quantities we use in the source map spec, the first bit is the sign,
534
- // the next four bits are the actual value, and the 6th bit is the
535
- // continuation bit. The continuation bit tells us whether there are more
536
- // digits in this value following this digit.
537
- //
538
- // Continuation
539
- // | Sign
540
- // | |
541
- // V V
542
- // 101011
543
-
544
- var VLQ_BASE_SHIFT = 5;
545
-
546
- // binary: 100000
547
- var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
548
-
549
- // binary: 011111
550
- var VLQ_BASE_MASK = VLQ_BASE - 1;
551
-
552
- // binary: 100000
553
- var VLQ_CONTINUATION_BIT = VLQ_BASE;
554
-
555
- /**
556
- * Converts from a two-complement value to a value where the sign bit is
557
- * placed in the least significant bit. For example, as decimals:
558
- * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
559
- * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
560
- */
561
- function toVLQSigned(aValue) {
562
- return aValue < 0
563
- ? ((-aValue) << 1) + 1
564
- : (aValue << 1) + 0;
565
- }
566
-
567
- /**
568
- * Converts to a two-complement value from a value where the sign bit is
569
- * placed in the least significant bit. For example, as decimals:
570
- * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
571
- * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
572
- */
573
- function fromVLQSigned(aValue) {
574
- var isNegative = (aValue & 1) === 1;
575
- var shifted = aValue >> 1;
576
- return isNegative
577
- ? -shifted
578
- : shifted;
579
- }
580
-
581
- /**
582
- * Returns the base 64 VLQ encoded value.
583
- */
584
- exports.encode = function base64VLQ_encode(aValue) {
585
- var encoded = "";
586
- var digit;
587
-
588
- var vlq = toVLQSigned(aValue);
589
-
590
- do {
591
- digit = vlq & VLQ_BASE_MASK;
592
- vlq >>>= VLQ_BASE_SHIFT;
593
- if (vlq > 0) {
594
- // There are still more digits in this value, so we must make sure the
595
- // continuation bit is marked.
596
- digit |= VLQ_CONTINUATION_BIT;
597
- }
598
- encoded += base64.encode(digit);
599
- } while (vlq > 0);
600
-
601
- return encoded;
602
- };
603
-
604
- /**
605
- * Decodes the next base 64 VLQ value from the given string and returns the
606
- * value and the rest of the string via the out parameter.
607
- */
608
- exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
609
- var strLen = aStr.length;
610
- var result = 0;
611
- var shift = 0;
612
- var continuation, digit;
613
-
614
- do {
615
- if (aIndex >= strLen) {
616
- throw new Error("Expected more digits in base 64 VLQ value.");
617
- }
618
-
619
- digit = base64.decode(aStr.charCodeAt(aIndex++));
620
- if (digit === -1) {
621
- throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
622
- }
623
-
624
- continuation = !!(digit & VLQ_CONTINUATION_BIT);
625
- digit &= VLQ_BASE_MASK;
626
- result = result + (digit << shift);
627
- shift += VLQ_BASE_SHIFT;
628
- } while (continuation);
629
-
630
- aOutParam.value = fromVLQSigned(result);
631
- aOutParam.rest = aIndex;
632
- };
633
-
634
-
635
- /***/ }),
636
- /* 3 */
637
- /***/ (function(module, exports) {
638
-
639
- /* -*- Mode: js; js-indent-level: 2; -*- */
640
- /*
641
- * Copyright 2011 Mozilla Foundation and contributors
642
- * Licensed under the New BSD license. See LICENSE or:
643
- * http://opensource.org/licenses/BSD-3-Clause
644
- */
645
-
646
- var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
647
-
648
- /**
649
- * Encode an integer in the range of 0 to 63 to a single base 64 digit.
650
- */
651
- exports.encode = function (number) {
652
- if (0 <= number && number < intToCharMap.length) {
653
- return intToCharMap[number];
654
- }
655
- throw new TypeError("Must be between 0 and 63: " + number);
656
- };
657
-
658
- /**
659
- * Decode a single base 64 character code digit to an integer. Returns -1 on
660
- * failure.
661
- */
662
- exports.decode = function (charCode) {
663
- var bigA = 65; // 'A'
664
- var bigZ = 90; // 'Z'
665
-
666
- var littleA = 97; // 'a'
667
- var littleZ = 122; // 'z'
668
-
669
- var zero = 48; // '0'
670
- var nine = 57; // '9'
671
-
672
- var plus = 43; // '+'
673
- var slash = 47; // '/'
674
-
675
- var littleOffset = 26;
676
- var numberOffset = 52;
677
-
678
- // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
679
- if (bigA <= charCode && charCode <= bigZ) {
680
- return (charCode - bigA);
681
- }
682
-
683
- // 26 - 51: abcdefghijklmnopqrstuvwxyz
684
- if (littleA <= charCode && charCode <= littleZ) {
685
- return (charCode - littleA + littleOffset);
686
- }
687
-
688
- // 52 - 61: 0123456789
689
- if (zero <= charCode && charCode <= nine) {
690
- return (charCode - zero + numberOffset);
691
- }
692
-
693
- // 62: +
694
- if (charCode == plus) {
695
- return 62;
696
- }
697
-
698
- // 63: /
699
- if (charCode == slash) {
700
- return 63;
701
- }
702
-
703
- // Invalid base64 digit.
704
- return -1;
705
- };
706
-
707
-
708
- /***/ }),
709
- /* 4 */
710
- /***/ (function(module, exports) {
711
-
712
- /* -*- Mode: js; js-indent-level: 2; -*- */
713
- /*
714
- * Copyright 2011 Mozilla Foundation and contributors
715
- * Licensed under the New BSD license. See LICENSE or:
716
- * http://opensource.org/licenses/BSD-3-Clause
717
- */
718
-
719
- /**
720
- * This is a helper function for getting values from parameter/options
721
- * objects.
722
- *
723
- * @param args The object we are extracting values from
724
- * @param name The name of the property we are getting.
725
- * @param defaultValue An optional value to return if the property is missing
726
- * from the object. If this is not specified and the property is missing, an
727
- * error will be thrown.
728
- */
729
- function getArg(aArgs, aName, aDefaultValue) {
730
- if (aName in aArgs) {
731
- return aArgs[aName];
732
- } else if (arguments.length === 3) {
733
- return aDefaultValue;
734
- } else {
735
- throw new Error('"' + aName + '" is a required argument.');
736
- }
737
- }
738
- exports.getArg = getArg;
739
-
740
- var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
741
- var dataUrlRegexp = /^data:.+\,.+$/;
742
-
743
- function urlParse(aUrl) {
744
- var match = aUrl.match(urlRegexp);
745
- if (!match) {
746
- return null;
747
- }
748
- return {
749
- scheme: match[1],
750
- auth: match[2],
751
- host: match[3],
752
- port: match[4],
753
- path: match[5]
754
- };
755
- }
756
- exports.urlParse = urlParse;
757
-
758
- function urlGenerate(aParsedUrl) {
759
- var url = '';
760
- if (aParsedUrl.scheme) {
761
- url += aParsedUrl.scheme + ':';
762
- }
763
- url += '//';
764
- if (aParsedUrl.auth) {
765
- url += aParsedUrl.auth + '@';
766
- }
767
- if (aParsedUrl.host) {
768
- url += aParsedUrl.host;
769
- }
770
- if (aParsedUrl.port) {
771
- url += ":" + aParsedUrl.port
772
- }
773
- if (aParsedUrl.path) {
774
- url += aParsedUrl.path;
775
- }
776
- return url;
777
- }
778
- exports.urlGenerate = urlGenerate;
779
-
780
- /**
781
- * Normalizes a path, or the path portion of a URL:
782
- *
783
- * - Replaces consecutive slashes with one slash.
784
- * - Removes unnecessary '.' parts.
785
- * - Removes unnecessary '<dir>/..' parts.
786
- *
787
- * Based on code in the Node.js 'path' core module.
788
- *
789
- * @param aPath The path or url to normalize.
790
- */
791
- function normalize(aPath) {
792
- var path = aPath;
793
- var url = urlParse(aPath);
794
- if (url) {
795
- if (!url.path) {
796
- return aPath;
797
- }
798
- path = url.path;
799
- }
800
- var isAbsolute = exports.isAbsolute(path);
801
-
802
- var parts = path.split(/\/+/);
803
- for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
804
- part = parts[i];
805
- if (part === '.') {
806
- parts.splice(i, 1);
807
- } else if (part === '..') {
808
- up++;
809
- } else if (up > 0) {
810
- if (part === '') {
811
- // The first part is blank if the path is absolute. Trying to go
812
- // above the root is a no-op. Therefore we can remove all '..' parts
813
- // directly after the root.
814
- parts.splice(i + 1, up);
815
- up = 0;
816
- } else {
817
- parts.splice(i, 2);
818
- up--;
819
- }
820
- }
821
- }
822
- path = parts.join('/');
823
-
824
- if (path === '') {
825
- path = isAbsolute ? '/' : '.';
826
- }
827
-
828
- if (url) {
829
- url.path = path;
830
- return urlGenerate(url);
831
- }
832
- return path;
833
- }
834
- exports.normalize = normalize;
835
-
836
- /**
837
- * Joins two paths/URLs.
838
- *
839
- * @param aRoot The root path or URL.
840
- * @param aPath The path or URL to be joined with the root.
841
- *
842
- * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
843
- * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
844
- * first.
845
- * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
846
- * is updated with the result and aRoot is returned. Otherwise the result
847
- * is returned.
848
- * - If aPath is absolute, the result is aPath.
849
- * - Otherwise the two paths are joined with a slash.
850
- * - Joining for example 'http://' and 'www.example.com' is also supported.
851
- */
852
- function join(aRoot, aPath) {
853
- if (aRoot === "") {
854
- aRoot = ".";
855
- }
856
- if (aPath === "") {
857
- aPath = ".";
858
- }
859
- var aPathUrl = urlParse(aPath);
860
- var aRootUrl = urlParse(aRoot);
861
- if (aRootUrl) {
862
- aRoot = aRootUrl.path || '/';
863
- }
864
-
865
- // `join(foo, '//www.example.org')`
866
- if (aPathUrl && !aPathUrl.scheme) {
867
- if (aRootUrl) {
868
- aPathUrl.scheme = aRootUrl.scheme;
869
- }
870
- return urlGenerate(aPathUrl);
871
- }
872
-
873
- if (aPathUrl || aPath.match(dataUrlRegexp)) {
874
- return aPath;
875
- }
876
-
877
- // `join('http://', 'www.example.com')`
878
- if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
879
- aRootUrl.host = aPath;
880
- return urlGenerate(aRootUrl);
881
- }
882
-
883
- var joined = aPath.charAt(0) === '/'
884
- ? aPath
885
- : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
886
-
887
- if (aRootUrl) {
888
- aRootUrl.path = joined;
889
- return urlGenerate(aRootUrl);
890
- }
891
- return joined;
892
- }
893
- exports.join = join;
894
-
895
- exports.isAbsolute = function (aPath) {
896
- return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
897
- };
898
-
899
- /**
900
- * Make a path relative to a URL or another path.
901
- *
902
- * @param aRoot The root path or URL.
903
- * @param aPath The path or URL to be made relative to aRoot.
904
- */
905
- function relative(aRoot, aPath) {
906
- if (aRoot === "") {
907
- aRoot = ".";
908
- }
909
-
910
- aRoot = aRoot.replace(/\/$/, '');
911
-
912
- // It is possible for the path to be above the root. In this case, simply
913
- // checking whether the root is a prefix of the path won't work. Instead, we
914
- // need to remove components from the root one by one, until either we find
915
- // a prefix that fits, or we run out of components to remove.
916
- var level = 0;
917
- while (aPath.indexOf(aRoot + '/') !== 0) {
918
- var index = aRoot.lastIndexOf("/");
919
- if (index < 0) {
920
- return aPath;
921
- }
922
-
923
- // If the only part of the root that is left is the scheme (i.e. http://,
924
- // file:///, etc.), one or more slashes (/), or simply nothing at all, we
925
- // have exhausted all components, so the path is not relative to the root.
926
- aRoot = aRoot.slice(0, index);
927
- if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
928
- return aPath;
929
- }
930
-
931
- ++level;
932
- }
933
-
934
- // Make sure we add a "../" for each component we removed from the root.
935
- return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
936
- }
937
- exports.relative = relative;
938
-
939
- var supportsNullProto = (function () {
940
- var obj = Object.create(null);
941
- return !('__proto__' in obj);
942
- }());
943
-
944
- function identity (s) {
945
- return s;
946
- }
947
-
948
- /**
949
- * Because behavior goes wacky when you set `__proto__` on objects, we
950
- * have to prefix all the strings in our set with an arbitrary character.
951
- *
952
- * See https://github.com/mozilla/source-map/pull/31 and
953
- * https://github.com/mozilla/source-map/issues/30
954
- *
955
- * @param String aStr
956
- */
957
- function toSetString(aStr) {
958
- if (isProtoString(aStr)) {
959
- return '$' + aStr;
960
- }
961
-
962
- return aStr;
963
- }
964
- exports.toSetString = supportsNullProto ? identity : toSetString;
965
-
966
- function fromSetString(aStr) {
967
- if (isProtoString(aStr)) {
968
- return aStr.slice(1);
969
- }
970
-
971
- return aStr;
972
- }
973
- exports.fromSetString = supportsNullProto ? identity : fromSetString;
974
-
975
- function isProtoString(s) {
976
- if (!s) {
977
- return false;
978
- }
979
-
980
- var length = s.length;
981
-
982
- if (length < 9 /* "__proto__".length */) {
983
- return false;
984
- }
985
-
986
- if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
987
- s.charCodeAt(length - 2) !== 95 /* '_' */ ||
988
- s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
989
- s.charCodeAt(length - 4) !== 116 /* 't' */ ||
990
- s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
991
- s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
992
- s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
993
- s.charCodeAt(length - 8) !== 95 /* '_' */ ||
994
- s.charCodeAt(length - 9) !== 95 /* '_' */) {
995
- return false;
996
- }
997
-
998
- for (var i = length - 10; i >= 0; i--) {
999
- if (s.charCodeAt(i) !== 36 /* '$' */) {
1000
- return false;
1001
- }
1002
- }
1003
-
1004
- return true;
1005
- }
1006
-
1007
- /**
1008
- * Comparator between two mappings where the original positions are compared.
1009
- *
1010
- * Optionally pass in `true` as `onlyCompareGenerated` to consider two
1011
- * mappings with the same original source/line/column, but different generated
1012
- * line and column the same. Useful when searching for a mapping with a
1013
- * stubbed out mapping.
1014
- */
1015
- function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
1016
- var cmp = mappingA.source - mappingB.source;
1017
- if (cmp !== 0) {
1018
- return cmp;
1019
- }
1020
-
1021
- cmp = mappingA.originalLine - mappingB.originalLine;
1022
- if (cmp !== 0) {
1023
- return cmp;
1024
- }
1025
-
1026
- cmp = mappingA.originalColumn - mappingB.originalColumn;
1027
- if (cmp !== 0 || onlyCompareOriginal) {
1028
- return cmp;
1029
- }
1030
-
1031
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
1032
- if (cmp !== 0) {
1033
- return cmp;
1034
- }
1035
-
1036
- cmp = mappingA.generatedLine - mappingB.generatedLine;
1037
- if (cmp !== 0) {
1038
- return cmp;
1039
- }
1040
-
1041
- return mappingA.name - mappingB.name;
1042
- }
1043
- exports.compareByOriginalPositions = compareByOriginalPositions;
1044
-
1045
- /**
1046
- * Comparator between two mappings with deflated source and name indices where
1047
- * the generated positions are compared.
1048
- *
1049
- * Optionally pass in `true` as `onlyCompareGenerated` to consider two
1050
- * mappings with the same generated line and column, but different
1051
- * source/name/original line and column the same. Useful when searching for a
1052
- * mapping with a stubbed out mapping.
1053
- */
1054
- function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
1055
- var cmp = mappingA.generatedLine - mappingB.generatedLine;
1056
- if (cmp !== 0) {
1057
- return cmp;
1058
- }
1059
-
1060
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
1061
- if (cmp !== 0 || onlyCompareGenerated) {
1062
- return cmp;
1063
- }
1064
-
1065
- cmp = mappingA.source - mappingB.source;
1066
- if (cmp !== 0) {
1067
- return cmp;
1068
- }
1069
-
1070
- cmp = mappingA.originalLine - mappingB.originalLine;
1071
- if (cmp !== 0) {
1072
- return cmp;
1073
- }
1074
-
1075
- cmp = mappingA.originalColumn - mappingB.originalColumn;
1076
- if (cmp !== 0) {
1077
- return cmp;
1078
- }
1079
-
1080
- return mappingA.name - mappingB.name;
1081
- }
1082
- exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
1083
-
1084
- function strcmp(aStr1, aStr2) {
1085
- if (aStr1 === aStr2) {
1086
- return 0;
1087
- }
1088
-
1089
- if (aStr1 > aStr2) {
1090
- return 1;
1091
- }
1092
-
1093
- return -1;
1094
- }
1095
-
1096
- /**
1097
- * Comparator between two mappings with inflated source and name strings where
1098
- * the generated positions are compared.
1099
- */
1100
- function compareByGeneratedPositionsInflated(mappingA, mappingB) {
1101
- var cmp = mappingA.generatedLine - mappingB.generatedLine;
1102
- if (cmp !== 0) {
1103
- return cmp;
1104
- }
1105
-
1106
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
1107
- if (cmp !== 0) {
1108
- return cmp;
1109
- }
1110
-
1111
- cmp = strcmp(mappingA.source, mappingB.source);
1112
- if (cmp !== 0) {
1113
- return cmp;
1114
- }
1115
-
1116
- cmp = mappingA.originalLine - mappingB.originalLine;
1117
- if (cmp !== 0) {
1118
- return cmp;
1119
- }
1120
-
1121
- cmp = mappingA.originalColumn - mappingB.originalColumn;
1122
- if (cmp !== 0) {
1123
- return cmp;
1124
- }
1125
-
1126
- return strcmp(mappingA.name, mappingB.name);
1127
- }
1128
- exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
1129
-
1130
-
1131
- /***/ }),
1132
- /* 5 */
1133
- /***/ (function(module, exports, __webpack_require__) {
1134
-
1135
- /* -*- Mode: js; js-indent-level: 2; -*- */
1136
- /*
1137
- * Copyright 2011 Mozilla Foundation and contributors
1138
- * Licensed under the New BSD license. See LICENSE or:
1139
- * http://opensource.org/licenses/BSD-3-Clause
1140
- */
1141
-
1142
- var util = __webpack_require__(4);
1143
- var has = Object.prototype.hasOwnProperty;
1144
- var hasNativeMap = typeof Map !== "undefined";
1145
-
1146
- /**
1147
- * A data structure which is a combination of an array and a set. Adding a new
1148
- * member is O(1), testing for membership is O(1), and finding the index of an
1149
- * element is O(1). Removing elements from the set is not supported. Only
1150
- * strings are supported for membership.
1151
- */
1152
- function ArraySet() {
1153
- this._array = [];
1154
- this._set = hasNativeMap ? new Map() : Object.create(null);
1155
- }
1156
-
1157
- /**
1158
- * Static method for creating ArraySet instances from an existing array.
1159
- */
1160
- ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
1161
- var set = new ArraySet();
1162
- for (var i = 0, len = aArray.length; i < len; i++) {
1163
- set.add(aArray[i], aAllowDuplicates);
1164
- }
1165
- return set;
1166
- };
1167
-
1168
- /**
1169
- * Return how many unique items are in this ArraySet. If duplicates have been
1170
- * added, than those do not count towards the size.
1171
- *
1172
- * @returns Number
1173
- */
1174
- ArraySet.prototype.size = function ArraySet_size() {
1175
- return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
1176
- };
1177
-
1178
- /**
1179
- * Add the given string to this set.
1180
- *
1181
- * @param String aStr
1182
- */
1183
- ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
1184
- var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
1185
- var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
1186
- var idx = this._array.length;
1187
- if (!isDuplicate || aAllowDuplicates) {
1188
- this._array.push(aStr);
1189
- }
1190
- if (!isDuplicate) {
1191
- if (hasNativeMap) {
1192
- this._set.set(aStr, idx);
1193
- } else {
1194
- this._set[sStr] = idx;
1195
- }
1196
- }
1197
- };
1198
-
1199
- /**
1200
- * Is the given string a member of this set?
1201
- *
1202
- * @param String aStr
1203
- */
1204
- ArraySet.prototype.has = function ArraySet_has(aStr) {
1205
- if (hasNativeMap) {
1206
- return this._set.has(aStr);
1207
- } else {
1208
- var sStr = util.toSetString(aStr);
1209
- return has.call(this._set, sStr);
1210
- }
1211
- };
1212
-
1213
- /**
1214
- * What is the index of the given string in the array?
1215
- *
1216
- * @param String aStr
1217
- */
1218
- ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
1219
- if (hasNativeMap) {
1220
- var idx = this._set.get(aStr);
1221
- if (idx >= 0) {
1222
- return idx;
1223
- }
1224
- } else {
1225
- var sStr = util.toSetString(aStr);
1226
- if (has.call(this._set, sStr)) {
1227
- return this._set[sStr];
1228
- }
1229
- }
1230
-
1231
- throw new Error('"' + aStr + '" is not in the set.');
1232
- };
1233
-
1234
- /**
1235
- * What is the element at the given index?
1236
- *
1237
- * @param Number aIdx
1238
- */
1239
- ArraySet.prototype.at = function ArraySet_at(aIdx) {
1240
- if (aIdx >= 0 && aIdx < this._array.length) {
1241
- return this._array[aIdx];
1242
- }
1243
- throw new Error('No element indexed by ' + aIdx);
1244
- };
1245
-
1246
- /**
1247
- * Returns the array representation of this set (which has the proper indices
1248
- * indicated by indexOf). Note that this is a copy of the internal array used
1249
- * for storing the members so that no one can mess with internal state.
1250
- */
1251
- ArraySet.prototype.toArray = function ArraySet_toArray() {
1252
- return this._array.slice();
1253
- };
1254
-
1255
- exports.ArraySet = ArraySet;
1256
-
1257
-
1258
- /***/ }),
1259
- /* 6 */
1260
- /***/ (function(module, exports, __webpack_require__) {
1261
-
1262
- /* -*- Mode: js; js-indent-level: 2; -*- */
1263
- /*
1264
- * Copyright 2014 Mozilla Foundation and contributors
1265
- * Licensed under the New BSD license. See LICENSE or:
1266
- * http://opensource.org/licenses/BSD-3-Clause
1267
- */
1268
-
1269
- var util = __webpack_require__(4);
1270
-
1271
- /**
1272
- * Determine whether mappingB is after mappingA with respect to generated
1273
- * position.
1274
- */
1275
- function generatedPositionAfter(mappingA, mappingB) {
1276
- // Optimized for most common case
1277
- var lineA = mappingA.generatedLine;
1278
- var lineB = mappingB.generatedLine;
1279
- var columnA = mappingA.generatedColumn;
1280
- var columnB = mappingB.generatedColumn;
1281
- return lineB > lineA || lineB == lineA && columnB >= columnA ||
1282
- util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
1283
- }
1284
-
1285
- /**
1286
- * A data structure to provide a sorted view of accumulated mappings in a
1287
- * performance conscious manner. It trades a neglibable overhead in general
1288
- * case for a large speedup in case of mappings being added in order.
1289
- */
1290
- function MappingList() {
1291
- this._array = [];
1292
- this._sorted = true;
1293
- // Serves as infimum
1294
- this._last = {generatedLine: -1, generatedColumn: 0};
1295
- }
1296
-
1297
- /**
1298
- * Iterate through internal items. This method takes the same arguments that
1299
- * `Array.prototype.forEach` takes.
1300
- *
1301
- * NOTE: The order of the mappings is NOT guaranteed.
1302
- */
1303
- MappingList.prototype.unsortedForEach =
1304
- function MappingList_forEach(aCallback, aThisArg) {
1305
- this._array.forEach(aCallback, aThisArg);
1306
- };
1307
-
1308
- /**
1309
- * Add the given source mapping.
1310
- *
1311
- * @param Object aMapping
1312
- */
1313
- MappingList.prototype.add = function MappingList_add(aMapping) {
1314
- if (generatedPositionAfter(this._last, aMapping)) {
1315
- this._last = aMapping;
1316
- this._array.push(aMapping);
1317
- } else {
1318
- this._sorted = false;
1319
- this._array.push(aMapping);
1320
- }
1321
- };
1322
-
1323
- /**
1324
- * Returns the flat, sorted array of mappings. The mappings are sorted by
1325
- * generated position.
1326
- *
1327
- * WARNING: This method returns internal data without copying, for
1328
- * performance. The return value must NOT be mutated, and should be treated as
1329
- * an immutable borrow. If you want to take ownership, you must make your own
1330
- * copy.
1331
- */
1332
- MappingList.prototype.toArray = function MappingList_toArray() {
1333
- if (!this._sorted) {
1334
- this._array.sort(util.compareByGeneratedPositionsInflated);
1335
- this._sorted = true;
1336
- }
1337
- return this._array;
1338
- };
1339
-
1340
- exports.MappingList = MappingList;
1341
-
1342
-
1343
- /***/ }),
1344
- /* 7 */
1345
- /***/ (function(module, exports, __webpack_require__) {
1346
-
1347
- /* -*- Mode: js; js-indent-level: 2; -*- */
1348
- /*
1349
- * Copyright 2011 Mozilla Foundation and contributors
1350
- * Licensed under the New BSD license. See LICENSE or:
1351
- * http://opensource.org/licenses/BSD-3-Clause
1352
- */
1353
-
1354
- var util = __webpack_require__(4);
1355
- var binarySearch = __webpack_require__(8);
1356
- var ArraySet = __webpack_require__(5).ArraySet;
1357
- var base64VLQ = __webpack_require__(2);
1358
- var quickSort = __webpack_require__(9).quickSort;
1359
-
1360
- function SourceMapConsumer(aSourceMap) {
1361
- var sourceMap = aSourceMap;
1362
- if (typeof aSourceMap === 'string') {
1363
- sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
1364
- }
1365
-
1366
- return sourceMap.sections != null
1367
- ? new IndexedSourceMapConsumer(sourceMap)
1368
- : new BasicSourceMapConsumer(sourceMap);
1369
- }
1370
-
1371
- SourceMapConsumer.fromSourceMap = function(aSourceMap) {
1372
- return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
1373
- }
1374
-
1375
- /**
1376
- * The version of the source mapping spec that we are consuming.
1377
- */
1378
- SourceMapConsumer.prototype._version = 3;
1379
-
1380
- // `__generatedMappings` and `__originalMappings` are arrays that hold the
1381
- // parsed mapping coordinates from the source map's "mappings" attribute. They
1382
- // are lazily instantiated, accessed via the `_generatedMappings` and
1383
- // `_originalMappings` getters respectively, and we only parse the mappings
1384
- // and create these arrays once queried for a source location. We jump through
1385
- // these hoops because there can be many thousands of mappings, and parsing
1386
- // them is expensive, so we only want to do it if we must.
1387
- //
1388
- // Each object in the arrays is of the form:
1389
- //
1390
- // {
1391
- // generatedLine: The line number in the generated code,
1392
- // generatedColumn: The column number in the generated code,
1393
- // source: The path to the original source file that generated this
1394
- // chunk of code,
1395
- // originalLine: The line number in the original source that
1396
- // corresponds to this chunk of generated code,
1397
- // originalColumn: The column number in the original source that
1398
- // corresponds to this chunk of generated code,
1399
- // name: The name of the original symbol which generated this chunk of
1400
- // code.
1401
- // }
1402
- //
1403
- // All properties except for `generatedLine` and `generatedColumn` can be
1404
- // `null`.
1405
- //
1406
- // `_generatedMappings` is ordered by the generated positions.
1407
- //
1408
- // `_originalMappings` is ordered by the original positions.
1409
-
1410
- SourceMapConsumer.prototype.__generatedMappings = null;
1411
- Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
1412
- get: function () {
1413
- if (!this.__generatedMappings) {
1414
- this._parseMappings(this._mappings, this.sourceRoot);
1415
- }
1416
-
1417
- return this.__generatedMappings;
1418
- }
1419
- });
1420
-
1421
- SourceMapConsumer.prototype.__originalMappings = null;
1422
- Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
1423
- get: function () {
1424
- if (!this.__originalMappings) {
1425
- this._parseMappings(this._mappings, this.sourceRoot);
1426
- }
1427
-
1428
- return this.__originalMappings;
1429
- }
1430
- });
1431
-
1432
- SourceMapConsumer.prototype._charIsMappingSeparator =
1433
- function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
1434
- var c = aStr.charAt(index);
1435
- return c === ";" || c === ",";
1436
- };
1437
-
1438
- /**
1439
- * Parse the mappings in a string in to a data structure which we can easily
1440
- * query (the ordered arrays in the `this.__generatedMappings` and
1441
- * `this.__originalMappings` properties).
1442
- */
1443
- SourceMapConsumer.prototype._parseMappings =
1444
- function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
1445
- throw new Error("Subclasses must implement _parseMappings");
1446
- };
1447
-
1448
- SourceMapConsumer.GENERATED_ORDER = 1;
1449
- SourceMapConsumer.ORIGINAL_ORDER = 2;
1450
-
1451
- SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
1452
- SourceMapConsumer.LEAST_UPPER_BOUND = 2;
1453
-
1454
- /**
1455
- * Iterate over each mapping between an original source/line/column and a
1456
- * generated line/column in this source map.
1457
- *
1458
- * @param Function aCallback
1459
- * The function that is called with each mapping.
1460
- * @param Object aContext
1461
- * Optional. If specified, this object will be the value of `this` every
1462
- * time that `aCallback` is called.
1463
- * @param aOrder
1464
- * Either `SourceMapConsumer.GENERATED_ORDER` or
1465
- * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
1466
- * iterate over the mappings sorted by the generated file's line/column
1467
- * order or the original's source/line/column order, respectively. Defaults to
1468
- * `SourceMapConsumer.GENERATED_ORDER`.
1469
- */
1470
- SourceMapConsumer.prototype.eachMapping =
1471
- function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
1472
- var context = aContext || null;
1473
- var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
1474
-
1475
- var mappings;
1476
- switch (order) {
1477
- case SourceMapConsumer.GENERATED_ORDER:
1478
- mappings = this._generatedMappings;
1479
- break;
1480
- case SourceMapConsumer.ORIGINAL_ORDER:
1481
- mappings = this._originalMappings;
1482
- break;
1483
- default:
1484
- throw new Error("Unknown order of iteration.");
1485
- }
1486
-
1487
- var sourceRoot = this.sourceRoot;
1488
- mappings.map(function (mapping) {
1489
- var source = mapping.source === null ? null : this._sources.at(mapping.source);
1490
- if (source != null && sourceRoot != null) {
1491
- source = util.join(sourceRoot, source);
1492
- }
1493
- return {
1494
- source: source,
1495
- generatedLine: mapping.generatedLine,
1496
- generatedColumn: mapping.generatedColumn,
1497
- originalLine: mapping.originalLine,
1498
- originalColumn: mapping.originalColumn,
1499
- name: mapping.name === null ? null : this._names.at(mapping.name)
1500
- };
1501
- }, this).forEach(aCallback, context);
1502
- };
1503
-
1504
- /**
1505
- * Returns all generated line and column information for the original source,
1506
- * line, and column provided. If no column is provided, returns all mappings
1507
- * corresponding to a either the line we are searching for or the next
1508
- * closest line that has any mappings. Otherwise, returns all mappings
1509
- * corresponding to the given line and either the column we are searching for
1510
- * or the next closest column that has any offsets.
1511
- *
1512
- * The only argument is an object with the following properties:
1513
- *
1514
- * - source: The filename of the original source.
1515
- * - line: The line number in the original source.
1516
- * - column: Optional. the column number in the original source.
1517
- *
1518
- * and an array of objects is returned, each with the following properties:
1519
- *
1520
- * - line: The line number in the generated source, or null.
1521
- * - column: The column number in the generated source, or null.
1522
- */
1523
- SourceMapConsumer.prototype.allGeneratedPositionsFor =
1524
- function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
1525
- var line = util.getArg(aArgs, 'line');
1526
-
1527
- // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
1528
- // returns the index of the closest mapping less than the needle. By
1529
- // setting needle.originalColumn to 0, we thus find the last mapping for
1530
- // the given line, provided such a mapping exists.
1531
- var needle = {
1532
- source: util.getArg(aArgs, 'source'),
1533
- originalLine: line,
1534
- originalColumn: util.getArg(aArgs, 'column', 0)
1535
- };
1536
-
1537
- if (this.sourceRoot != null) {
1538
- needle.source = util.relative(this.sourceRoot, needle.source);
1539
- }
1540
- if (!this._sources.has(needle.source)) {
1541
- return [];
1542
- }
1543
- needle.source = this._sources.indexOf(needle.source);
1544
-
1545
- var mappings = [];
1546
-
1547
- var index = this._findMapping(needle,
1548
- this._originalMappings,
1549
- "originalLine",
1550
- "originalColumn",
1551
- util.compareByOriginalPositions,
1552
- binarySearch.LEAST_UPPER_BOUND);
1553
- if (index >= 0) {
1554
- var mapping = this._originalMappings[index];
1555
-
1556
- if (aArgs.column === undefined) {
1557
- var originalLine = mapping.originalLine;
1558
-
1559
- // Iterate until either we run out of mappings, or we run into
1560
- // a mapping for a different line than the one we found. Since
1561
- // mappings are sorted, this is guaranteed to find all mappings for
1562
- // the line we found.
1563
- while (mapping && mapping.originalLine === originalLine) {
1564
- mappings.push({
1565
- line: util.getArg(mapping, 'generatedLine', null),
1566
- column: util.getArg(mapping, 'generatedColumn', null),
1567
- lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
1568
- });
1569
-
1570
- mapping = this._originalMappings[++index];
1571
- }
1572
- } else {
1573
- var originalColumn = mapping.originalColumn;
1574
-
1575
- // Iterate until either we run out of mappings, or we run into
1576
- // a mapping for a different line than the one we were searching for.
1577
- // Since mappings are sorted, this is guaranteed to find all mappings for
1578
- // the line we are searching for.
1579
- while (mapping &&
1580
- mapping.originalLine === line &&
1581
- mapping.originalColumn == originalColumn) {
1582
- mappings.push({
1583
- line: util.getArg(mapping, 'generatedLine', null),
1584
- column: util.getArg(mapping, 'generatedColumn', null),
1585
- lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
1586
- });
1587
-
1588
- mapping = this._originalMappings[++index];
1589
- }
1590
- }
1591
- }
1592
-
1593
- return mappings;
1594
- };
1595
-
1596
- exports.SourceMapConsumer = SourceMapConsumer;
1597
-
1598
- /**
1599
- * A BasicSourceMapConsumer instance represents a parsed source map which we can
1600
- * query for information about the original file positions by giving it a file
1601
- * position in the generated source.
1602
- *
1603
- * The only parameter is the raw source map (either as a JSON string, or
1604
- * already parsed to an object). According to the spec, source maps have the
1605
- * following attributes:
1606
- *
1607
- * - version: Which version of the source map spec this map is following.
1608
- * - sources: An array of URLs to the original source files.
1609
- * - names: An array of identifiers which can be referrenced by individual mappings.
1610
- * - sourceRoot: Optional. The URL root from which all sources are relative.
1611
- * - sourcesContent: Optional. An array of contents of the original source files.
1612
- * - mappings: A string of base64 VLQs which contain the actual mappings.
1613
- * - file: Optional. The generated file this source map is associated with.
1614
- *
1615
- * Here is an example source map, taken from the source map spec[0]:
1616
- *
1617
- * {
1618
- * version : 3,
1619
- * file: "out.js",
1620
- * sourceRoot : "",
1621
- * sources: ["foo.js", "bar.js"],
1622
- * names: ["src", "maps", "are", "fun"],
1623
- * mappings: "AA,AB;;ABCDE;"
1624
- * }
1625
- *
1626
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
1627
- */
1628
- function BasicSourceMapConsumer(aSourceMap) {
1629
- var sourceMap = aSourceMap;
1630
- if (typeof aSourceMap === 'string') {
1631
- sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
1632
- }
1633
-
1634
- var version = util.getArg(sourceMap, 'version');
1635
- var sources = util.getArg(sourceMap, 'sources');
1636
- // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
1637
- // requires the array) to play nice here.
1638
- var names = util.getArg(sourceMap, 'names', []);
1639
- var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
1640
- var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
1641
- var mappings = util.getArg(sourceMap, 'mappings');
1642
- var file = util.getArg(sourceMap, 'file', null);
1643
-
1644
- // Once again, Sass deviates from the spec and supplies the version as a
1645
- // string rather than a number, so we use loose equality checking here.
1646
- if (version != this._version) {
1647
- throw new Error('Unsupported version: ' + version);
1648
- }
1649
-
1650
- sources = sources
1651
- .map(String)
1652
- // Some source maps produce relative source paths like "./foo.js" instead of
1653
- // "foo.js". Normalize these first so that future comparisons will succeed.
1654
- // See bugzil.la/1090768.
1655
- .map(util.normalize)
1656
- // Always ensure that absolute sources are internally stored relative to
1657
- // the source root, if the source root is absolute. Not doing this would
1658
- // be particularly problematic when the source root is a prefix of the
1659
- // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
1660
- .map(function (source) {
1661
- return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
1662
- ? util.relative(sourceRoot, source)
1663
- : source;
1664
- });
1665
-
1666
- // Pass `true` below to allow duplicate names and sources. While source maps
1667
- // are intended to be compressed and deduplicated, the TypeScript compiler
1668
- // sometimes generates source maps with duplicates in them. See Github issue
1669
- // #72 and bugzil.la/889492.
1670
- this._names = ArraySet.fromArray(names.map(String), true);
1671
- this._sources = ArraySet.fromArray(sources, true);
1672
-
1673
- this.sourceRoot = sourceRoot;
1674
- this.sourcesContent = sourcesContent;
1675
- this._mappings = mappings;
1676
- this.file = file;
1677
- }
1678
-
1679
- BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
1680
- BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
1681
-
1682
- /**
1683
- * Create a BasicSourceMapConsumer from a SourceMapGenerator.
1684
- *
1685
- * @param SourceMapGenerator aSourceMap
1686
- * The source map that will be consumed.
1687
- * @returns BasicSourceMapConsumer
1688
- */
1689
- BasicSourceMapConsumer.fromSourceMap =
1690
- function SourceMapConsumer_fromSourceMap(aSourceMap) {
1691
- var smc = Object.create(BasicSourceMapConsumer.prototype);
1692
-
1693
- var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
1694
- var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
1695
- smc.sourceRoot = aSourceMap._sourceRoot;
1696
- smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
1697
- smc.sourceRoot);
1698
- smc.file = aSourceMap._file;
1699
-
1700
- // Because we are modifying the entries (by converting string sources and
1701
- // names to indices into the sources and names ArraySets), we have to make
1702
- // a copy of the entry or else bad things happen. Shared mutable state
1703
- // strikes again! See github issue #191.
1704
-
1705
- var generatedMappings = aSourceMap._mappings.toArray().slice();
1706
- var destGeneratedMappings = smc.__generatedMappings = [];
1707
- var destOriginalMappings = smc.__originalMappings = [];
1708
-
1709
- for (var i = 0, length = generatedMappings.length; i < length; i++) {
1710
- var srcMapping = generatedMappings[i];
1711
- var destMapping = new Mapping;
1712
- destMapping.generatedLine = srcMapping.generatedLine;
1713
- destMapping.generatedColumn = srcMapping.generatedColumn;
1714
-
1715
- if (srcMapping.source) {
1716
- destMapping.source = sources.indexOf(srcMapping.source);
1717
- destMapping.originalLine = srcMapping.originalLine;
1718
- destMapping.originalColumn = srcMapping.originalColumn;
1719
-
1720
- if (srcMapping.name) {
1721
- destMapping.name = names.indexOf(srcMapping.name);
1722
- }
1723
-
1724
- destOriginalMappings.push(destMapping);
1725
- }
1726
-
1727
- destGeneratedMappings.push(destMapping);
1728
- }
1729
-
1730
- quickSort(smc.__originalMappings, util.compareByOriginalPositions);
1731
-
1732
- return smc;
1733
- };
1734
-
1735
- /**
1736
- * The version of the source mapping spec that we are consuming.
1737
- */
1738
- BasicSourceMapConsumer.prototype._version = 3;
1739
-
1740
- /**
1741
- * The list of original sources.
1742
- */
1743
- Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
1744
- get: function () {
1745
- return this._sources.toArray().map(function (s) {
1746
- return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
1747
- }, this);
1748
- }
1749
- });
1750
-
1751
- /**
1752
- * Provide the JIT with a nice shape / hidden class.
1753
- */
1754
- function Mapping() {
1755
- this.generatedLine = 0;
1756
- this.generatedColumn = 0;
1757
- this.source = null;
1758
- this.originalLine = null;
1759
- this.originalColumn = null;
1760
- this.name = null;
1761
- }
1762
-
1763
- /**
1764
- * Parse the mappings in a string in to a data structure which we can easily
1765
- * query (the ordered arrays in the `this.__generatedMappings` and
1766
- * `this.__originalMappings` properties).
1767
- */
1768
- BasicSourceMapConsumer.prototype._parseMappings =
1769
- function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
1770
- var generatedLine = 1;
1771
- var previousGeneratedColumn = 0;
1772
- var previousOriginalLine = 0;
1773
- var previousOriginalColumn = 0;
1774
- var previousSource = 0;
1775
- var previousName = 0;
1776
- var length = aStr.length;
1777
- var index = 0;
1778
- var cachedSegments = {};
1779
- var temp = {};
1780
- var originalMappings = [];
1781
- var generatedMappings = [];
1782
- var mapping, str, segment, end, value;
1783
-
1784
- while (index < length) {
1785
- if (aStr.charAt(index) === ';') {
1786
- generatedLine++;
1787
- index++;
1788
- previousGeneratedColumn = 0;
1789
- }
1790
- else if (aStr.charAt(index) === ',') {
1791
- index++;
1792
- }
1793
- else {
1794
- mapping = new Mapping();
1795
- mapping.generatedLine = generatedLine;
1796
-
1797
- // Because each offset is encoded relative to the previous one,
1798
- // many segments often have the same encoding. We can exploit this
1799
- // fact by caching the parsed variable length fields of each segment,
1800
- // allowing us to avoid a second parse if we encounter the same
1801
- // segment again.
1802
- for (end = index; end < length; end++) {
1803
- if (this._charIsMappingSeparator(aStr, end)) {
1804
- break;
1805
- }
1806
- }
1807
- str = aStr.slice(index, end);
1808
-
1809
- segment = cachedSegments[str];
1810
- if (segment) {
1811
- index += str.length;
1812
- } else {
1813
- segment = [];
1814
- while (index < end) {
1815
- base64VLQ.decode(aStr, index, temp);
1816
- value = temp.value;
1817
- index = temp.rest;
1818
- segment.push(value);
1819
- }
1820
-
1821
- if (segment.length === 2) {
1822
- throw new Error('Found a source, but no line and column');
1823
- }
1824
-
1825
- if (segment.length === 3) {
1826
- throw new Error('Found a source and line, but no column');
1827
- }
1828
-
1829
- cachedSegments[str] = segment;
1830
- }
1831
-
1832
- // Generated column.
1833
- mapping.generatedColumn = previousGeneratedColumn + segment[0];
1834
- previousGeneratedColumn = mapping.generatedColumn;
1835
-
1836
- if (segment.length > 1) {
1837
- // Original source.
1838
- mapping.source = previousSource + segment[1];
1839
- previousSource += segment[1];
1840
-
1841
- // Original line.
1842
- mapping.originalLine = previousOriginalLine + segment[2];
1843
- previousOriginalLine = mapping.originalLine;
1844
- // Lines are stored 0-based
1845
- mapping.originalLine += 1;
1846
-
1847
- // Original column.
1848
- mapping.originalColumn = previousOriginalColumn + segment[3];
1849
- previousOriginalColumn = mapping.originalColumn;
1850
-
1851
- if (segment.length > 4) {
1852
- // Original name.
1853
- mapping.name = previousName + segment[4];
1854
- previousName += segment[4];
1855
- }
1856
- }
1857
-
1858
- generatedMappings.push(mapping);
1859
- if (typeof mapping.originalLine === 'number') {
1860
- originalMappings.push(mapping);
1861
- }
1862
- }
1863
- }
1864
-
1865
- quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
1866
- this.__generatedMappings = generatedMappings;
1867
-
1868
- quickSort(originalMappings, util.compareByOriginalPositions);
1869
- this.__originalMappings = originalMappings;
1870
- };
1871
-
1872
- /**
1873
- * Find the mapping that best matches the hypothetical "needle" mapping that
1874
- * we are searching for in the given "haystack" of mappings.
1875
- */
1876
- BasicSourceMapConsumer.prototype._findMapping =
1877
- function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
1878
- aColumnName, aComparator, aBias) {
1879
- // To return the position we are searching for, we must first find the
1880
- // mapping for the given position and then return the opposite position it
1881
- // points to. Because the mappings are sorted, we can use binary search to
1882
- // find the best mapping.
1883
-
1884
- if (aNeedle[aLineName] <= 0) {
1885
- throw new TypeError('Line must be greater than or equal to 1, got '
1886
- + aNeedle[aLineName]);
1887
- }
1888
- if (aNeedle[aColumnName] < 0) {
1889
- throw new TypeError('Column must be greater than or equal to 0, got '
1890
- + aNeedle[aColumnName]);
1891
- }
1892
-
1893
- return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
1894
- };
1895
-
1896
- /**
1897
- * Compute the last column for each generated mapping. The last column is
1898
- * inclusive.
1899
- */
1900
- BasicSourceMapConsumer.prototype.computeColumnSpans =
1901
- function SourceMapConsumer_computeColumnSpans() {
1902
- for (var index = 0; index < this._generatedMappings.length; ++index) {
1903
- var mapping = this._generatedMappings[index];
1904
-
1905
- // Mappings do not contain a field for the last generated columnt. We
1906
- // can come up with an optimistic estimate, however, by assuming that
1907
- // mappings are contiguous (i.e. given two consecutive mappings, the
1908
- // first mapping ends where the second one starts).
1909
- if (index + 1 < this._generatedMappings.length) {
1910
- var nextMapping = this._generatedMappings[index + 1];
1911
-
1912
- if (mapping.generatedLine === nextMapping.generatedLine) {
1913
- mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
1914
- continue;
1915
- }
1916
- }
1917
-
1918
- // The last mapping for each line spans the entire line.
1919
- mapping.lastGeneratedColumn = Infinity;
1920
- }
1921
- };
1922
-
1923
- /**
1924
- * Returns the original source, line, and column information for the generated
1925
- * source's line and column positions provided. The only argument is an object
1926
- * with the following properties:
1927
- *
1928
- * - line: The line number in the generated source.
1929
- * - column: The column number in the generated source.
1930
- * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
1931
- * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
1932
- * closest element that is smaller than or greater than the one we are
1933
- * searching for, respectively, if the exact element cannot be found.
1934
- * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
1935
- *
1936
- * and an object is returned with the following properties:
1937
- *
1938
- * - source: The original source file, or null.
1939
- * - line: The line number in the original source, or null.
1940
- * - column: The column number in the original source, or null.
1941
- * - name: The original identifier, or null.
1942
- */
1943
- BasicSourceMapConsumer.prototype.originalPositionFor =
1944
- function SourceMapConsumer_originalPositionFor(aArgs) {
1945
- var needle = {
1946
- generatedLine: util.getArg(aArgs, 'line'),
1947
- generatedColumn: util.getArg(aArgs, 'column')
1948
- };
1949
-
1950
- var index = this._findMapping(
1951
- needle,
1952
- this._generatedMappings,
1953
- "generatedLine",
1954
- "generatedColumn",
1955
- util.compareByGeneratedPositionsDeflated,
1956
- util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
1957
- );
1958
-
1959
- if (index >= 0) {
1960
- var mapping = this._generatedMappings[index];
1961
-
1962
- if (mapping.generatedLine === needle.generatedLine) {
1963
- var source = util.getArg(mapping, 'source', null);
1964
- if (source !== null) {
1965
- source = this._sources.at(source);
1966
- if (this.sourceRoot != null) {
1967
- source = util.join(this.sourceRoot, source);
1968
- }
1969
- }
1970
- var name = util.getArg(mapping, 'name', null);
1971
- if (name !== null) {
1972
- name = this._names.at(name);
1973
- }
1974
- return {
1975
- source: source,
1976
- line: util.getArg(mapping, 'originalLine', null),
1977
- column: util.getArg(mapping, 'originalColumn', null),
1978
- name: name
1979
- };
1980
- }
1981
- }
1982
-
1983
- return {
1984
- source: null,
1985
- line: null,
1986
- column: null,
1987
- name: null
1988
- };
1989
- };
1990
-
1991
- /**
1992
- * Return true if we have the source content for every source in the source
1993
- * map, false otherwise.
1994
- */
1995
- BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
1996
- function BasicSourceMapConsumer_hasContentsOfAllSources() {
1997
- if (!this.sourcesContent) {
1998
- return false;
1999
- }
2000
- return this.sourcesContent.length >= this._sources.size() &&
2001
- !this.sourcesContent.some(function (sc) { return sc == null; });
2002
- };
2003
-
2004
- /**
2005
- * Returns the original source content. The only argument is the url of the
2006
- * original source file. Returns null if no original source content is
2007
- * available.
2008
- */
2009
- BasicSourceMapConsumer.prototype.sourceContentFor =
2010
- function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
2011
- if (!this.sourcesContent) {
2012
- return null;
2013
- }
2014
-
2015
- if (this.sourceRoot != null) {
2016
- aSource = util.relative(this.sourceRoot, aSource);
2017
- }
2018
-
2019
- if (this._sources.has(aSource)) {
2020
- return this.sourcesContent[this._sources.indexOf(aSource)];
2021
- }
2022
-
2023
- var url;
2024
- if (this.sourceRoot != null
2025
- && (url = util.urlParse(this.sourceRoot))) {
2026
- // XXX: file:// URIs and absolute paths lead to unexpected behavior for
2027
- // many users. We can help them out when they expect file:// URIs to
2028
- // behave like it would if they were running a local HTTP server. See
2029
- // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
2030
- var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
2031
- if (url.scheme == "file"
2032
- && this._sources.has(fileUriAbsPath)) {
2033
- return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
2034
- }
2035
-
2036
- if ((!url.path || url.path == "/")
2037
- && this._sources.has("/" + aSource)) {
2038
- return this.sourcesContent[this._sources.indexOf("/" + aSource)];
2039
- }
2040
- }
2041
-
2042
- // This function is used recursively from
2043
- // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
2044
- // don't want to throw if we can't find the source - we just want to
2045
- // return null, so we provide a flag to exit gracefully.
2046
- if (nullOnMissing) {
2047
- return null;
2048
- }
2049
- else {
2050
- throw new Error('"' + aSource + '" is not in the SourceMap.');
2051
- }
2052
- };
2053
-
2054
- /**
2055
- * Returns the generated line and column information for the original source,
2056
- * line, and column positions provided. The only argument is an object with
2057
- * the following properties:
2058
- *
2059
- * - source: The filename of the original source.
2060
- * - line: The line number in the original source.
2061
- * - column: The column number in the original source.
2062
- * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
2063
- * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
2064
- * closest element that is smaller than or greater than the one we are
2065
- * searching for, respectively, if the exact element cannot be found.
2066
- * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
2067
- *
2068
- * and an object is returned with the following properties:
2069
- *
2070
- * - line: The line number in the generated source, or null.
2071
- * - column: The column number in the generated source, or null.
2072
- */
2073
- BasicSourceMapConsumer.prototype.generatedPositionFor =
2074
- function SourceMapConsumer_generatedPositionFor(aArgs) {
2075
- var source = util.getArg(aArgs, 'source');
2076
- if (this.sourceRoot != null) {
2077
- source = util.relative(this.sourceRoot, source);
2078
- }
2079
- if (!this._sources.has(source)) {
2080
- return {
2081
- line: null,
2082
- column: null,
2083
- lastColumn: null
2084
- };
2085
- }
2086
- source = this._sources.indexOf(source);
2087
-
2088
- var needle = {
2089
- source: source,
2090
- originalLine: util.getArg(aArgs, 'line'),
2091
- originalColumn: util.getArg(aArgs, 'column')
2092
- };
2093
-
2094
- var index = this._findMapping(
2095
- needle,
2096
- this._originalMappings,
2097
- "originalLine",
2098
- "originalColumn",
2099
- util.compareByOriginalPositions,
2100
- util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
2101
- );
2102
-
2103
- if (index >= 0) {
2104
- var mapping = this._originalMappings[index];
2105
-
2106
- if (mapping.source === needle.source) {
2107
- return {
2108
- line: util.getArg(mapping, 'generatedLine', null),
2109
- column: util.getArg(mapping, 'generatedColumn', null),
2110
- lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
2111
- };
2112
- }
2113
- }
2114
-
2115
- return {
2116
- line: null,
2117
- column: null,
2118
- lastColumn: null
2119
- };
2120
- };
2121
-
2122
- exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
2123
-
2124
- /**
2125
- * An IndexedSourceMapConsumer instance represents a parsed source map which
2126
- * we can query for information. It differs from BasicSourceMapConsumer in
2127
- * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
2128
- * input.
2129
- *
2130
- * The only parameter is a raw source map (either as a JSON string, or already
2131
- * parsed to an object). According to the spec for indexed source maps, they
2132
- * have the following attributes:
2133
- *
2134
- * - version: Which version of the source map spec this map is following.
2135
- * - file: Optional. The generated file this source map is associated with.
2136
- * - sections: A list of section definitions.
2137
- *
2138
- * Each value under the "sections" field has two fields:
2139
- * - offset: The offset into the original specified at which this section
2140
- * begins to apply, defined as an object with a "line" and "column"
2141
- * field.
2142
- * - map: A source map definition. This source map could also be indexed,
2143
- * but doesn't have to be.
2144
- *
2145
- * Instead of the "map" field, it's also possible to have a "url" field
2146
- * specifying a URL to retrieve a source map from, but that's currently
2147
- * unsupported.
2148
- *
2149
- * Here's an example source map, taken from the source map spec[0], but
2150
- * modified to omit a section which uses the "url" field.
2151
- *
2152
- * {
2153
- * version : 3,
2154
- * file: "app.js",
2155
- * sections: [{
2156
- * offset: {line:100, column:10},
2157
- * map: {
2158
- * version : 3,
2159
- * file: "section.js",
2160
- * sources: ["foo.js", "bar.js"],
2161
- * names: ["src", "maps", "are", "fun"],
2162
- * mappings: "AAAA,E;;ABCDE;"
2163
- * }
2164
- * }],
2165
- * }
2166
- *
2167
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
2168
- */
2169
- function IndexedSourceMapConsumer(aSourceMap) {
2170
- var sourceMap = aSourceMap;
2171
- if (typeof aSourceMap === 'string') {
2172
- sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
2173
- }
2174
-
2175
- var version = util.getArg(sourceMap, 'version');
2176
- var sections = util.getArg(sourceMap, 'sections');
2177
-
2178
- if (version != this._version) {
2179
- throw new Error('Unsupported version: ' + version);
2180
- }
2181
-
2182
- this._sources = new ArraySet();
2183
- this._names = new ArraySet();
2184
-
2185
- var lastOffset = {
2186
- line: -1,
2187
- column: 0
2188
- };
2189
- this._sections = sections.map(function (s) {
2190
- if (s.url) {
2191
- // The url field will require support for asynchronicity.
2192
- // See https://github.com/mozilla/source-map/issues/16
2193
- throw new Error('Support for url field in sections not implemented.');
2194
- }
2195
- var offset = util.getArg(s, 'offset');
2196
- var offsetLine = util.getArg(offset, 'line');
2197
- var offsetColumn = util.getArg(offset, 'column');
2198
-
2199
- if (offsetLine < lastOffset.line ||
2200
- (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
2201
- throw new Error('Section offsets must be ordered and non-overlapping.');
2202
- }
2203
- lastOffset = offset;
2204
-
2205
- return {
2206
- generatedOffset: {
2207
- // The offset fields are 0-based, but we use 1-based indices when
2208
- // encoding/decoding from VLQ.
2209
- generatedLine: offsetLine + 1,
2210
- generatedColumn: offsetColumn + 1
2211
- },
2212
- consumer: new SourceMapConsumer(util.getArg(s, 'map'))
2213
- }
2214
- });
2215
- }
2216
-
2217
- IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
2218
- IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
2219
-
2220
- /**
2221
- * The version of the source mapping spec that we are consuming.
2222
- */
2223
- IndexedSourceMapConsumer.prototype._version = 3;
2224
-
2225
- /**
2226
- * The list of original sources.
2227
- */
2228
- Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
2229
- get: function () {
2230
- var sources = [];
2231
- for (var i = 0; i < this._sections.length; i++) {
2232
- for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
2233
- sources.push(this._sections[i].consumer.sources[j]);
2234
- }
2235
- }
2236
- return sources;
2237
- }
2238
- });
2239
-
2240
- /**
2241
- * Returns the original source, line, and column information for the generated
2242
- * source's line and column positions provided. The only argument is an object
2243
- * with the following properties:
2244
- *
2245
- * - line: The line number in the generated source.
2246
- * - column: The column number in the generated source.
2247
- *
2248
- * and an object is returned with the following properties:
2249
- *
2250
- * - source: The original source file, or null.
2251
- * - line: The line number in the original source, or null.
2252
- * - column: The column number in the original source, or null.
2253
- * - name: The original identifier, or null.
2254
- */
2255
- IndexedSourceMapConsumer.prototype.originalPositionFor =
2256
- function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
2257
- var needle = {
2258
- generatedLine: util.getArg(aArgs, 'line'),
2259
- generatedColumn: util.getArg(aArgs, 'column')
2260
- };
2261
-
2262
- // Find the section containing the generated position we're trying to map
2263
- // to an original position.
2264
- var sectionIndex = binarySearch.search(needle, this._sections,
2265
- function(needle, section) {
2266
- var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
2267
- if (cmp) {
2268
- return cmp;
2269
- }
2270
-
2271
- return (needle.generatedColumn -
2272
- section.generatedOffset.generatedColumn);
2273
- });
2274
- var section = this._sections[sectionIndex];
2275
-
2276
- if (!section) {
2277
- return {
2278
- source: null,
2279
- line: null,
2280
- column: null,
2281
- name: null
2282
- };
2283
- }
2284
-
2285
- return section.consumer.originalPositionFor({
2286
- line: needle.generatedLine -
2287
- (section.generatedOffset.generatedLine - 1),
2288
- column: needle.generatedColumn -
2289
- (section.generatedOffset.generatedLine === needle.generatedLine
2290
- ? section.generatedOffset.generatedColumn - 1
2291
- : 0),
2292
- bias: aArgs.bias
2293
- });
2294
- };
2295
-
2296
- /**
2297
- * Return true if we have the source content for every source in the source
2298
- * map, false otherwise.
2299
- */
2300
- IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
2301
- function IndexedSourceMapConsumer_hasContentsOfAllSources() {
2302
- return this._sections.every(function (s) {
2303
- return s.consumer.hasContentsOfAllSources();
2304
- });
2305
- };
2306
-
2307
- /**
2308
- * Returns the original source content. The only argument is the url of the
2309
- * original source file. Returns null if no original source content is
2310
- * available.
2311
- */
2312
- IndexedSourceMapConsumer.prototype.sourceContentFor =
2313
- function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
2314
- for (var i = 0; i < this._sections.length; i++) {
2315
- var section = this._sections[i];
2316
-
2317
- var content = section.consumer.sourceContentFor(aSource, true);
2318
- if (content) {
2319
- return content;
2320
- }
2321
- }
2322
- if (nullOnMissing) {
2323
- return null;
2324
- }
2325
- else {
2326
- throw new Error('"' + aSource + '" is not in the SourceMap.');
2327
- }
2328
- };
2329
-
2330
- /**
2331
- * Returns the generated line and column information for the original source,
2332
- * line, and column positions provided. The only argument is an object with
2333
- * the following properties:
2334
- *
2335
- * - source: The filename of the original source.
2336
- * - line: The line number in the original source.
2337
- * - column: The column number in the original source.
2338
- *
2339
- * and an object is returned with the following properties:
2340
- *
2341
- * - line: The line number in the generated source, or null.
2342
- * - column: The column number in the generated source, or null.
2343
- */
2344
- IndexedSourceMapConsumer.prototype.generatedPositionFor =
2345
- function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
2346
- for (var i = 0; i < this._sections.length; i++) {
2347
- var section = this._sections[i];
2348
-
2349
- // Only consider this section if the requested source is in the list of
2350
- // sources of the consumer.
2351
- if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
2352
- continue;
2353
- }
2354
- var generatedPosition = section.consumer.generatedPositionFor(aArgs);
2355
- if (generatedPosition) {
2356
- var ret = {
2357
- line: generatedPosition.line +
2358
- (section.generatedOffset.generatedLine - 1),
2359
- column: generatedPosition.column +
2360
- (section.generatedOffset.generatedLine === generatedPosition.line
2361
- ? section.generatedOffset.generatedColumn - 1
2362
- : 0)
2363
- };
2364
- return ret;
2365
- }
2366
- }
2367
-
2368
- return {
2369
- line: null,
2370
- column: null
2371
- };
2372
- };
2373
-
2374
- /**
2375
- * Parse the mappings in a string in to a data structure which we can easily
2376
- * query (the ordered arrays in the `this.__generatedMappings` and
2377
- * `this.__originalMappings` properties).
2378
- */
2379
- IndexedSourceMapConsumer.prototype._parseMappings =
2380
- function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
2381
- this.__generatedMappings = [];
2382
- this.__originalMappings = [];
2383
- for (var i = 0; i < this._sections.length; i++) {
2384
- var section = this._sections[i];
2385
- var sectionMappings = section.consumer._generatedMappings;
2386
- for (var j = 0; j < sectionMappings.length; j++) {
2387
- var mapping = sectionMappings[j];
2388
-
2389
- var source = section.consumer._sources.at(mapping.source);
2390
- if (section.consumer.sourceRoot !== null) {
2391
- source = util.join(section.consumer.sourceRoot, source);
2392
- }
2393
- this._sources.add(source);
2394
- source = this._sources.indexOf(source);
2395
-
2396
- var name = section.consumer._names.at(mapping.name);
2397
- this._names.add(name);
2398
- name = this._names.indexOf(name);
2399
-
2400
- // The mappings coming from the consumer for the section have
2401
- // generated positions relative to the start of the section, so we
2402
- // need to offset them to be relative to the start of the concatenated
2403
- // generated file.
2404
- var adjustedMapping = {
2405
- source: source,
2406
- generatedLine: mapping.generatedLine +
2407
- (section.generatedOffset.generatedLine - 1),
2408
- generatedColumn: mapping.generatedColumn +
2409
- (section.generatedOffset.generatedLine === mapping.generatedLine
2410
- ? section.generatedOffset.generatedColumn - 1
2411
- : 0),
2412
- originalLine: mapping.originalLine,
2413
- originalColumn: mapping.originalColumn,
2414
- name: name
2415
- };
2416
-
2417
- this.__generatedMappings.push(adjustedMapping);
2418
- if (typeof adjustedMapping.originalLine === 'number') {
2419
- this.__originalMappings.push(adjustedMapping);
2420
- }
2421
- }
2422
- }
2423
-
2424
- quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
2425
- quickSort(this.__originalMappings, util.compareByOriginalPositions);
2426
- };
2427
-
2428
- exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
2429
-
2430
-
2431
- /***/ }),
2432
- /* 8 */
2433
- /***/ (function(module, exports) {
2434
-
2435
- /* -*- Mode: js; js-indent-level: 2; -*- */
2436
- /*
2437
- * Copyright 2011 Mozilla Foundation and contributors
2438
- * Licensed under the New BSD license. See LICENSE or:
2439
- * http://opensource.org/licenses/BSD-3-Clause
2440
- */
2441
-
2442
- exports.GREATEST_LOWER_BOUND = 1;
2443
- exports.LEAST_UPPER_BOUND = 2;
2444
-
2445
- /**
2446
- * Recursive implementation of binary search.
2447
- *
2448
- * @param aLow Indices here and lower do not contain the needle.
2449
- * @param aHigh Indices here and higher do not contain the needle.
2450
- * @param aNeedle The element being searched for.
2451
- * @param aHaystack The non-empty array being searched.
2452
- * @param aCompare Function which takes two elements and returns -1, 0, or 1.
2453
- * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
2454
- * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
2455
- * closest element that is smaller than or greater than the one we are
2456
- * searching for, respectively, if the exact element cannot be found.
2457
- */
2458
- function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
2459
- // This function terminates when one of the following is true:
2460
- //
2461
- // 1. We find the exact element we are looking for.
2462
- //
2463
- // 2. We did not find the exact element, but we can return the index of
2464
- // the next-closest element.
2465
- //
2466
- // 3. We did not find the exact element, and there is no next-closest
2467
- // element than the one we are searching for, so we return -1.
2468
- var mid = Math.floor((aHigh - aLow) / 2) + aLow;
2469
- var cmp = aCompare(aNeedle, aHaystack[mid], true);
2470
- if (cmp === 0) {
2471
- // Found the element we are looking for.
2472
- return mid;
2473
- }
2474
- else if (cmp > 0) {
2475
- // Our needle is greater than aHaystack[mid].
2476
- if (aHigh - mid > 1) {
2477
- // The element is in the upper half.
2478
- return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
2479
- }
2480
-
2481
- // The exact needle element was not found in this haystack. Determine if
2482
- // we are in termination case (3) or (2) and return the appropriate thing.
2483
- if (aBias == exports.LEAST_UPPER_BOUND) {
2484
- return aHigh < aHaystack.length ? aHigh : -1;
2485
- } else {
2486
- return mid;
2487
- }
2488
- }
2489
- else {
2490
- // Our needle is less than aHaystack[mid].
2491
- if (mid - aLow > 1) {
2492
- // The element is in the lower half.
2493
- return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
2494
- }
2495
-
2496
- // we are in termination case (3) or (2) and return the appropriate thing.
2497
- if (aBias == exports.LEAST_UPPER_BOUND) {
2498
- return mid;
2499
- } else {
2500
- return aLow < 0 ? -1 : aLow;
2501
- }
2502
- }
2503
- }
2504
-
2505
- /**
2506
- * This is an implementation of binary search which will always try and return
2507
- * the index of the closest element if there is no exact hit. This is because
2508
- * mappings between original and generated line/col pairs are single points,
2509
- * and there is an implicit region between each of them, so a miss just means
2510
- * that you aren't on the very start of a region.
2511
- *
2512
- * @param aNeedle The element you are looking for.
2513
- * @param aHaystack The array that is being searched.
2514
- * @param aCompare A function which takes the needle and an element in the
2515
- * array and returns -1, 0, or 1 depending on whether the needle is less
2516
- * than, equal to, or greater than the element, respectively.
2517
- * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
2518
- * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
2519
- * closest element that is smaller than or greater than the one we are
2520
- * searching for, respectively, if the exact element cannot be found.
2521
- * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
2522
- */
2523
- exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
2524
- if (aHaystack.length === 0) {
2525
- return -1;
2526
- }
2527
-
2528
- var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
2529
- aCompare, aBias || exports.GREATEST_LOWER_BOUND);
2530
- if (index < 0) {
2531
- return -1;
2532
- }
2533
-
2534
- // We have found either the exact element, or the next-closest element than
2535
- // the one we are searching for. However, there may be more than one such
2536
- // element. Make sure we always return the smallest of these.
2537
- while (index - 1 >= 0) {
2538
- if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
2539
- break;
2540
- }
2541
- --index;
2542
- }
2543
-
2544
- return index;
2545
- };
2546
-
2547
-
2548
- /***/ }),
2549
- /* 9 */
2550
- /***/ (function(module, exports) {
2551
-
2552
- /* -*- Mode: js; js-indent-level: 2; -*- */
2553
- /*
2554
- * Copyright 2011 Mozilla Foundation and contributors
2555
- * Licensed under the New BSD license. See LICENSE or:
2556
- * http://opensource.org/licenses/BSD-3-Clause
2557
- */
2558
-
2559
- // It turns out that some (most?) JavaScript engines don't self-host
2560
- // `Array.prototype.sort`. This makes sense because C++ will likely remain
2561
- // faster than JS when doing raw CPU-intensive sorting. However, when using a
2562
- // custom comparator function, calling back and forth between the VM's C++ and
2563
- // JIT'd JS is rather slow *and* loses JIT type information, resulting in
2564
- // worse generated code for the comparator function than would be optimal. In
2565
- // fact, when sorting with a comparator, these costs outweigh the benefits of
2566
- // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
2567
- // a ~3500ms mean speed-up in `bench/bench.html`.
2568
-
2569
- /**
2570
- * Swap the elements indexed by `x` and `y` in the array `ary`.
2571
- *
2572
- * @param {Array} ary
2573
- * The array.
2574
- * @param {Number} x
2575
- * The index of the first item.
2576
- * @param {Number} y
2577
- * The index of the second item.
2578
- */
2579
- function swap(ary, x, y) {
2580
- var temp = ary[x];
2581
- ary[x] = ary[y];
2582
- ary[y] = temp;
2583
- }
2584
-
2585
- /**
2586
- * Returns a random integer within the range `low .. high` inclusive.
2587
- *
2588
- * @param {Number} low
2589
- * The lower bound on the range.
2590
- * @param {Number} high
2591
- * The upper bound on the range.
2592
- */
2593
- function randomIntInRange(low, high) {
2594
- return Math.round(low + (Math.random() * (high - low)));
2595
- }
2596
-
2597
- /**
2598
- * The Quick Sort algorithm.
2599
- *
2600
- * @param {Array} ary
2601
- * An array to sort.
2602
- * @param {function} comparator
2603
- * Function to use to compare two items.
2604
- * @param {Number} p
2605
- * Start index of the array
2606
- * @param {Number} r
2607
- * End index of the array
2608
- */
2609
- function doQuickSort(ary, comparator, p, r) {
2610
- // If our lower bound is less than our upper bound, we (1) partition the
2611
- // array into two pieces and (2) recurse on each half. If it is not, this is
2612
- // the empty array and our base case.
2613
-
2614
- if (p < r) {
2615
- // (1) Partitioning.
2616
- //
2617
- // The partitioning chooses a pivot between `p` and `r` and moves all
2618
- // elements that are less than or equal to the pivot to the before it, and
2619
- // all the elements that are greater than it after it. The effect is that
2620
- // once partition is done, the pivot is in the exact place it will be when
2621
- // the array is put in sorted order, and it will not need to be moved
2622
- // again. This runs in O(n) time.
2623
-
2624
- // Always choose a random pivot so that an input array which is reverse
2625
- // sorted does not cause O(n^2) running time.
2626
- var pivotIndex = randomIntInRange(p, r);
2627
- var i = p - 1;
2628
-
2629
- swap(ary, pivotIndex, r);
2630
- var pivot = ary[r];
2631
-
2632
- // Immediately after `j` is incremented in this loop, the following hold
2633
- // true:
2634
- //
2635
- // * Every element in `ary[p .. i]` is less than or equal to the pivot.
2636
- //
2637
- // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
2638
- for (var j = p; j < r; j++) {
2639
- if (comparator(ary[j], pivot) <= 0) {
2640
- i += 1;
2641
- swap(ary, i, j);
2642
- }
2643
- }
2644
-
2645
- swap(ary, i + 1, j);
2646
- var q = i + 1;
2647
-
2648
- // (2) Recurse on each half.
2649
-
2650
- doQuickSort(ary, comparator, p, q - 1);
2651
- doQuickSort(ary, comparator, q + 1, r);
2652
- }
2653
- }
2654
-
2655
- /**
2656
- * Sort the given array in-place with the given comparator function.
2657
- *
2658
- * @param {Array} ary
2659
- * An array to sort.
2660
- * @param {function} comparator
2661
- * Function to use to compare two items.
2662
- */
2663
- exports.quickSort = function (ary, comparator) {
2664
- doQuickSort(ary, comparator, 0, ary.length - 1);
2665
- };
2666
-
2667
-
2668
- /***/ }),
2669
- /* 10 */
2670
- /***/ (function(module, exports, __webpack_require__) {
2671
-
2672
- /* -*- Mode: js; js-indent-level: 2; -*- */
2673
- /*
2674
- * Copyright 2011 Mozilla Foundation and contributors
2675
- * Licensed under the New BSD license. See LICENSE or:
2676
- * http://opensource.org/licenses/BSD-3-Clause
2677
- */
2678
-
2679
- var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
2680
- var util = __webpack_require__(4);
2681
-
2682
- // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
2683
- // operating systems these days (capturing the result).
2684
- var REGEX_NEWLINE = /(\r?\n)/;
2685
-
2686
- // Newline character code for charCodeAt() comparisons
2687
- var NEWLINE_CODE = 10;
2688
-
2689
- // Private symbol for identifying `SourceNode`s when multiple versions of
2690
- // the source-map library are loaded. This MUST NOT CHANGE across
2691
- // versions!
2692
- var isSourceNode = "$$$isSourceNode$$$";
2693
-
2694
- /**
2695
- * SourceNodes provide a way to abstract over interpolating/concatenating
2696
- * snippets of generated JavaScript source code while maintaining the line and
2697
- * column information associated with the original source code.
2698
- *
2699
- * @param aLine The original line number.
2700
- * @param aColumn The original column number.
2701
- * @param aSource The original source's filename.
2702
- * @param aChunks Optional. An array of strings which are snippets of
2703
- * generated JS, or other SourceNodes.
2704
- * @param aName The original identifier.
2705
- */
2706
- function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
2707
- this.children = [];
2708
- this.sourceContents = {};
2709
- this.line = aLine == null ? null : aLine;
2710
- this.column = aColumn == null ? null : aColumn;
2711
- this.source = aSource == null ? null : aSource;
2712
- this.name = aName == null ? null : aName;
2713
- this[isSourceNode] = true;
2714
- if (aChunks != null) this.add(aChunks);
2715
- }
2716
-
2717
- /**
2718
- * Creates a SourceNode from generated code and a SourceMapConsumer.
2719
- *
2720
- * @param aGeneratedCode The generated code
2721
- * @param aSourceMapConsumer The SourceMap for the generated code
2722
- * @param aRelativePath Optional. The path that relative sources in the
2723
- * SourceMapConsumer should be relative to.
2724
- */
2725
- SourceNode.fromStringWithSourceMap =
2726
- function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
2727
- // The SourceNode we want to fill with the generated code
2728
- // and the SourceMap
2729
- var node = new SourceNode();
2730
-
2731
- // All even indices of this array are one line of the generated code,
2732
- // while all odd indices are the newlines between two adjacent lines
2733
- // (since `REGEX_NEWLINE` captures its match).
2734
- // Processed fragments are accessed by calling `shiftNextLine`.
2735
- var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
2736
- var remainingLinesIndex = 0;
2737
- var shiftNextLine = function() {
2738
- var lineContents = getNextLine();
2739
- // The last line of a file might not have a newline.
2740
- var newLine = getNextLine() || "";
2741
- return lineContents + newLine;
2742
-
2743
- function getNextLine() {
2744
- return remainingLinesIndex < remainingLines.length ?
2745
- remainingLines[remainingLinesIndex++] : undefined;
2746
- }
2747
- };
2748
-
2749
- // We need to remember the position of "remainingLines"
2750
- var lastGeneratedLine = 1, lastGeneratedColumn = 0;
2751
-
2752
- // The generate SourceNodes we need a code range.
2753
- // To extract it current and last mapping is used.
2754
- // Here we store the last mapping.
2755
- var lastMapping = null;
2756
-
2757
- aSourceMapConsumer.eachMapping(function (mapping) {
2758
- if (lastMapping !== null) {
2759
- // We add the code from "lastMapping" to "mapping":
2760
- // First check if there is a new line in between.
2761
- if (lastGeneratedLine < mapping.generatedLine) {
2762
- // Associate first line with "lastMapping"
2763
- addMappingWithCode(lastMapping, shiftNextLine());
2764
- lastGeneratedLine++;
2765
- lastGeneratedColumn = 0;
2766
- // The remaining code is added without mapping
2767
- } else {
2768
- // There is no new line in between.
2769
- // Associate the code between "lastGeneratedColumn" and
2770
- // "mapping.generatedColumn" with "lastMapping"
2771
- var nextLine = remainingLines[remainingLinesIndex];
2772
- var code = nextLine.substr(0, mapping.generatedColumn -
2773
- lastGeneratedColumn);
2774
- remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
2775
- lastGeneratedColumn);
2776
- lastGeneratedColumn = mapping.generatedColumn;
2777
- addMappingWithCode(lastMapping, code);
2778
- // No more remaining code, continue
2779
- lastMapping = mapping;
2780
- return;
2781
- }
2782
- }
2783
- // We add the generated code until the first mapping
2784
- // to the SourceNode without any mapping.
2785
- // Each line is added as separate string.
2786
- while (lastGeneratedLine < mapping.generatedLine) {
2787
- node.add(shiftNextLine());
2788
- lastGeneratedLine++;
2789
- }
2790
- if (lastGeneratedColumn < mapping.generatedColumn) {
2791
- var nextLine = remainingLines[remainingLinesIndex];
2792
- node.add(nextLine.substr(0, mapping.generatedColumn));
2793
- remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
2794
- lastGeneratedColumn = mapping.generatedColumn;
2795
- }
2796
- lastMapping = mapping;
2797
- }, this);
2798
- // We have processed all mappings.
2799
- if (remainingLinesIndex < remainingLines.length) {
2800
- if (lastMapping) {
2801
- // Associate the remaining code in the current line with "lastMapping"
2802
- addMappingWithCode(lastMapping, shiftNextLine());
2803
- }
2804
- // and add the remaining lines without any mapping
2805
- node.add(remainingLines.splice(remainingLinesIndex).join(""));
2806
- }
2807
-
2808
- // Copy sourcesContent into SourceNode
2809
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
2810
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
2811
- if (content != null) {
2812
- if (aRelativePath != null) {
2813
- sourceFile = util.join(aRelativePath, sourceFile);
2814
- }
2815
- node.setSourceContent(sourceFile, content);
2816
- }
2817
- });
2818
-
2819
- return node;
2820
-
2821
- function addMappingWithCode(mapping, code) {
2822
- if (mapping === null || mapping.source === undefined) {
2823
- node.add(code);
2824
- } else {
2825
- var source = aRelativePath
2826
- ? util.join(aRelativePath, mapping.source)
2827
- : mapping.source;
2828
- node.add(new SourceNode(mapping.originalLine,
2829
- mapping.originalColumn,
2830
- source,
2831
- code,
2832
- mapping.name));
2833
- }
2834
- }
2835
- };
2836
-
2837
- /**
2838
- * Add a chunk of generated JS to this source node.
2839
- *
2840
- * @param aChunk A string snippet of generated JS code, another instance of
2841
- * SourceNode, or an array where each member is one of those things.
2842
- */
2843
- SourceNode.prototype.add = function SourceNode_add(aChunk) {
2844
- if (Array.isArray(aChunk)) {
2845
- aChunk.forEach(function (chunk) {
2846
- this.add(chunk);
2847
- }, this);
2848
- }
2849
- else if (aChunk[isSourceNode] || typeof aChunk === "string") {
2850
- if (aChunk) {
2851
- this.children.push(aChunk);
2852
- }
2853
- }
2854
- else {
2855
- throw new TypeError(
2856
- "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
2857
- );
2858
- }
2859
- return this;
2860
- };
2861
-
2862
- /**
2863
- * Add a chunk of generated JS to the beginning of this source node.
2864
- *
2865
- * @param aChunk A string snippet of generated JS code, another instance of
2866
- * SourceNode, or an array where each member is one of those things.
2867
- */
2868
- SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
2869
- if (Array.isArray(aChunk)) {
2870
- for (var i = aChunk.length-1; i >= 0; i--) {
2871
- this.prepend(aChunk[i]);
2872
- }
2873
- }
2874
- else if (aChunk[isSourceNode] || typeof aChunk === "string") {
2875
- this.children.unshift(aChunk);
2876
- }
2877
- else {
2878
- throw new TypeError(
2879
- "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
2880
- );
2881
- }
2882
- return this;
2883
- };
2884
-
2885
- /**
2886
- * Walk over the tree of JS snippets in this node and its children. The
2887
- * walking function is called once for each snippet of JS and is passed that
2888
- * snippet and the its original associated source's line/column location.
2889
- *
2890
- * @param aFn The traversal function.
2891
- */
2892
- SourceNode.prototype.walk = function SourceNode_walk(aFn) {
2893
- var chunk;
2894
- for (var i = 0, len = this.children.length; i < len; i++) {
2895
- chunk = this.children[i];
2896
- if (chunk[isSourceNode]) {
2897
- chunk.walk(aFn);
2898
- }
2899
- else {
2900
- if (chunk !== '') {
2901
- aFn(chunk, { source: this.source,
2902
- line: this.line,
2903
- column: this.column,
2904
- name: this.name });
2905
- }
2906
- }
2907
- }
2908
- };
2909
-
2910
- /**
2911
- * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
2912
- * each of `this.children`.
2913
- *
2914
- * @param aSep The separator.
2915
- */
2916
- SourceNode.prototype.join = function SourceNode_join(aSep) {
2917
- var newChildren;
2918
- var i;
2919
- var len = this.children.length;
2920
- if (len > 0) {
2921
- newChildren = [];
2922
- for (i = 0; i < len-1; i++) {
2923
- newChildren.push(this.children[i]);
2924
- newChildren.push(aSep);
2925
- }
2926
- newChildren.push(this.children[i]);
2927
- this.children = newChildren;
2928
- }
2929
- return this;
2930
- };
2931
-
2932
- /**
2933
- * Call String.prototype.replace on the very right-most source snippet. Useful
2934
- * for trimming whitespace from the end of a source node, etc.
2935
- *
2936
- * @param aPattern The pattern to replace.
2937
- * @param aReplacement The thing to replace the pattern with.
2938
- */
2939
- SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
2940
- var lastChild = this.children[this.children.length - 1];
2941
- if (lastChild[isSourceNode]) {
2942
- lastChild.replaceRight(aPattern, aReplacement);
2943
- }
2944
- else if (typeof lastChild === 'string') {
2945
- this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
2946
- }
2947
- else {
2948
- this.children.push(''.replace(aPattern, aReplacement));
2949
- }
2950
- return this;
2951
- };
2952
-
2953
- /**
2954
- * Set the source content for a source file. This will be added to the SourceMapGenerator
2955
- * in the sourcesContent field.
2956
- *
2957
- * @param aSourceFile The filename of the source file
2958
- * @param aSourceContent The content of the source file
2959
- */
2960
- SourceNode.prototype.setSourceContent =
2961
- function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
2962
- this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
2963
- };
2964
-
2965
- /**
2966
- * Walk over the tree of SourceNodes. The walking function is called for each
2967
- * source file content and is passed the filename and source content.
2968
- *
2969
- * @param aFn The traversal function.
2970
- */
2971
- SourceNode.prototype.walkSourceContents =
2972
- function SourceNode_walkSourceContents(aFn) {
2973
- for (var i = 0, len = this.children.length; i < len; i++) {
2974
- if (this.children[i][isSourceNode]) {
2975
- this.children[i].walkSourceContents(aFn);
2976
- }
2977
- }
2978
-
2979
- var sources = Object.keys(this.sourceContents);
2980
- for (var i = 0, len = sources.length; i < len; i++) {
2981
- aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
2982
- }
2983
- };
2984
-
2985
- /**
2986
- * Return the string representation of this source node. Walks over the tree
2987
- * and concatenates all the various snippets together to one string.
2988
- */
2989
- SourceNode.prototype.toString = function SourceNode_toString() {
2990
- var str = "";
2991
- this.walk(function (chunk) {
2992
- str += chunk;
2993
- });
2994
- return str;
2995
- };
2996
-
2997
- /**
2998
- * Returns the string representation of this source node along with a source
2999
- * map.
3000
- */
3001
- SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
3002
- var generated = {
3003
- code: "",
3004
- line: 1,
3005
- column: 0
3006
- };
3007
- var map = new SourceMapGenerator(aArgs);
3008
- var sourceMappingActive = false;
3009
- var lastOriginalSource = null;
3010
- var lastOriginalLine = null;
3011
- var lastOriginalColumn = null;
3012
- var lastOriginalName = null;
3013
- this.walk(function (chunk, original) {
3014
- generated.code += chunk;
3015
- if (original.source !== null
3016
- && original.line !== null
3017
- && original.column !== null) {
3018
- if(lastOriginalSource !== original.source
3019
- || lastOriginalLine !== original.line
3020
- || lastOriginalColumn !== original.column
3021
- || lastOriginalName !== original.name) {
3022
- map.addMapping({
3023
- source: original.source,
3024
- original: {
3025
- line: original.line,
3026
- column: original.column
3027
- },
3028
- generated: {
3029
- line: generated.line,
3030
- column: generated.column
3031
- },
3032
- name: original.name
3033
- });
3034
- }
3035
- lastOriginalSource = original.source;
3036
- lastOriginalLine = original.line;
3037
- lastOriginalColumn = original.column;
3038
- lastOriginalName = original.name;
3039
- sourceMappingActive = true;
3040
- } else if (sourceMappingActive) {
3041
- map.addMapping({
3042
- generated: {
3043
- line: generated.line,
3044
- column: generated.column
3045
- }
3046
- });
3047
- lastOriginalSource = null;
3048
- sourceMappingActive = false;
3049
- }
3050
- for (var idx = 0, length = chunk.length; idx < length; idx++) {
3051
- if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
3052
- generated.line++;
3053
- generated.column = 0;
3054
- // Mappings end at eol
3055
- if (idx + 1 === length) {
3056
- lastOriginalSource = null;
3057
- sourceMappingActive = false;
3058
- } else if (sourceMappingActive) {
3059
- map.addMapping({
3060
- source: original.source,
3061
- original: {
3062
- line: original.line,
3063
- column: original.column
3064
- },
3065
- generated: {
3066
- line: generated.line,
3067
- column: generated.column
3068
- },
3069
- name: original.name
3070
- });
3071
- }
3072
- } else {
3073
- generated.column++;
3074
- }
3075
- }
3076
- });
3077
- this.walkSourceContents(function (sourceFile, sourceContent) {
3078
- map.setSourceContent(sourceFile, sourceContent);
3079
- });
3080
-
3081
- return { code: generated.code, map: map };
3082
- };
3083
-
3084
- exports.SourceNode = SourceNode;
3085
-
3086
-
3087
- /***/ })
3088
- /******/ ])
3089
- });
3090
- ;
3091
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBlNDczOGZjNzJhN2IyMzAzOTg4OSIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTBDLFNBQVM7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDL1pBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUEyRDtBQUMzRCxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7Ozs7Ozs7QUMzSUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsb0JBQW1CO0FBQ25CLHFCQUFvQjs7QUFFcEIsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsaUJBQWdCO0FBQ2hCLGtCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNsRUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNoYUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXNDLFNBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlFQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxvQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLG1CQUFtQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE2QixNQUFNO0FBQ25DO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXNEO0FBQ3REOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBLElBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUMsc0JBQXFCLCtDQUErQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLHNCQUFxQiw0QkFBNEI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzlHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsTUFBTTtBQUNqQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2pIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBK0MsU0FBUztBQUN4RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNEMsY0FBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUc7O0FBRUgsV0FBVTtBQUNWOztBQUVBIiwiZmlsZSI6InNvdXJjZS1tYXAuZGVidWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJzb3VyY2VNYXBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGU0NzM4ZmM3MmE3YjIzMDM5ODg5IiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NvdXJjZS1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LXZscS5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG5lZWRsZS5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgbmVlZGxlLnNvdXJjZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgIH0sIHRoaXMpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBhU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IGFTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF07XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=