cacophony 0.34.0 → 0.36.0

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 (210) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/README.md +35 -2
  3. package/dist/bundles/barberpole-bundle.js_url.cjs +1 -1
  4. package/dist/bundles/barberpole-bundle.js_url.cjs.map +1 -1
  5. package/dist/bundles/barberpole-bundle.js_url.mjs +1 -1
  6. package/dist/bundles/barberpole-bundle.js_url.mjs.map +1 -1
  7. package/dist/bundles/dattorro-reverb-bundle.js_url.cjs +1 -1
  8. package/dist/bundles/dattorro-reverb-bundle.js_url.cjs.map +1 -1
  9. package/dist/bundles/dattorro-reverb-bundle.js_url.mjs +1 -1
  10. package/dist/bundles/dattorro-reverb-bundle.js_url.mjs.map +1 -1
  11. package/dist/bundles/dynamics-bundle.js_url.cjs +1 -1
  12. package/dist/bundles/dynamics-bundle.js_url.cjs.map +1 -1
  13. package/dist/bundles/dynamics-bundle.js_url.mjs +1 -1
  14. package/dist/bundles/dynamics-bundle.js_url.mjs.map +1 -1
  15. package/dist/bundles/fdn-reverb-bundle.js_url.cjs +1 -1
  16. package/dist/bundles/fdn-reverb-bundle.js_url.cjs.map +1 -1
  17. package/dist/bundles/fdn-reverb-bundle.js_url.mjs +1 -1
  18. package/dist/bundles/fdn-reverb-bundle.js_url.mjs.map +1 -1
  19. package/dist/bundles/frequency-shifter-bundle.js_url.cjs +1 -1
  20. package/dist/bundles/frequency-shifter-bundle.js_url.cjs.map +1 -1
  21. package/dist/bundles/frequency-shifter-bundle.js_url.mjs +1 -1
  22. package/dist/bundles/frequency-shifter-bundle.js_url.mjs.map +1 -1
  23. package/dist/bundles/harmonizer-bundle.js_url.cjs +1 -1
  24. package/dist/bundles/harmonizer-bundle.js_url.cjs.map +1 -1
  25. package/dist/bundles/harmonizer-bundle.js_url.mjs +1 -1
  26. package/dist/bundles/harmonizer-bundle.js_url.mjs.map +1 -1
  27. package/dist/bundles/modulated-delay-bundle.js_url.cjs +1 -1
  28. package/dist/bundles/modulated-delay-bundle.js_url.cjs.map +1 -1
  29. package/dist/bundles/modulated-delay-bundle.js_url.mjs +1 -1
  30. package/dist/bundles/modulated-delay-bundle.js_url.mjs.map +1 -1
  31. package/dist/bundles/phaser-bundle.js_url.cjs +1 -1
  32. package/dist/bundles/phaser-bundle.js_url.cjs.map +1 -1
  33. package/dist/bundles/phaser-bundle.js_url.mjs +1 -1
  34. package/dist/bundles/phaser-bundle.js_url.mjs.map +1 -1
  35. package/dist/bundles/spectral-freeze-bundle.js_url.cjs +1 -1
  36. package/dist/bundles/spectral-freeze-bundle.js_url.cjs.map +1 -1
  37. package/dist/bundles/spectral-freeze-bundle.js_url.mjs +1 -1
  38. package/dist/bundles/spectral-freeze-bundle.js_url.mjs.map +1 -1
  39. package/dist/bundles/stereo-widener-bundle.js_url.cjs +1 -1
  40. package/dist/bundles/stereo-widener-bundle.js_url.cjs.map +1 -1
  41. package/dist/bundles/stereo-widener-bundle.js_url.mjs +1 -1
  42. package/dist/bundles/stereo-widener-bundle.js_url.mjs.map +1 -1
  43. package/dist/bundles/tremolo-bundle.js_url.cjs +1 -1
  44. package/dist/bundles/tremolo-bundle.js_url.cjs.map +1 -1
  45. package/dist/bundles/tremolo-bundle.js_url.mjs +1 -1
  46. package/dist/bundles/tremolo-bundle.js_url.mjs.map +1 -1
  47. package/dist/bundles/waveshaper-bundle.js_url.cjs +1 -1
  48. package/dist/bundles/waveshaper-bundle.js_url.cjs.map +1 -1
  49. package/dist/bundles/waveshaper-bundle.js_url.mjs +1 -1
  50. package/dist/bundles/waveshaper-bundle.js_url.mjs.map +1 -1
  51. package/dist/effects.cjs +1 -1
  52. package/dist/effects.cjs.map +1 -1
  53. package/dist/effects.d.ts +2 -2
  54. package/dist/effects.mjs +68 -49
  55. package/dist/effects.mjs.map +1 -1
  56. package/dist/index.d.ts +1 -0
  57. package/dist/playback.cjs +1 -1
  58. package/dist/playback.cjs.map +1 -1
  59. package/dist/playback.d.ts +20 -0
  60. package/dist/playback.mjs +91 -11
  61. package/dist/playback.mjs.map +1 -1
  62. package/docs/assets/hierarchy.js +1 -1
  63. package/docs/assets/navigation.js +1 -1
  64. package/docs/assets/search.js +1 -1
  65. package/docs/classes/AudioCache.html +4 -4
  66. package/docs/classes/AudioSprite.html +7 -7
  67. package/docs/classes/BarberpoleEffect.html +8 -8
  68. package/docs/classes/BiquadEffect.html +3 -3
  69. package/docs/classes/Bus.html +21 -21
  70. package/docs/classes/Cacophony.html +92 -92
  71. package/docs/classes/DynamicsEffect.html +8 -8
  72. package/docs/classes/FdnReverbEffect.html +8 -8
  73. package/docs/classes/FoaDecoder.html +5 -5
  74. package/docs/classes/FoaDecoderEffect.html +3 -3
  75. package/docs/classes/FrequencyShifterEffect.html +8 -8
  76. package/docs/classes/Group.html +33 -33
  77. package/docs/classes/HarmonizerEffect.html +8 -8
  78. package/docs/classes/ImpulseResponseEffect.html +3 -3
  79. package/docs/classes/KWeightingFilter.html +4 -4
  80. package/docs/classes/LoudnessMeter.html +11 -11
  81. package/docs/classes/MediaStreamPlayback.html +70 -70
  82. package/docs/classes/MediaStreamSound.html +51 -51
  83. package/docs/classes/MicrophoneStream.html +52 -52
  84. package/docs/classes/ModulatedDelayEffect.html +8 -8
  85. package/docs/classes/PcmStreamPlayback.html +70 -70
  86. package/docs/classes/PcmStreamSound.html +61 -61
  87. package/docs/classes/PhaserEffect.html +8 -8
  88. package/docs/classes/Playback.html +112 -88
  89. package/docs/classes/ReverbEffect.html +8 -8
  90. package/docs/classes/Scheduler.html +3 -3
  91. package/docs/classes/ShareEffect.html +3 -3
  92. package/docs/classes/Sound.html +72 -72
  93. package/docs/classes/SpectralFreezeEffect.html +8 -8
  94. package/docs/classes/StereoWidenerEffect.html +5 -5
  95. package/docs/classes/Synth.html +63 -63
  96. package/docs/classes/SynthGroup.html +28 -28
  97. package/docs/classes/TremoloEffect.html +8 -8
  98. package/docs/classes/TruePeakDetector.html +8 -8
  99. package/docs/classes/WaveshaperEffect.html +8 -8
  100. package/docs/functions/encodeMonoToFoaSN3D.html +1 -1
  101. package/docs/functions/integratedLoudness.html +1 -1
  102. package/docs/functions/integratedUngatedLoudness.html +1 -1
  103. package/docs/functions/loudnessRange.html +1 -1
  104. package/docs/functions/timeStretch.html +1 -1
  105. package/docs/functions/timeStretchChannels.html +1 -1
  106. package/docs/functions/truePeakDb.html +1 -1
  107. package/docs/hierarchy.html +3 -3
  108. package/docs/index.html +26 -0
  109. package/docs/interfaces/AudioBuffer.html +8 -8
  110. package/docs/interfaces/AudioBufferSourceNode.html +21 -21
  111. package/docs/interfaces/AudioEventCallbacks.html +1 -1
  112. package/docs/interfaces/AudioListener.html +12 -12
  113. package/docs/interfaces/AudioNode.html +13 -13
  114. package/docs/interfaces/AudioParam.html +7 -7
  115. package/docs/interfaces/AudioWorklet.html +2 -2
  116. package/docs/interfaces/AudioWorkletNode.html +15 -15
  117. package/docs/interfaces/BarberpoleOptions.html +5 -5
  118. package/docs/interfaces/BaseContext.html +25 -25
  119. package/docs/interfaces/BaseSound.html +16 -16
  120. package/docs/interfaces/BiquadCoefficients.html +6 -6
  121. package/docs/interfaces/BiquadFilterNode.html +19 -19
  122. package/docs/interfaces/BuiltEffectGraph.html +6 -6
  123. package/docs/interfaces/CacheErrorEvent.html +5 -5
  124. package/docs/interfaces/CacheHitEvent.html +4 -4
  125. package/docs/interfaces/CacheMissEvent.html +4 -4
  126. package/docs/interfaces/CacophonyEffect.html +2 -2
  127. package/docs/interfaces/CacophonyLogger.html +4 -4
  128. package/docs/interfaces/ChannelMergerNode.html +13 -13
  129. package/docs/interfaces/ChannelSplitterNode.html +13 -13
  130. package/docs/interfaces/ConvolverNode.html +15 -15
  131. package/docs/interfaces/CreateSpriteOptions.html +3 -3
  132. package/docs/interfaces/DeviceChangeEvent.html +3 -3
  133. package/docs/interfaces/DynamicsOptions.html +7 -7
  134. package/docs/interfaces/FadeStartEvent.html +4 -4
  135. package/docs/interfaces/FdnReverbOptions.html +6 -6
  136. package/docs/interfaces/FoaDecoderOptions.html +2 -2
  137. package/docs/interfaces/FrequencyShifterOptions.html +3 -3
  138. package/docs/interfaces/GainNode.html +14 -14
  139. package/docs/interfaces/GlobalPlaybackEvent.html +3 -3
  140. package/docs/interfaces/HarmonizerOptions.html +6 -6
  141. package/docs/interfaces/ImpulseResponseOptions.html +5 -5
  142. package/docs/interfaces/LoadingCompleteEvent.html +5 -5
  143. package/docs/interfaces/LoadingErrorEvent.html +5 -5
  144. package/docs/interfaces/LoadingProgressEvent.html +6 -6
  145. package/docs/interfaces/LoadingStartEvent.html +3 -3
  146. package/docs/interfaces/LoudnessChannelInput.html +3 -3
  147. package/docs/interfaces/LoudnessReading.html +5 -5
  148. package/docs/interfaces/MediaElementSourceNode.html +14 -14
  149. package/docs/interfaces/MediaStreamAudioSourceNode.html +14 -14
  150. package/docs/interfaces/MediaStreamSoundOptions.html +4 -4
  151. package/docs/interfaces/MicrophoneStreamOptions.html +7 -7
  152. package/docs/interfaces/ModulatedDelayOptions.html +8 -8
  153. package/docs/interfaces/OfflineOptions.html +5 -5
  154. package/docs/interfaces/OscillatorNode.html +19 -19
  155. package/docs/interfaces/PannerNode.html +27 -27
  156. package/docs/interfaces/PcmStreamBufferEvent.html +2 -2
  157. package/docs/interfaces/PcmStreamSoundOptions.html +6 -6
  158. package/docs/interfaces/PhaserOptions.html +7 -7
  159. package/docs/interfaces/PlayOptions.html +13 -13
  160. package/docs/interfaces/PlaybackErrorEvent.html +5 -5
  161. package/docs/interfaces/PrepareSeekOptions.html +65 -0
  162. package/docs/interfaces/ReverbOptions.html +13 -13
  163. package/docs/interfaces/RuntimeOptions.html +8 -8
  164. package/docs/interfaces/ScheduledCallbackHandle.html +2 -2
  165. package/docs/interfaces/SendGainOptions.html +3 -3
  166. package/docs/interfaces/SoundCleanupHoldings.html +4 -4
  167. package/docs/interfaces/SoundErrorEvent.html +6 -6
  168. package/docs/interfaces/SpectralFreezeOptions.html +4 -4
  169. package/docs/interfaces/SpriteRegion.html +4 -4
  170. package/docs/interfaces/StereoPannerNode.html +14 -14
  171. package/docs/interfaces/StereoToBFormatOptions.html +2 -2
  172. package/docs/interfaces/StereoWidenerOptions.html +4 -4
  173. package/docs/interfaces/StreamCapabilities.html +5 -5
  174. package/docs/interfaces/TimeStretchOptions.html +5 -5
  175. package/docs/interfaces/TremoloOptions.html +5 -5
  176. package/docs/interfaces/WaveshaperOptions.html +5 -5
  177. package/docs/modules.html +2 -2
  178. package/docs/types/AudioSinkId.html +1 -1
  179. package/docs/types/BaseAudioEvents.html +11 -11
  180. package/docs/types/BuiltEffect.html +1 -1
  181. package/docs/types/BusConnectionTarget.html +1 -1
  182. package/docs/types/CacheEventCallback.html +1 -1
  183. package/docs/types/CacophonyEvents.html +20 -20
  184. package/docs/types/ErrorEventCallback.html +1 -1
  185. package/docs/types/FadeType.html +1 -1
  186. package/docs/types/HrtfPannerOptions.html +1 -1
  187. package/docs/types/ImpulseResponseSource.html +1 -1
  188. package/docs/types/LoadingEventCallback.html +1 -1
  189. package/docs/types/LoopCount.html +1 -1
  190. package/docs/types/LoudnessChannel.html +1 -1
  191. package/docs/types/Orientation.html +3 -3
  192. package/docs/types/PanCloneOverrides.html +6 -6
  193. package/docs/types/PanType.html +1 -1
  194. package/docs/types/PcmStreamEvents.html +6 -6
  195. package/docs/types/PcmStreamState.html +1 -1
  196. package/docs/types/PlaybackEvents.html +1 -1
  197. package/docs/types/Position.html +1 -1
  198. package/docs/types/SoundEvents.html +1 -1
  199. package/docs/types/SoundType.html +1 -1
  200. package/docs/types/SourceNode.html +1 -1
  201. package/docs/types/SpriteMap.html +1 -1
  202. package/docs/types/SynthEvents.html +1 -1
  203. package/docs/types/ThreeDOptions.html +1 -1
  204. package/docs/types/WebCodecsStreamSound.html +1 -1
  205. package/docs/variables/CHANNEL_WEIGHTS.html +1 -1
  206. package/docs/variables/K_WEIGHTING_STAGE1_48K.html +1 -1
  207. package/docs/variables/K_WEIGHTING_STAGE2_48K.html +1 -1
  208. package/docs/variables/consoleLogger.html +1 -1
  209. package/docs/variables/noopLogger.html +1 -1
  210. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -17,6 +17,22 @@ someone upgrading, not as a commit message. `npm version` stamps the release; se
17
17
 
18
18
  ## [Unreleased]
19
19
 
20
+ ## [0.36.0] - 2026-10-18
21
+
22
+ ### Added
23
+ - `Playback.prepareSeek(time, { signal, timeoutMs })` silently prepares an idle or paused voice at a finite offset. Media voices wait for metadata and completed seeking before resolving; cancellation and timeout release readiness listeners without starting audio.
24
+
25
+ ### Fixed
26
+ - Paused media voices resume from the media element's actual position, including after buffering stalls and native infinite loops.
27
+
28
+ ## [0.35.0] - 2026-10-18
29
+
30
+ ### ⚠ Breaking
31
+ - Direct calls to a worklet effect's `build(context)` now return an owned `BuiltEffectGraph`. Use its `input` and `output` endpoints for manual routing and call `dispose()` when finished. `Bus.addFilter()` and source effect APIs still return the node handle and manage disposal for you.
32
+
33
+ ### Fixed
34
+ - Removed worklet effects now stop their audio processors. Previously, visiting rooms or replacing effect chains could accumulate disconnected reverb and delay processors, consuming audio-thread time and causing crackles during long sessions. Bypassed effects remain reusable, and effects still render their tails when an upstream sound ends.
35
+
20
36
  ## [0.34.0] - 2026-10-03
21
37
 
22
38
  ### ⚠ Breaking
@@ -1426,7 +1442,9 @@ _0.1.0–0.1.2 were published to npm but not tagged; this block covers everythin
1426
1442
  - Sounds loaded from URLs are cached with the browser Cache API (`CacheManager`), and concurrent loads of the same URL are de-duplicated.
1427
1443
  - `Playback.fadeIn()` and `Playback.fadeOut()` with `'linear'` or `'exponential'` fades.
1428
1444
 
1429
- [Unreleased]: https://github.com/ctoth/cacophony/compare/v0.34.0...HEAD
1445
+ [Unreleased]: https://github.com/ctoth/cacophony/compare/v0.36.0...HEAD
1446
+ [0.36.0]: https://github.com/ctoth/cacophony/compare/v0.35.0...v0.36.0
1447
+ [0.35.0]: https://github.com/ctoth/cacophony/compare/v0.34.0...v0.35.0
1430
1448
  [0.34.0]: https://github.com/ctoth/cacophony/compare/v0.33.0...v0.34.0
1431
1449
  [0.33.0]: https://github.com/ctoth/cacophony/compare/v0.32.1...v0.33.0
1432
1450
  [0.32.1]: https://github.com/ctoth/cacophony/compare/v0.32.0...v0.32.1
package/README.md CHANGED
@@ -1508,8 +1508,41 @@ synth.type = 'square'; // Triggers typeChange event
1508
1508
  each playback to observe seeks, including those requested through `Sound.seek()`.
1509
1509
  `Sound` does not relay a collective `seek`: its concurrent voices can have
1510
1510
  different positions, and a collective seek can fail after some voices have moved.
1511
- For media elements, the event reports acceptance of the `currentTime` write;
1512
- it does not wait for the browser's asynchronous `seeked` event or playback resumption.
1511
+ For media elements, the event reports acceptance of the `currentTime` write;
1512
+ it does not wait for the browser's asynchronous `seeked` event or playback resumption.
1513
+
1514
+ To seek silently before playback, prepare an individual voice:
1515
+
1516
+ ```typescript
1517
+ const [voice] = sound.preplay();
1518
+ await voice.prepareSeek(30, { signal: controller.signal, timeoutMs: 10_000 });
1519
+ // Still unplayed and silent. Start explicitly when ready.
1520
+ voice.play();
1521
+ ```
1522
+
1523
+ `prepareSeek()` accepts idle or paused buffer and media-element voices and retains
1524
+ their state. Buffers resolve immediately. Media preparation waits for finite
1525
+ duration metadata, a seekable range containing the requested offset, and completed
1526
+ seeking with current audio data. It never calls `play()` or resumes/unlocks the
1527
+ audio context. Offset `0` is valid; negative, non-finite, and beyond-duration
1528
+ offsets reject. Live or unknown-duration media rejects with `NotSupportedError`.
1529
+ A per-voice input gate keeps paused decoding silent, including browsers that emit
1530
+ decoded samples while seeking. It opens after explicit playback is accepted and
1531
+ closes on pause, stop, or cleanup, independently of volume and effect settings.
1532
+ Readiness is bounded by `timeoutMs` (positive finite milliseconds up to
1533
+ 2,147,483,647, default 10,000),
1534
+ rejecting with `TimeoutError` if the target never becomes seekable or ready.
1535
+
1536
+ An abort, a new preparation, or `play()`, `seek()`, `stop()`, or `cleanup()` cancels
1537
+ pending work with `AbortError` and removes its listeners and timeout. Already
1538
+ requested browser seeks are not rolled back; only successful preparation commits
1539
+ the voice's offset and emits `seek`. Await the promise before playing to use that
1540
+ offset. Cancellation cannot later start playback or overwrite a newer position.
1541
+ HTML media remains subject to browser buffering and autoplay policy and does not
1542
+ offer sample-accurate starts. This API does not apply to live microphone or push
1543
+ PCM streams.
1544
+ An offset equal to the duration represents end-of-media; subsequently playing an
1545
+ HTML element at its end can restart it from zero under the browser's media rules.
1513
1546
 
1514
1547
  #### Synth Events
1515
1548
 
@@ -1,2 +1,2 @@
1
- var e=`data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBjb3JlcyA9IFtdOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJyYXRlIiwgZGVmYXVsdFZhbHVlOiAwLjEsIG1pblZhbHVlOiAtMiwgbWF4VmFsdWU6IDIsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAic3RhZ2VzIiwgZGVmYXVsdFZhbHVlOiAzMiwgbWluVmFsdWU6IDIsIG1heFZhbHVlOiA2NCwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJjb2VmZmljaWVudCIsIGRlZmF1bHRWYWx1ZTogLTAuNSwgbWluVmFsdWU6IC0wLjk1LCBtYXhWYWx1ZTogMC45NSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJtaXgiLCBkZWZhdWx0VmFsdWU6IDEsIG1pblZhbHVlOiAwLCBtYXhWYWx1ZTogMSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICByYXRlOiBwYXJhbWV0ZXJzLnJhdGVbcGFyYW1ldGVycy5yYXRlLmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgc3RhZ2VzOiBwYXJhbWV0ZXJzLnN0YWdlc1twYXJhbWV0ZXJzLnN0YWdlcy5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50OiBwYXJhbWV0ZXJzLmNvZWZmaWNpZW50W3BhcmFtZXRlcnMuY29lZmZpY2llbnQubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBtaXg6IHBhcmFtZXRlcnMubWl4W3BhcmFtZXRlcnMubWl4Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKGxldCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dC5sZW5ndGg7IGNoYW5uZWwrKykgewogICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gaW5wdXRbY2hhbm5lbF0gPz8gaW5wdXRbMF07CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF0uZmlsbCgwKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAodGhpcy5jb3Jlc1tjaGFubmVsXSA/Pz0gbmV3IEJhcmJlcnBvbGVDb3JlKHNhbXBsZVJhdGUpKS5wcm9jZXNzKHNvdXJjZSwgb3V0cHV0W2NoYW5uZWxdLCBwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJiYXJiZXJwb2xlIiwgQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IpOwoKICAgIGV4cG9ydHMuQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IgPSBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFyYmVycG9sZS1idW5kbGUuanMubWFwCg==`;exports.default=e;
1
+ var e=`data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBUZXJtaW5hbCByZXRpcmVtZW50IGlzIGRpc3RpbmN0IGZyb20gdGVtcG9yYXJpbHkgbG9zaW5nIGFuIGlucHV0IG9yIGJ5cGFzc2luZyBhbiBlZmZlY3QuICovCiAgICBmdW5jdGlvbiByZWdpc3RlckVmZmVjdFByb2Nlc3NvcihuYW1lLCBQcm9jZXNzb3IpIHsKICAgICAgICBjbGFzcyBPd25lZEVmZmVjdFByb2Nlc3NvciBleHRlbmRzIFByb2Nlc3NvciB7CiAgICAgICAgICAgIGRpc3Bvc2VkID0gZmFsc2U7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gImNhY29waG9ueTpkaXNwb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSgiY2Fjb3Bob255OmRpc3Bvc2VkIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5zdGFydCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZGlzcG9zZWQgJiYgc3VwZXIucHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlZ2lzdGVyUHJvY2Vzc29yKG5hbWUsIE93bmVkRWZmZWN0UHJvY2Vzc29yKTsKICAgIH0KCiAgICBjbGFzcyBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgY29yZXMgPSBbXTsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgeyBuYW1lOiAicmF0ZSIsIGRlZmF1bHRWYWx1ZTogMC4xLCBtaW5WYWx1ZTogLTIsIG1heFZhbHVlOiAyLCBhdXRvbWF0aW9uUmF0ZTogImstcmF0ZSIgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogInN0YWdlcyIsIGRlZmF1bHRWYWx1ZTogMzIsIG1pblZhbHVlOiAyLCBtYXhWYWx1ZTogNjQsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiY29lZmZpY2llbnQiLCBkZWZhdWx0VmFsdWU6IC0wLjUsIG1pblZhbHVlOiAtMC45NSwgbWF4VmFsdWU6IDAuOTUsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAibWl4IiwgZGVmYXVsdFZhbHVlOiAxLCBtaW5WYWx1ZTogMCwgbWF4VmFsdWU6IDEsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcmF0ZTogcGFyYW1ldGVycy5yYXRlW3BhcmFtZXRlcnMucmF0ZS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIHN0YWdlczogcGFyYW1ldGVycy5zdGFnZXNbcGFyYW1ldGVycy5zdGFnZXMubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBjb2VmZmljaWVudDogcGFyYW1ldGVycy5jb2VmZmljaWVudFtwYXJhbWV0ZXJzLmNvZWZmaWNpZW50Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgbWl4OiBwYXJhbWV0ZXJzLm1peFtwYXJhbWV0ZXJzLm1peC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBvdXRwdXQubGVuZ3RoOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGlucHV0W2NoYW5uZWxdID8/IGlucHV0WzBdOwogICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYW5uZWxdLmZpbGwoMCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29yZXNbY2hhbm5lbF0gPz89IG5ldyBCYXJiZXJwb2xlQ29yZShzYW1wbGVSYXRlKSkucHJvY2Vzcyhzb3VyY2UsIG91dHB1dFtjaGFubmVsXSwgcGFyYW1zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiYmFyYmVycG9sZSIsIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yKTsKCiAgICBleHBvcnRzLkJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yID0gQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhcmJlcnBvbGUtYnVuZGxlLmpzLm1hcAo=`;exports.default=e;
2
2
  //# sourceMappingURL=barberpole-bundle.js_url.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"barberpole-bundle.js_url.cjs","names":[],"sources":["../../src/bundles/barberpole-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBjb3JlcyA9IFtdOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJyYXRlIiwgZGVmYXVsdFZhbHVlOiAwLjEsIG1pblZhbHVlOiAtMiwgbWF4VmFsdWU6IDIsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAic3RhZ2VzIiwgZGVmYXVsdFZhbHVlOiAzMiwgbWluVmFsdWU6IDIsIG1heFZhbHVlOiA2NCwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJjb2VmZmljaWVudCIsIGRlZmF1bHRWYWx1ZTogLTAuNSwgbWluVmFsdWU6IC0wLjk1LCBtYXhWYWx1ZTogMC45NSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJtaXgiLCBkZWZhdWx0VmFsdWU6IDEsIG1pblZhbHVlOiAwLCBtYXhWYWx1ZTogMSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICByYXRlOiBwYXJhbWV0ZXJzLnJhdGVbcGFyYW1ldGVycy5yYXRlLmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgc3RhZ2VzOiBwYXJhbWV0ZXJzLnN0YWdlc1twYXJhbWV0ZXJzLnN0YWdlcy5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50OiBwYXJhbWV0ZXJzLmNvZWZmaWNpZW50W3BhcmFtZXRlcnMuY29lZmZpY2llbnQubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBtaXg6IHBhcmFtZXRlcnMubWl4W3BhcmFtZXRlcnMubWl4Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKGxldCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dC5sZW5ndGg7IGNoYW5uZWwrKykgewogICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gaW5wdXRbY2hhbm5lbF0gPz8gaW5wdXRbMF07CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF0uZmlsbCgwKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAodGhpcy5jb3Jlc1tjaGFubmVsXSA/Pz0gbmV3IEJhcmJlcnBvbGVDb3JlKHNhbXBsZVJhdGUpKS5wcm9jZXNzKHNvdXJjZSwgb3V0cHV0W2NoYW5uZWxdLCBwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJiYXJiZXJwb2xlIiwgQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IpOwoKICAgIGV4cG9ydHMuQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IgPSBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFyYmVycG9sZS1idW5kbGUuanMubWFwCg==\""],"mappings":"AAAA,IAAA,EAAe"}
1
+ {"version":3,"file":"barberpole-bundle.js_url.cjs","names":[],"sources":["../../src/bundles/barberpole-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBUZXJtaW5hbCByZXRpcmVtZW50IGlzIGRpc3RpbmN0IGZyb20gdGVtcG9yYXJpbHkgbG9zaW5nIGFuIGlucHV0IG9yIGJ5cGFzc2luZyBhbiBlZmZlY3QuICovCiAgICBmdW5jdGlvbiByZWdpc3RlckVmZmVjdFByb2Nlc3NvcihuYW1lLCBQcm9jZXNzb3IpIHsKICAgICAgICBjbGFzcyBPd25lZEVmZmVjdFByb2Nlc3NvciBleHRlbmRzIFByb2Nlc3NvciB7CiAgICAgICAgICAgIGRpc3Bvc2VkID0gZmFsc2U7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gImNhY29waG9ueTpkaXNwb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSgiY2Fjb3Bob255OmRpc3Bvc2VkIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5zdGFydCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZGlzcG9zZWQgJiYgc3VwZXIucHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlZ2lzdGVyUHJvY2Vzc29yKG5hbWUsIE93bmVkRWZmZWN0UHJvY2Vzc29yKTsKICAgIH0KCiAgICBjbGFzcyBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgY29yZXMgPSBbXTsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgeyBuYW1lOiAicmF0ZSIsIGRlZmF1bHRWYWx1ZTogMC4xLCBtaW5WYWx1ZTogLTIsIG1heFZhbHVlOiAyLCBhdXRvbWF0aW9uUmF0ZTogImstcmF0ZSIgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogInN0YWdlcyIsIGRlZmF1bHRWYWx1ZTogMzIsIG1pblZhbHVlOiAyLCBtYXhWYWx1ZTogNjQsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiY29lZmZpY2llbnQiLCBkZWZhdWx0VmFsdWU6IC0wLjUsIG1pblZhbHVlOiAtMC45NSwgbWF4VmFsdWU6IDAuOTUsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAibWl4IiwgZGVmYXVsdFZhbHVlOiAxLCBtaW5WYWx1ZTogMCwgbWF4VmFsdWU6IDEsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcmF0ZTogcGFyYW1ldGVycy5yYXRlW3BhcmFtZXRlcnMucmF0ZS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIHN0YWdlczogcGFyYW1ldGVycy5zdGFnZXNbcGFyYW1ldGVycy5zdGFnZXMubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBjb2VmZmljaWVudDogcGFyYW1ldGVycy5jb2VmZmljaWVudFtwYXJhbWV0ZXJzLmNvZWZmaWNpZW50Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgbWl4OiBwYXJhbWV0ZXJzLm1peFtwYXJhbWV0ZXJzLm1peC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBvdXRwdXQubGVuZ3RoOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGlucHV0W2NoYW5uZWxdID8/IGlucHV0WzBdOwogICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYW5uZWxdLmZpbGwoMCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29yZXNbY2hhbm5lbF0gPz89IG5ldyBCYXJiZXJwb2xlQ29yZShzYW1wbGVSYXRlKSkucHJvY2Vzcyhzb3VyY2UsIG91dHB1dFtjaGFubmVsXSwgcGFyYW1zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiYmFyYmVycG9sZSIsIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yKTsKCiAgICBleHBvcnRzLkJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yID0gQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhcmJlcnBvbGUtYnVuZGxlLmpzLm1hcAo=\""],"mappings":"AAAA,IAAA,EAAe"}
@@ -1,5 +1,5 @@
1
1
  //#region src/bundles/barberpole-bundle.js?url
2
- var e = "data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBjb3JlcyA9IFtdOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJyYXRlIiwgZGVmYXVsdFZhbHVlOiAwLjEsIG1pblZhbHVlOiAtMiwgbWF4VmFsdWU6IDIsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAic3RhZ2VzIiwgZGVmYXVsdFZhbHVlOiAzMiwgbWluVmFsdWU6IDIsIG1heFZhbHVlOiA2NCwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJjb2VmZmljaWVudCIsIGRlZmF1bHRWYWx1ZTogLTAuNSwgbWluVmFsdWU6IC0wLjk1LCBtYXhWYWx1ZTogMC45NSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJtaXgiLCBkZWZhdWx0VmFsdWU6IDEsIG1pblZhbHVlOiAwLCBtYXhWYWx1ZTogMSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICByYXRlOiBwYXJhbWV0ZXJzLnJhdGVbcGFyYW1ldGVycy5yYXRlLmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgc3RhZ2VzOiBwYXJhbWV0ZXJzLnN0YWdlc1twYXJhbWV0ZXJzLnN0YWdlcy5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50OiBwYXJhbWV0ZXJzLmNvZWZmaWNpZW50W3BhcmFtZXRlcnMuY29lZmZpY2llbnQubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBtaXg6IHBhcmFtZXRlcnMubWl4W3BhcmFtZXRlcnMubWl4Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKGxldCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dC5sZW5ndGg7IGNoYW5uZWwrKykgewogICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gaW5wdXRbY2hhbm5lbF0gPz8gaW5wdXRbMF07CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF0uZmlsbCgwKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAodGhpcy5jb3Jlc1tjaGFubmVsXSA/Pz0gbmV3IEJhcmJlcnBvbGVDb3JlKHNhbXBsZVJhdGUpKS5wcm9jZXNzKHNvdXJjZSwgb3V0cHV0W2NoYW5uZWxdLCBwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJiYXJiZXJwb2xlIiwgQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IpOwoKICAgIGV4cG9ydHMuQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IgPSBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFyYmVycG9sZS1idW5kbGUuanMubWFwCg==";
2
+ var e = "data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBUZXJtaW5hbCByZXRpcmVtZW50IGlzIGRpc3RpbmN0IGZyb20gdGVtcG9yYXJpbHkgbG9zaW5nIGFuIGlucHV0IG9yIGJ5cGFzc2luZyBhbiBlZmZlY3QuICovCiAgICBmdW5jdGlvbiByZWdpc3RlckVmZmVjdFByb2Nlc3NvcihuYW1lLCBQcm9jZXNzb3IpIHsKICAgICAgICBjbGFzcyBPd25lZEVmZmVjdFByb2Nlc3NvciBleHRlbmRzIFByb2Nlc3NvciB7CiAgICAgICAgICAgIGRpc3Bvc2VkID0gZmFsc2U7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gImNhY29waG9ueTpkaXNwb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSgiY2Fjb3Bob255OmRpc3Bvc2VkIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5zdGFydCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZGlzcG9zZWQgJiYgc3VwZXIucHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlZ2lzdGVyUHJvY2Vzc29yKG5hbWUsIE93bmVkRWZmZWN0UHJvY2Vzc29yKTsKICAgIH0KCiAgICBjbGFzcyBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgY29yZXMgPSBbXTsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgeyBuYW1lOiAicmF0ZSIsIGRlZmF1bHRWYWx1ZTogMC4xLCBtaW5WYWx1ZTogLTIsIG1heFZhbHVlOiAyLCBhdXRvbWF0aW9uUmF0ZTogImstcmF0ZSIgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogInN0YWdlcyIsIGRlZmF1bHRWYWx1ZTogMzIsIG1pblZhbHVlOiAyLCBtYXhWYWx1ZTogNjQsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiY29lZmZpY2llbnQiLCBkZWZhdWx0VmFsdWU6IC0wLjUsIG1pblZhbHVlOiAtMC45NSwgbWF4VmFsdWU6IDAuOTUsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAibWl4IiwgZGVmYXVsdFZhbHVlOiAxLCBtaW5WYWx1ZTogMCwgbWF4VmFsdWU6IDEsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcmF0ZTogcGFyYW1ldGVycy5yYXRlW3BhcmFtZXRlcnMucmF0ZS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIHN0YWdlczogcGFyYW1ldGVycy5zdGFnZXNbcGFyYW1ldGVycy5zdGFnZXMubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBjb2VmZmljaWVudDogcGFyYW1ldGVycy5jb2VmZmljaWVudFtwYXJhbWV0ZXJzLmNvZWZmaWNpZW50Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgbWl4OiBwYXJhbWV0ZXJzLm1peFtwYXJhbWV0ZXJzLm1peC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBvdXRwdXQubGVuZ3RoOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGlucHV0W2NoYW5uZWxdID8/IGlucHV0WzBdOwogICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYW5uZWxdLmZpbGwoMCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29yZXNbY2hhbm5lbF0gPz89IG5ldyBCYXJiZXJwb2xlQ29yZShzYW1wbGVSYXRlKSkucHJvY2Vzcyhzb3VyY2UsIG91dHB1dFtjaGFubmVsXSwgcGFyYW1zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiYmFyYmVycG9sZSIsIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yKTsKCiAgICBleHBvcnRzLkJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yID0gQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhcmJlcnBvbGUtYnVuZGxlLmpzLm1hcAo=";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"barberpole-bundle.js_url.mjs","names":[],"sources":["../../src/bundles/barberpole-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBjb3JlcyA9IFtdOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJyYXRlIiwgZGVmYXVsdFZhbHVlOiAwLjEsIG1pblZhbHVlOiAtMiwgbWF4VmFsdWU6IDIsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAic3RhZ2VzIiwgZGVmYXVsdFZhbHVlOiAzMiwgbWluVmFsdWU6IDIsIG1heFZhbHVlOiA2NCwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJjb2VmZmljaWVudCIsIGRlZmF1bHRWYWx1ZTogLTAuNSwgbWluVmFsdWU6IC0wLjk1LCBtYXhWYWx1ZTogMC45NSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJtaXgiLCBkZWZhdWx0VmFsdWU6IDEsIG1pblZhbHVlOiAwLCBtYXhWYWx1ZTogMSwgYXV0b21hdGlvblJhdGU6ICJrLXJhdGUiIH0sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdID8/IFtdOwogICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICByYXRlOiBwYXJhbWV0ZXJzLnJhdGVbcGFyYW1ldGVycy5yYXRlLmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgc3RhZ2VzOiBwYXJhbWV0ZXJzLnN0YWdlc1twYXJhbWV0ZXJzLnN0YWdlcy5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50OiBwYXJhbWV0ZXJzLmNvZWZmaWNpZW50W3BhcmFtZXRlcnMuY29lZmZpY2llbnQubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBtaXg6IHBhcmFtZXRlcnMubWl4W3BhcmFtZXRlcnMubWl4Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKGxldCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dC5sZW5ndGg7IGNoYW5uZWwrKykgewogICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gaW5wdXRbY2hhbm5lbF0gPz8gaW5wdXRbMF07CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF0uZmlsbCgwKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAodGhpcy5jb3Jlc1tjaGFubmVsXSA/Pz0gbmV3IEJhcmJlcnBvbGVDb3JlKHNhbXBsZVJhdGUpKS5wcm9jZXNzKHNvdXJjZSwgb3V0cHV0W2NoYW5uZWxdLCBwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJiYXJiZXJwb2xlIiwgQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IpOwoKICAgIGV4cG9ydHMuQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3IgPSBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFyYmVycG9sZS1idW5kbGUuanMubWFwCg==\""],"mappings":";AAAA,IAAA,IAAe"}
1
+ {"version":3,"file":"barberpole-bundle.js_url.mjs","names":[],"sources":["../../src/bundles/barberpole-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGJhcmJlcnBvbGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIEZJUi1IaWxiZXJ0IHNpbmdsZS1zaWRlYmFuZCBmcmVxdWVuY3kgc2hpZnRlci4KICAgICAqCiAgICAgKiBTY290dCBXYXJkbGUsICJBIEhpbGJlcnQtVHJhbnNmb3JtZXIgRnJlcXVlbmN5IFNoaWZ0ZXIgZm9yIEF1ZGlvIiwKICAgICAqIERBRngtOTgsIGVxLiA1YzoKICAgICAqCiAgICAgKiAgIHkodCkgPSB4KHQpIGNvcyh3X2MgdCkgLSBIe3godCl9IHNpbih3X2MgdCkKICAgICAqCiAgICAgKiBUaGUgcmVhbCBwYXRoIGlzIGRlbGF5ZWQgYnkgdGhlIEZJUiBncm91cCBkZWxheSBzbyBpdCByZW1haW5zIGluIHF1YWRyYXR1cmUKICAgICAqIHdpdGggdGhlIEhpbGJlcnQgcGF0aC4gQSBzaWduZWQgY2FycmllciBmcmVxdWVuY3kgY2hvb3NlcyB1cHBlci9sb3dlcgogICAgICogc2lkZWJhbmQgdHJhbnNsYXRpb24gd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBjb25zdCBERUZBVUxUX1RBUFMgPSAxMjc7CiAgICAvKiogV2luZG93ZWQgaWRlYWwgb2RkLXN5bW1ldHJpYyBIaWxiZXJ0LXRyYW5zZm9ybSBGSVIuICovCiAgICBmdW5jdGlvbiBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50ID0gREVGQVVMVF9UQVBTKSB7CiAgICAgICAgaWYgKHRhcENvdW50IDwgNyB8fCB0YXBDb3VudCAlIDIgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkhpbGJlcnQgRklSIHRhcCBjb3VudCBtdXN0IGJlIGFuIG9kZCBpbnRlZ2VyID49IDciKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2VudGVyID0gKHRhcENvdW50IC0gMSkgLyAyOwogICAgICAgIGNvbnN0IGNvZWZmaWNpZW50cyA9IG5ldyBGbG9hdDY0QXJyYXkodGFwQ291bnQpOwogICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGFwQ291bnQ7IG4rKykgewogICAgICAgICAgICBjb25zdCBtID0gbiAtIGNlbnRlcjsKICAgICAgICAgICAgaWYgKG0gIT09IDAgJiYgTWF0aC5hYnMobSkgJSAyID09PSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSAwLjQyIC0gMC41ICogTWF0aC5jb3MoKDIgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSkgKyAwLjA4ICogTWF0aC5jb3MoKDQgKiBNYXRoLlBJICogbikgLyAodGFwQ291bnQgLSAxKSk7CiAgICAgICAgICAgICAgICBjb2VmZmljaWVudHNbbl0gPSAoMiAvIChNYXRoLlBJICogbSkpICogd2luZG93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2VmZmljaWVudHM7CiAgICB9CiAgICAvKiogU3RyZWFtaW5nIEZJUiBIaWxiZXJ0IHRyYW5zZm9ybWVyIHdpdGggYW4gYWxpZ25lZCBkaXJlY3QgdGFwLiAqLwogICAgY2xhc3MgSGlsYmVydFRyYW5zZm9ybWVyIHsKICAgICAgICBsYXRlbmN5U2FtcGxlczsKICAgICAgICBjb2VmZmljaWVudHM7CiAgICAgICAgYnVmZmVyOwogICAgICAgIG1hc2s7CiAgICAgICAgd3JpdGVJbmRleCA9IDA7CiAgICAgICAgY29uc3RydWN0b3IodGFwQ291bnQgPSBERUZBVUxUX1RBUFMpIHsKICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBkZXNpZ25IaWxiZXJ0RmlyKHRhcENvdW50KTsKICAgICAgICAgICAgdGhpcy5sYXRlbmN5U2FtcGxlcyA9ICh0YXBDb3VudCAtIDEpIC8gMjsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IDIgKiogTWF0aC5jZWlsKE1hdGgubG9nMih0YXBDb3VudCArIDEpKTsKICAgICAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgRmxvYXQ2NEFycmF5KHNpemUpOwogICAgICAgICAgICB0aGlzLm1hc2sgPSBzaXplIC0gMTsKICAgICAgICB9CiAgICAgICAgcHJvY2VzcyhpbnB1dCkgewogICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLndyaXRlSW5kZXhdID0gaW5wdXQ7CiAgICAgICAgICAgIGxldCBxdWFkcmF0dXJlID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcXVhZHJhdHVyZSArPSB0aGlzLmNvZWZmaWNpZW50c1tpXSAqIHRoaXMuYnVmZmVyWyh0aGlzLndyaXRlSW5kZXggLSBpKSAmIHRoaXMubWFza107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZGlyZWN0ID0gdGhpcy5idWZmZXJbKHRoaXMud3JpdGVJbmRleCAtIHRoaXMubGF0ZW5jeVNhbXBsZXMpICYgdGhpcy5tYXNrXTsKICAgICAgICAgICAgdGhpcy53cml0ZUluZGV4ID0gKHRoaXMud3JpdGVJbmRleCArIDEpICYgdGhpcy5tYXNrOwogICAgICAgICAgICByZXR1cm4geyBkaXJlY3QsIHF1YWRyYXR1cmUgfTsKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmZpbGwoMCk7CiAgICAgICAgICAgIHRoaXMud3JpdGVJbmRleCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBGaXJzdC1vcmRlciBhbGxwYXNzIEEoeik9KGErel4tMSkvKDErYSB6Xi0xKSwgREFGeC0xNSBlcS4gMTQuICovCiAgICBjbGFzcyBGaXJzdE9yZGVyQWxscGFzcyB7CiAgICAgICAgeDEgPSAwOwogICAgICAgIHkxID0gMDsKICAgICAgICBwcm9jZXNzKGlucHV0LCBjb2VmZmljaWVudCkgewogICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBjb2VmZmljaWVudCAqIGlucHV0ICsgdGhpcy54MSAtIGNvZWZmaWNpZW50ICogdGhpcy55MTsKICAgICAgICAgICAgdGhpcy54MSA9IGlucHV0OwogICAgICAgICAgICB0aGlzLnkxID0gb3V0cHV0OwogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogU1NCIGJhcmJlcnBvbGUgcGhhc2VyIGZyb20gRXNxdWVkYSwgVmFsaW1ha2kgJiBQYXJrZXIsIERBRngtMTUgRmlnLiAxMi4KICAgICAqIFRoZSBIaWxiZXJ0IHNoaWZ0ZXIgc3VwcGxpZXMgdGhlIG1vdmluZyBjb3B5OyBhIGNhc2NhZGVkIGFsbHBhc3Mgc3BlY3RyYWwKICAgICAqIGRlbGF5IHdhcnBzIHRoZSBub3RjaCBzcGFjaW5nIHRvd2FyZCB0aGUgU2hlcGFyZC1SaXNzZXQgb2N0YXZlIGRpc3RyaWJ1dGlvbi4KICAgICAqLwogICAgY2xhc3MgQmFyYmVycG9sZUNvcmUgewogICAgICAgIHNhbXBsZVJhdGU7CiAgICAgICAgaGlsYmVydCA9IG5ldyBIaWxiZXJ0VHJhbnNmb3JtZXIoKTsKICAgICAgICBhbGxwYXNzZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2NCB9LCAoKSA9PiBuZXcgRmlyc3RPcmRlckFsbHBhc3MoKSk7CiAgICAgICAgcGhhc2UgPSAwOwogICAgICAgIGNvbnN0cnVjdG9yKHNhbXBsZVJhdGUpIHsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICAgICB9CiAgICAgICAgcHJvY2Vzc1NhbXBsZShpbnB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB0aGlzLmhpbGJlcnQucHJvY2VzcyhpbnB1dCk7CiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gcGFpci5kaXJlY3QgKiBNYXRoLmNvcyh0aGlzLnBoYXNlKSAtIHBhaXIucXVhZHJhdHVyZSAqIE1hdGguc2luKHRoaXMucGhhc2UpOwogICAgICAgICAgICBjb25zdCBzdGFnZXMgPSBNYXRoLm1heCgyLCBNYXRoLm1pbih0aGlzLmFsbHBhc3Nlcy5sZW5ndGgsIE1hdGgucm91bmQocGFyYW1zLnN0YWdlcykpKTsKICAgICAgICAgICAgY29uc3QgY29lZmZpY2llbnQgPSBNYXRoLm1heCgtMC45NSwgTWF0aC5taW4oMC45NSwgcGFyYW1zLmNvZWZmaWNpZW50KSk7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzOyBpKyspCiAgICAgICAgICAgICAgICBzaGlmdGVkID0gdGhpcy5hbGxwYXNzZXNbaV0ucHJvY2VzcyhzaGlmdGVkLCBjb2VmZmljaWVudCk7CiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBNYXRoLm1heCgtMiwgTWF0aC5taW4oMiwgcGFyYW1zLnJhdGUpKTsKICAgICAgICAgICAgdGhpcy5waGFzZSArPSAoMiAqIE1hdGguUEkgKiByYXRlKSAvIHRoaXMuc2FtcGxlUmF0ZTsKICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiBNYXRoLlBJIHx8IHRoaXMucGhhc2UgPCAtTWF0aC5QSSkKICAgICAgICAgICAgICAgIHRoaXMucGhhc2UgLT0gTWF0aC5yb3VuZCh0aGlzLnBoYXNlIC8gKDIgKiBNYXRoLlBJKSkgKiAyICogTWF0aC5QSTsKICAgICAgICAgICAgY29uc3QgYmFyYmVycG9sZSA9IDAuNSAqIChwYWlyLmRpcmVjdCArIHNoaWZ0ZWQpOwogICAgICAgICAgICBjb25zdCBtaXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwYXJhbXMubWl4KSk7CiAgICAgICAgICAgIHJldHVybiBwYWlyLmRpcmVjdCAqICgxIC0gbWl4KSArIGJhcmJlcnBvbGUgKiBtaXg7CiAgICAgICAgfQogICAgICAgIHByb2Nlc3MoaW5wdXQsIG91dHB1dCwgcGFyYW1zKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSB0aGlzLnByb2Nlc3NTYW1wbGUoaW5wdXRbaV0sIHBhcmFtcyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBUZXJtaW5hbCByZXRpcmVtZW50IGlzIGRpc3RpbmN0IGZyb20gdGVtcG9yYXJpbHkgbG9zaW5nIGFuIGlucHV0IG9yIGJ5cGFzc2luZyBhbiBlZmZlY3QuICovCiAgICBmdW5jdGlvbiByZWdpc3RlckVmZmVjdFByb2Nlc3NvcihuYW1lLCBQcm9jZXNzb3IpIHsKICAgICAgICBjbGFzcyBPd25lZEVmZmVjdFByb2Nlc3NvciBleHRlbmRzIFByb2Nlc3NvciB7CiAgICAgICAgICAgIGRpc3Bvc2VkID0gZmFsc2U7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gImNhY29waG9ueTpkaXNwb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSgiY2Fjb3Bob255OmRpc3Bvc2VkIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5zdGFydCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZGlzcG9zZWQgJiYgc3VwZXIucHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlZ2lzdGVyUHJvY2Vzc29yKG5hbWUsIE93bmVkRWZmZWN0UHJvY2Vzc29yKTsKICAgIH0KCiAgICBjbGFzcyBCYXJiZXJwb2xlV29ya2xldFByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgY29yZXMgPSBbXTsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgeyBuYW1lOiAicmF0ZSIsIGRlZmF1bHRWYWx1ZTogMC4xLCBtaW5WYWx1ZTogLTIsIG1heFZhbHVlOiAyLCBhdXRvbWF0aW9uUmF0ZTogImstcmF0ZSIgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogInN0YWdlcyIsIGRlZmF1bHRWYWx1ZTogMzIsIG1pblZhbHVlOiAyLCBtYXhWYWx1ZTogNjQsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiY29lZmZpY2llbnQiLCBkZWZhdWx0VmFsdWU6IC0wLjUsIG1pblZhbHVlOiAtMC45NSwgbWF4VmFsdWU6IDAuOTUsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAibWl4IiwgZGVmYXVsdFZhbHVlOiAxLCBtaW5WYWx1ZTogMCwgbWF4VmFsdWU6IDEsIGF1dG9tYXRpb25SYXRlOiAiay1yYXRlIiB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXSA/PyBbXTsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcmF0ZTogcGFyYW1ldGVycy5yYXRlW3BhcmFtZXRlcnMucmF0ZS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIHN0YWdlczogcGFyYW1ldGVycy5zdGFnZXNbcGFyYW1ldGVycy5zdGFnZXMubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICBjb2VmZmljaWVudDogcGFyYW1ldGVycy5jb2VmZmljaWVudFtwYXJhbWV0ZXJzLmNvZWZmaWNpZW50Lmxlbmd0aCAtIDFdLAogICAgICAgICAgICAgICAgbWl4OiBwYXJhbWV0ZXJzLm1peFtwYXJhbWV0ZXJzLm1peC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBvdXRwdXQubGVuZ3RoOyBjaGFubmVsKyspIHsKICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGlucHV0W2NoYW5uZWxdID8/IGlucHV0WzBdOwogICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYW5uZWxdLmZpbGwoMCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29yZXNbY2hhbm5lbF0gPz89IG5ldyBCYXJiZXJwb2xlQ29yZShzYW1wbGVSYXRlKSkucHJvY2Vzcyhzb3VyY2UsIG91dHB1dFtjaGFubmVsXSwgcGFyYW1zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiYmFyYmVycG9sZSIsIEJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yKTsKCiAgICBleHBvcnRzLkJhcmJlcnBvbGVXb3JrbGV0UHJvY2Vzc29yID0gQmFyYmVycG9sZVdvcmtsZXRQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhcmJlcnBvbGUtYnVuZGxlLmpzLm1hcAo=\""],"mappings":";AAAA,IAAA,IAAe"}
@@ -1,2 +1,2 @@
1
- var e=`data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoKICAgIERhdHRvcnJvIFJldmVyYiBBdWRpb1dvcmtsZXQgSW1wbGVtZW50YXRpb24KICAgIE9yaWdpbmFsIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gYnkgS2jDtGkgTmd1eeG7hW4gKGtob2luKQogICAgaHR0cHM6Ly9naXRodWIuY29tL2tob2luL0RhdHRvcnJvUmV2ZXJiTm9kZQoKICAgIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyOgogICAgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCgogICAgSW4ganVyaXNkaWN0aW9ucyB0aGF0IHJlY29nbml6ZSBjb3B5cmlnaHQgbGF3cywgdGhpcyBzb2Z0d2FyZSBpcyB0bwogICAgYmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORC4KICAgIFRIRSBBVVRIT1IoUykgU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IgQU5ZVEhJTkcsIEFSSVNJTkcgRlJPTSwgT1IgSU4KICAgIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUuCiAgICAqLwogICAgLyoqCiAgICAgKiBEYXR0b3JybyBQbGF0ZSBSZXZlcmIgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCiAgICAgKgogICAgICogQmFzZWQgb24gSm9uIERhdHRvcnJvJ3MgMTk5NyBBRVMgcGFwZXIgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCiAgICAgKiBJbXBsZW1lbnRzIGEgaGlnaC1xdWFsaXR5IHBsYXRlIHJldmVyYiBhbGdvcml0aG0gd2l0aCBtb2R1bGF0ZWQgZGVsYXkgbGluZXMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2Njcm1hLnN0YW5mb3JkLmVkdS9+ZGF0dG9ycm8vRWZmZWN0RGVzaWduUGFydDEucGRmCiAgICAgKi8KICAgIGNsYXNzIERhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBfRGVsYXlzID0gW107CiAgICAgICAgX3BETGVuZ3RoOwogICAgICAgIF9wcmVEZWxheTsKICAgICAgICBfcERXcml0ZSA9IDA7CiAgICAgICAgX2xwMSA9IDAuMDsKICAgICAgICBfbHAyID0gMC4wOwogICAgICAgIF9scDMgPSAwLjA7CiAgICAgICAgX2V4Y1BoYXNlID0gMC4wOwogICAgICAgIF90YXBzOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBbInByZURlbGF5IiwgMCwgMCwgc2FtcGxlUmF0ZSAtIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiYmFuZHdpZHRoIiwgMC45OTk5LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMSIsIDAuNzUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiaW5wdXREaWZmdXNpb24yIiwgMC42MjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXkiLCAwLjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24xIiwgMC43LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkZWNheURpZmZ1c2lvbjIiLCAwLjUsIDAsIDAuOTk5OTk5LCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRhbXBpbmciLCAwLjAwNSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25SYXRlIiwgMC41LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImV4Y3Vyc2lvbkRlcHRoIiwgMC43LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbIndldCIsIDAuMywgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkcnkiLCAwLjYsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgXS5tYXAoKFtuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGVdKSA9PiAoewogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgbWluVmFsdWU6IG1pblZhbHVlLAogICAgICAgICAgICAgICAgbWF4VmFsdWU6IG1heFZhbHVlLAogICAgICAgICAgICAgICAgYXV0b21hdGlvblJhdGU6IGF1dG9tYXRpb25SYXRlLAogICAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgIC8vIFByZS1kZWxheSBpcyBhbHdheXMgb25lLXNlY29uZCBsb25nLCByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IDEyOC1jaHVuawogICAgICAgICAgICB0aGlzLl9wRExlbmd0aCA9IHNhbXBsZVJhdGUgKyAoMTI4IC0gKHNhbXBsZVJhdGUgJSAxMjgpKTsKICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3BETGVuZ3RoKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBkZWxheSBsaW5lcyB3aXRoIHNwZWNpZmllZCBsZW5ndGhzIChpbiBzZWNvbmRzKQogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAwLjAwNDc3MTM0NSwgMC4wMDM1OTUzMDksIDAuMDEyNzM0Nzg3LCAwLjAwOTMwNzQ4MywgMC4wMjI1Nzk4ODYsIDAuMTQ5NjI1MzQ5LCAwLjA2MDQ4MTgzOSwgMC4xMjQ5OTU4LCAwLjAzMDUwOTcyNywKICAgICAgICAgICAgICAgIDAuMTQxNjk1NTA4LCAwLjA4OTI0NDMxMywgMC4xMDYyODAwMzEsCiAgICAgICAgICAgIF0uZm9yRWFjaCgobGVuZ3RoKSA9PiB0aGlzLm1ha2VEZWxheShsZW5ndGgpKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0YXAgcG9zaXRpb25zIChpbiBzZWNvbmRzKSBmb3Igc3RlcmVvIG91dHB1dAogICAgICAgICAgICB0aGlzLl90YXBzID0gSW50MTZBcnJheS5mcm9tKFsKICAgICAgICAgICAgICAgIDAuMDA4OTM3ODcyLCAwLjA5OTkyOTQzOCwgMC4wNjQyNzg3NTQsIDAuMDY3MDY3NjM5LCAwLjA2Njg2NjAzMywgMC4wMDYyODMzOTEsIDAuMDM1ODE4Njg5LCAwLjAxMTg2MTE2MSwKICAgICAgICAgICAgICAgIDAuMTIxODcwOTA1LCAwLjA0MTI2MjA1NCwgMC4wODk4MTU1MywgMC4wNzA5MzE3NTYsIDAuMDExMjU2MzQyLCAwLjAwNDA2NTcyNCwKICAgICAgICAgICAgXSwgKGxlbmd0aCkgPT4gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBkZWxheSBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBsZW5ndGgKICAgICAgICAgKiBVc2VzIHBvd2VyLW9mLTIgc2l6aW5nIGZvciBlZmZpY2llbnQgd3JhcHBpbmcgd2l0aCBiaXR3aXNlIEFORAogICAgICAgICAqLwogICAgICAgIG1ha2VEZWxheShsZW5ndGgpIHsKICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgY29uc3QgbmV4dFBvdzIgPSAyICoqIE1hdGguY2VpbChNYXRoLmxvZzIobGVuKSk7CiAgICAgICAgICAgIHRoaXMuX0RlbGF5cy5wdXNoKFsKICAgICAgICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobmV4dFBvdzIpLAogICAgICAgICAgICAgICAgbGVuIC0gMSwgLy8gd3JpdGUgaW5kZXgKICAgICAgICAgICAgICAgIDAsIC8vIHJlYWQgaW5kZXgKICAgICAgICAgICAgICAgIG5leHRQb3cyIC0gMSwgLy8gbWFzayBmb3Igd3JhcHBpbmcKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFdyaXRlcyBhIHNhbXBsZSB0byBhIGRlbGF5IGxpbmUgYW5kIHJldHVybnMgdGhlIHdyaXR0ZW4gdmFsdWUKICAgICAgICAgKi8KICAgICAgICB3cml0ZURlbGF5KGluZGV4LCBkYXRhKSB7CiAgICAgICAgICAgIHJldHVybiAodGhpcy5fRGVsYXlzW2luZGV4XVswXVt0aGlzLl9EZWxheXNbaW5kZXhdWzFdXSA9IGRhdGEpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyB0aGUgY3VycmVudCBzYW1wbGUgZnJvbSBhIGRlbGF5IGxpbmUKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXkoaW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsyXV07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJlYWRzIGEgc2FtcGxlIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbgogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUF0KGluZGV4LCBvZmZzZXQpIHsKICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tpbmRleF07CiAgICAgICAgICAgIHJldHVybiBkWzBdWyhkWzJdICsgb2Zmc2V0KSAmIGRbM11dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSB3aXRoIGN1YmljIGludGVycG9sYXRpb24gYXQgYSBmcmFjdGlvbmFsIG9mZnNldAogICAgICAgICAqIFVzZXMgT2xsaSBOaWVtaXRhbG8ncyBvcHRpbWFsIGN1YmljIGludGVycG9sYXRpb24KICAgICAgICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm11c2ljZHNwLm9yZy9lbi9sYXRlc3QvT3RoZXIvNDktY3ViaWMtaW50ZXJwb2xsYXRpb24uaHRtbAogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUNBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICBjb25zdCBmcmFjID0gb2Zmc2V0IC0gfn5vZmZzZXQ7CiAgICAgICAgICAgIGxldCBpbnQgPSB+fm9mZnNldCArIGRbMl0gLSAxOwogICAgICAgICAgICBjb25zdCBtYXNrID0gZFszXTsKICAgICAgICAgICAgY29uc3QgeDAgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgxID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MiA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDMgPSBkWzBdW2ludCAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCBhID0gKDMgKiAoeDEgLSB4MikgLSB4MCArIHgzKSAvIDI7CiAgICAgICAgICAgIGNvbnN0IGIgPSAyICogeDIgKyB4MCAtICg1ICogeDEgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBjID0gKHgyIC0geDApIC8gMjsKICAgICAgICAgICAgcmV0dXJuICgoYSAqIGZyYWMgKyBiKSAqIGZyYWMgKyBjKSAqIGZyYWMgKyB4MTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUHJvY2VzcyBhdWRpbyBzYW1wbGVzCiAgICAgICAgICogRmlyc3QgaW5wdXQgd2lsbCBiZSBkb3dubWl4ZWQgdG8gbW9ubyBpZiBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IDIKICAgICAgICAgKiBPdXRwdXRzIHN0ZXJlbwogICAgICAgICAqLwogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IHBkID0gfn5wYXJhbWV0ZXJzLnByZURlbGF5WzBdOwogICAgICAgICAgICBjb25zdCBidyA9IHBhcmFtZXRlcnMuYmFuZHdpZHRoWzBdOwogICAgICAgICAgICBjb25zdCBmaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkYyA9IHBhcmFtZXRlcnMuZGVjYXlbMF07CiAgICAgICAgICAgIGNvbnN0IGZ0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjFbMF07CiAgICAgICAgICAgIGNvbnN0IHN0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjJbMF07CiAgICAgICAgICAgIGNvbnN0IGRwID0gMSAtIHBhcmFtZXRlcnMuZGFtcGluZ1swXTsKICAgICAgICAgICAgY29uc3QgZXggPSBwYXJhbWV0ZXJzLmV4Y3Vyc2lvblJhdGVbMF0gLyBzYW1wbGVSYXRlOwogICAgICAgICAgICBjb25zdCBlZCA9IChwYXJhbWV0ZXJzLmV4Y3Vyc2lvbkRlcHRoWzBdICogc2FtcGxlUmF0ZSkgLyAxMDAwOwogICAgICAgICAgICBjb25zdCB3ZSA9IHBhcmFtZXRlcnMud2V0WzBdICogMC42OyAvLyBsbyAmIHJvIGJvdGggbXVsdC4gYnkgMC42IGFueXdheXMKICAgICAgICAgICAgY29uc3QgZHIgPSBwYXJhbWV0ZXJzLmRyeVswXTsKICAgICAgICAgICAgLy8gV3JpdGUgdG8gcHJlZGVsYXkgYW5kIGRyeSBvdXRwdXQKICAgICAgICAgICAgaWYgKGlucHV0c1swXS5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxMjc7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXlbdGhpcy5fcERXcml0ZSArIGldID0gKGlucHV0c1swXVswXVtpXSArIGlucHV0c1swXVsxXVtpXSkgKiAwLjU7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gPSBpbnB1dHNbMF1bMV1baV0gKiBkcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpbnB1dHNbMF0ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuc2V0KGlucHV0c1swXVswXSwgdGhpcy5fcERXcml0ZSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzBdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBObyBpbnB1dDogdGhpcyBpcyB0aGUgbm9ybWFsIHN0YXRlIG9mIGFuIGlkbGUgcmV2ZXJiIGJ1cywgc28gd3JpdGUKICAgICAgICAgICAgICAgIC8vIHNpbGVuY2UgaW4gcGxhY2UgcmF0aGVyIHRoYW4gYWxsb2NhdGluZyBhIGJsb2NrIGV2ZXJ5IHF1YW50dW0uCiAgICAgICAgICAgICAgICB0aGlzLl9wcmVEZWxheS5maWxsKDAsIHRoaXMuX3BEV3JpdGUsIHRoaXMuX3BEV3JpdGUgKyAxMjgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgICAgd2hpbGUgKGkgPCAxMjgpIHsKICAgICAgICAgICAgICAgIGxldCBsbyA9IDAuMDsKICAgICAgICAgICAgICAgIGxldCBybyA9IDAuMDsKICAgICAgICAgICAgICAgIC8vIElucHV0IGxvdy1wYXNzIGZpbHRlciAoYmFuZHdpZHRoKQogICAgICAgICAgICAgICAgdGhpcy5fbHAxICs9IGJ3ICogKHRoaXMuX3ByZURlbGF5Wyh0aGlzLl9wRExlbmd0aCArIHRoaXMuX3BEV3JpdGUgLSBwZCArIGkpICUgdGhpcy5fcERMZW5ndGhdIC0gdGhpcy5fbHAxKTsKICAgICAgICAgICAgICAgIC8vIFByZS10YW5rIGRpZmZ1c2lvbiAoNCBhbGwtcGFzcyBmaWx0ZXJzKQogICAgICAgICAgICAgICAgbGV0IHByZSA9IHRoaXMud3JpdGVEZWxheSgwLCB0aGlzLl9scDEgLSBmaSAqIHRoaXMucmVhZERlbGF5KDApKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgxLCBmaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgxKSkgKyB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMiwgZmkgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgxKSAtIHNpICogdGhpcy5yZWFkRGVsYXkoMikpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDMsIHNpICogKHByZSAtIHRoaXMucmVhZERlbGF5KDMpKSArIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gc2kgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgzKTsKICAgICAgICAgICAgICAgIC8vIE1vZHVsYXRlZCBleGN1cnNpb25zIGZvciBjaG9ydXMgZWZmZWN0CiAgICAgICAgICAgICAgICBjb25zdCBleGMgPSBlZCAqICgxICsgTWF0aC5jb3ModGhpcy5fZXhjUGhhc2UgKiA2LjI4KSk7CiAgICAgICAgICAgICAgICBjb25zdCBleGMyID0gZWQgKiAoMSArIE1hdGguc2luKHRoaXMuX2V4Y1BoYXNlICogNi4yODQ3KSk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IGxvb3AgKHRhbmsgZGlmZnVzZSAxIC0+IGxvbmcgZGVsYXkgMSAtPiBkYW1wIDEgLT4gdGFuayBkaWZmdXNlIDIgLT4gbG9uZyBkZWxheSAyKQogICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDExKSArIGZ0ICogdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoNSwgdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDIgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoNSkgLSB0aGlzLl9scDIpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg2LCBkYyAqIHRoaXMuX2xwMiAtIHN0ICogdGhpcy5yZWFkRGVsYXkoNikpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDcsIHRoaXMucmVhZERlbGF5KDYpICsgc3QgKiB0ZW1wKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGxvb3AgKHRhbmsgZGlmZnVzZSAzIC0+IGxvbmcgZGVsYXkgMyAtPiBkYW1wIDIgLT4gdGFuayBkaWZmdXNlIDQgLT4gbG9uZyBkZWxheSA0KQogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg4LCBzcGxpdCArIGRjICogdGhpcy5yZWFkRGVsYXkoNykgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDgsIGV4YzIpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg5LCB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDMgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoOSkgLSB0aGlzLl9scDMpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSgxMCwgZGMgKiB0aGlzLl9scDMgLSBzdCAqIHRoaXMucmVhZERlbGF5KDEwKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoMTEsIHRoaXMucmVhZERlbGF5KDEwKSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBsbyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg5LCB0aGlzLl90YXBzWzBdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDEwLCB0aGlzLl90YXBzWzJdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbM10pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzRdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s1XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbNl0pOwogICAgICAgICAgICAgICAgLy8gUmlnaHQgb3V0cHV0OiBzdW0gb2YgdGFwcyBmcm9tIGJvdGggbG9vcHMKICAgICAgICAgICAgICAgIHJvID0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDUsIHRoaXMuX3RhcHNbN10pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzhdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s5XSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbMTBdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1sxMl0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMSwgdGhpcy5fdGFwc1sxM10pOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSArPSBsbyAqIHdlOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVsxXVtpXSArPSBybyAqIHdlOwogICAgICAgICAgICAgICAgdGhpcy5fZXhjUGhhc2UgKz0gZXg7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIGFsbCBkZWxheSBsaW5lIGluZGljZXMKICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5fRGVsYXlzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tqXTsKICAgICAgICAgICAgICAgICAgICBkWzFdID0gKGRbMV0gKyAxKSAmIGRbM107CiAgICAgICAgICAgICAgICAgICAgZFsyXSA9IChkWzJdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmVEZWxheSBpbmRleAogICAgICAgICAgICB0aGlzLl9wRFdyaXRlID0gKHRoaXMuX3BEV3JpdGUgKyAxMjgpICUgdGhpcy5fcERMZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJkYXR0b3Jyby1yZXZlcmIiLCBEYXR0b3Jyb1JldmVyYlByb2Nlc3Nvcik7CiAgICBjb25zb2xlLmxvZygiRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgcmVnaXN0ZXJlZCIpOwoKICAgIGV4cG9ydHMuRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgPSBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0dG9ycm8tcmV2ZXJiLWJ1bmRsZS5qcy5tYXAK`;exports.default=e;
1
+ var e=`data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoqIFRlcm1pbmFsIHJldGlyZW1lbnQgaXMgZGlzdGluY3QgZnJvbSB0ZW1wb3JhcmlseSBsb3NpbmcgYW4gaW5wdXQgb3IgYnlwYXNzaW5nIGFuIGVmZmVjdC4gKi8KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRWZmZWN0UHJvY2Vzc29yKG5hbWUsIFByb2Nlc3NvcikgewogICAgICAgIGNsYXNzIE93bmVkRWZmZWN0UHJvY2Vzc29yIGV4dGVuZHMgUHJvY2Vzc29yIHsKICAgICAgICAgICAgZGlzcG9zZWQgPSBmYWxzZTsKICAgICAgICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykgewogICAgICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgICAgICB0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSAiY2Fjb3Bob255OmRpc3Bvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKCJjYWNvcGhvbnk6ZGlzcG9zZWQiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQuY2xvc2UoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kaXNwb3NlZCAmJiBzdXBlci5wcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVnaXN0ZXJQcm9jZXNzb3IobmFtZSwgT3duZWRFZmZlY3RQcm9jZXNzb3IpOwogICAgfQoKICAgIC8qKgogICAgICogRGF0dG9ycm8gUGxhdGUgUmV2ZXJiIEF1ZGlvV29ya2xldFByb2Nlc3NvcgogICAgICoKICAgICAqIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyICJFZmZlY3QgRGVzaWduIFBhcnQgMTogUmV2ZXJiZXJhdG9yIGFuZCBPdGhlciBGaWx0ZXJzIgogICAgICogSW1wbGVtZW50cyBhIGhpZ2gtcXVhbGl0eSBwbGF0ZSByZXZlcmIgYWxnb3JpdGhtIHdpdGggbW9kdWxhdGVkIGRlbGF5IGxpbmVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9jY3JtYS5zdGFuZm9yZC5lZHUvfmRhdHRvcnJvL0VmZmVjdERlc2lnblBhcnQxLnBkZgogICAgICovCiAgICBjbGFzcyBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgX0RlbGF5cyA9IFtdOwogICAgICAgIF9wRExlbmd0aDsKICAgICAgICBfcHJlRGVsYXk7CiAgICAgICAgX3BEV3JpdGUgPSAwOwogICAgICAgIF9scDEgPSAwLjA7CiAgICAgICAgX2xwMiA9IDAuMDsKICAgICAgICBfbHAzID0gMC4wOwogICAgICAgIF9leGNQaGFzZSA9IDAuMDsKICAgICAgICBfdGFwczsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgWyJwcmVEZWxheSIsIDAsIDAsIHNhbXBsZVJhdGUgLSAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImJhbmR3aWR0aCIsIDAuOTk5OSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJpbnB1dERpZmZ1c2lvbjEiLCAwLjc1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMiIsIDAuNjI1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5IiwgMC41LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5RGlmZnVzaW9uMSIsIDAuNywgMCwgMC45OTk5OTksICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24yIiwgMC41LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkYW1waW5nIiwgMC4wMDUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZXhjdXJzaW9uUmF0ZSIsIDAuNSwgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25EZXB0aCIsIDAuNywgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJ3ZXQiLCAwLjMsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZHJ5IiwgMC42LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgIF0ubWFwKChbbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlXSkgPT4gKHsKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSwKICAgICAgICAgICAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSwKICAgICAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlOiBhdXRvbWF0aW9uUmF0ZSwKICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7CiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAvLyBQcmUtZGVsYXkgaXMgYWx3YXlzIG9uZS1zZWNvbmQgbG9uZywgcm91bmRlZCB0byB0aGUgbmVhcmVzdCAxMjgtY2h1bmsKICAgICAgICAgICAgdGhpcy5fcERMZW5ndGggPSBzYW1wbGVSYXRlICsgKDEyOCAtIChzYW1wbGVSYXRlICUgMTI4KSk7CiAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9wRExlbmd0aCk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZGVsYXkgbGluZXMgd2l0aCBzcGVjaWZpZWQgbGVuZ3RocyAoaW4gc2Vjb25kcykKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgMC4wMDQ3NzEzNDUsIDAuMDAzNTk1MzA5LCAwLjAxMjczNDc4NywgMC4wMDkzMDc0ODMsIDAuMDIyNTc5ODg2LCAwLjE0OTYyNTM0OSwgMC4wNjA0ODE4MzksIDAuMTI0OTk1OCwgMC4wMzA1MDk3MjcsCiAgICAgICAgICAgICAgICAwLjE0MTY5NTUwOCwgMC4wODkyNDQzMTMsIDAuMTA2MjgwMDMxLAogICAgICAgICAgICBdLmZvckVhY2goKGxlbmd0aCkgPT4gdGhpcy5tYWtlRGVsYXkobGVuZ3RoKSk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGFwIHBvc2l0aW9ucyAoaW4gc2Vjb25kcykgZm9yIHN0ZXJlbyBvdXRwdXQKICAgICAgICAgICAgdGhpcy5fdGFwcyA9IEludDE2QXJyYXkuZnJvbShbCiAgICAgICAgICAgICAgICAwLjAwODkzNzg3MiwgMC4wOTk5Mjk0MzgsIDAuMDY0Mjc4NzU0LCAwLjA2NzA2NzYzOSwgMC4wNjY4NjYwMzMsIDAuMDA2MjgzMzkxLCAwLjAzNTgxODY4OSwgMC4wMTE4NjExNjEsCiAgICAgICAgICAgICAgICAwLjEyMTg3MDkwNSwgMC4wNDEyNjIwNTQsIDAuMDg5ODE1NTMsIDAuMDcwOTMxNzU2LCAwLjAxMTI1NjM0MiwgMC4wMDQwNjU3MjQsCiAgICAgICAgICAgIF0sIChsZW5ndGgpID0+IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSkpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBDcmVhdGVzIGEgZGVsYXkgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGVuZ3RoCiAgICAgICAgICogVXNlcyBwb3dlci1vZi0yIHNpemluZyBmb3IgZWZmaWNpZW50IHdyYXBwaW5nIHdpdGggYml0d2lzZSBBTkQKICAgICAgICAgKi8KICAgICAgICBtYWtlRGVsYXkobGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSk7CiAgICAgICAgICAgIGNvbnN0IG5leHRQb3cyID0gMiAqKiBNYXRoLmNlaWwoTWF0aC5sb2cyKGxlbikpOwogICAgICAgICAgICB0aGlzLl9EZWxheXMucHVzaChbCiAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG5leHRQb3cyKSwKICAgICAgICAgICAgICAgIGxlbiAtIDEsIC8vIHdyaXRlIGluZGV4CiAgICAgICAgICAgICAgICAwLCAvLyByZWFkIGluZGV4CiAgICAgICAgICAgICAgICBuZXh0UG93MiAtIDEsIC8vIG1hc2sgZm9yIHdyYXBwaW5nCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBXcml0ZXMgYSBzYW1wbGUgdG8gYSBkZWxheSBsaW5lIGFuZCByZXR1cm5zIHRoZSB3cml0dGVuIHZhbHVlCiAgICAgICAgICovCiAgICAgICAgd3JpdGVEZWxheShpbmRleCwgZGF0YSkgewogICAgICAgICAgICByZXR1cm4gKHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsxXV0gPSBkYXRhKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgdGhlIGN1cnJlbnQgc2FtcGxlIGZyb20gYSBkZWxheSBsaW5lCiAgICAgICAgICovCiAgICAgICAgcmVhZERlbGF5KGluZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9EZWxheXNbaW5kZXhdWzBdW3RoaXMuX0RlbGF5c1tpbmRleF1bMl1dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSBhdCBhIHNwZWNpZmljIG9mZnNldCBmcm9tIHRoZSBjdXJyZW50IHJlYWQgcG9zaXRpb24KICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICByZXR1cm4gZFswXVsoZFsyXSArIG9mZnNldCkgJiBkWzNdXTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgYSBzYW1wbGUgd2l0aCBjdWJpYyBpbnRlcnBvbGF0aW9uIGF0IGEgZnJhY3Rpb25hbCBvZmZzZXQKICAgICAgICAgKiBVc2VzIE9sbGkgTmllbWl0YWxvJ3Mgb3B0aW1hbCBjdWJpYyBpbnRlcnBvbGF0aW9uCiAgICAgICAgICogQHNlZSBodHRwczovL3d3dy5tdXNpY2RzcC5vcmcvZW4vbGF0ZXN0L090aGVyLzQ5LWN1YmljLWludGVycG9sbGF0aW9uLmh0bWwKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlDQXQoaW5kZXgsIG9mZnNldCkgewogICAgICAgICAgICBjb25zdCBkID0gdGhpcy5fRGVsYXlzW2luZGV4XTsKICAgICAgICAgICAgY29uc3QgZnJhYyA9IG9mZnNldCAtIH5+b2Zmc2V0OwogICAgICAgICAgICBsZXQgaW50ID0gfn5vZmZzZXQgKyBkWzJdIC0gMTsKICAgICAgICAgICAgY29uc3QgbWFzayA9IGRbM107CiAgICAgICAgICAgIGNvbnN0IHgwID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MSA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDIgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgzID0gZFswXVtpbnQgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgYSA9ICgzICogKHgxIC0geDIpIC0geDAgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBiID0gMiAqIHgyICsgeDAgLSAoNSAqIHgxICsgeDMpIC8gMjsKICAgICAgICAgICAgY29uc3QgYyA9ICh4MiAtIHgwKSAvIDI7CiAgICAgICAgICAgIHJldHVybiAoKGEgKiBmcmFjICsgYikgKiBmcmFjICsgYykgKiBmcmFjICsgeDE7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFByb2Nlc3MgYXVkaW8gc2FtcGxlcwogICAgICAgICAqIEZpcnN0IGlucHV0IHdpbGwgYmUgZG93bm1peGVkIHRvIG1vbm8gaWYgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCAyCiAgICAgICAgICogT3V0cHV0cyBzdGVyZW8KICAgICAgICAgKi8KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBwZCA9IH5+cGFyYW1ldGVycy5wcmVEZWxheVswXTsKICAgICAgICAgICAgY29uc3QgYncgPSBwYXJhbWV0ZXJzLmJhbmR3aWR0aFswXTsKICAgICAgICAgICAgY29uc3QgZmkgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMVswXTsKICAgICAgICAgICAgY29uc3Qgc2kgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMlswXTsKICAgICAgICAgICAgY29uc3QgZGMgPSBwYXJhbWV0ZXJzLmRlY2F5WzBdOwogICAgICAgICAgICBjb25zdCBmdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkcCA9IDEgLSBwYXJhbWV0ZXJzLmRhbXBpbmdbMF07CiAgICAgICAgICAgIGNvbnN0IGV4ID0gcGFyYW1ldGVycy5leGN1cnNpb25SYXRlWzBdIC8gc2FtcGxlUmF0ZTsKICAgICAgICAgICAgY29uc3QgZWQgPSAocGFyYW1ldGVycy5leGN1cnNpb25EZXB0aFswXSAqIHNhbXBsZVJhdGUpIC8gMTAwMDsKICAgICAgICAgICAgY29uc3Qgd2UgPSBwYXJhbWV0ZXJzLndldFswXSAqIDAuNjsgLy8gbG8gJiBybyBib3RoIG11bHQuIGJ5IDAuNiBhbnl3YXlzCiAgICAgICAgICAgIGNvbnN0IGRyID0gcGFyYW1ldGVycy5kcnlbMF07CiAgICAgICAgICAgIC8vIFdyaXRlIHRvIHByZWRlbGF5IGFuZCBkcnkgb3V0cHV0CiAgICAgICAgICAgIGlmIChpbnB1dHNbMF0ubGVuZ3RoID09PSAyKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5W3RoaXMuX3BEV3JpdGUgKyBpXSA9IChpbnB1dHNbMF1bMF1baV0gKyBpbnB1dHNbMF1bMV1baV0pICogMC41OwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBpbnB1dHNbMF1bMF1baV0gKiBkcjsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzFdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXRzWzBdLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5LnNldChpbnB1dHNbMF1bMF0sIHRoaXMuX3BEV3JpdGUpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDEyNzsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzBdW2ldID0gb3V0cHV0c1swXVsxXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm8gaW5wdXQ6IHRoaXMgaXMgdGhlIG5vcm1hbCBzdGF0ZSBvZiBhbiBpZGxlIHJldmVyYiBidXMsIHNvIHdyaXRlCiAgICAgICAgICAgICAgICAvLyBzaWxlbmNlIGluIHBsYWNlIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgYSBibG9jayBldmVyeSBxdWFudHVtLgogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuZmlsbCgwLCB0aGlzLl9wRFdyaXRlLCB0aGlzLl9wRFdyaXRlICsgMTI4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgMTI4KSB7CiAgICAgICAgICAgICAgICBsZXQgbG8gPSAwLjA7CiAgICAgICAgICAgICAgICBsZXQgcm8gPSAwLjA7CiAgICAgICAgICAgICAgICAvLyBJbnB1dCBsb3ctcGFzcyBmaWx0ZXIgKGJhbmR3aWR0aCkKICAgICAgICAgICAgICAgIHRoaXMuX2xwMSArPSBidyAqICh0aGlzLl9wcmVEZWxheVsodGhpcy5fcERMZW5ndGggKyB0aGlzLl9wRFdyaXRlIC0gcGQgKyBpKSAlIHRoaXMuX3BETGVuZ3RoXSAtIHRoaXMuX2xwMSk7CiAgICAgICAgICAgICAgICAvLyBQcmUtdGFuayBkaWZmdXNpb24gKDQgYWxsLXBhc3MgZmlsdGVycykKICAgICAgICAgICAgICAgIGxldCBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMCwgdGhpcy5fbHAxIC0gZmkgKiB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMSwgZmkgKiAocHJlIC0gdGhpcy5yZWFkRGVsYXkoMSkpICsgdGhpcy5yZWFkRGVsYXkoMCkpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDIsIGZpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMSkgLSBzaSAqIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgzLCBzaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgzKSkgKyB0aGlzLnJlYWREZWxheSgyKSk7CiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdCA9IHNpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMyk7CiAgICAgICAgICAgICAgICAvLyBNb2R1bGF0ZWQgZXhjdXJzaW9ucyBmb3IgY2hvcnVzIGVmZmVjdAogICAgICAgICAgICAgICAgY29uc3QgZXhjID0gZWQgKiAoMSArIE1hdGguY29zKHRoaXMuX2V4Y1BoYXNlICogNi4yOCkpOwogICAgICAgICAgICAgICAgY29uc3QgZXhjMiA9IGVkICogKDEgKyBNYXRoLnNpbih0aGlzLl9leGNQaGFzZSAqIDYuMjg0NykpOwogICAgICAgICAgICAgICAgLy8gTGVmdCBsb29wICh0YW5rIGRpZmZ1c2UgMSAtPiBsb25nIGRlbGF5IDEgLT4gZGFtcCAxIC0+IHRhbmsgZGlmZnVzZSAyIC0+IGxvbmcgZGVsYXkgMikKICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy53cml0ZURlbGF5KDQsIHNwbGl0ICsgZGMgKiB0aGlzLnJlYWREZWxheSgxMSkgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDUsIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAyICs9IGRwICogKHRoaXMucmVhZERlbGF5KDUpIC0gdGhpcy5fbHAyKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNiwgZGMgKiB0aGlzLl9scDIgLSBzdCAqIHRoaXMucmVhZERlbGF5KDYpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg3LCB0aGlzLnJlYWREZWxheSg2KSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBSaWdodCBsb29wICh0YW5rIGRpZmZ1c2UgMyAtPiBsb25nIGRlbGF5IDMgLT4gZGFtcCAyIC0+IHRhbmsgZGlmZnVzZSA0IC0+IGxvbmcgZGVsYXkgNCkKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoOCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDcpICsgZnQgKiB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoOSwgdGhpcy5yZWFkRGVsYXlDQXQoOCwgZXhjMikgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAzICs9IGRwICogKHRoaXMucmVhZERlbGF5KDkpIC0gdGhpcy5fbHAzKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoMTAsIGRjICogdGhpcy5fbHAzIC0gc3QgKiB0aGlzLnJlYWREZWxheSgxMCkpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDExLCB0aGlzLnJlYWREZWxheSgxMCkgKyBzdCAqIHRlbXApOwogICAgICAgICAgICAgICAgLy8gTGVmdCBvdXRwdXQ6IHN1bSBvZiB0YXBzIGZyb20gYm90aCBsb29wcwogICAgICAgICAgICAgICAgbG8gPQogICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1swXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1syXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDExLCB0aGlzLl90YXBzWzNdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s0XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbNV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzZdKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBybyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzddKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s4XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbOV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzEwXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMTFdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTAsIHRoaXMuX3RhcHNbMTJdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbMTNdKTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gKz0gbG8gKiB3ZTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gKz0gcm8gKiB3ZTsKICAgICAgICAgICAgICAgIHRoaXMuX2V4Y1BoYXNlICs9IGV4OwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBhbGwgZGVsYXkgbGluZSBpbmRpY2VzCiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuX0RlbGF5cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbal07CiAgICAgICAgICAgICAgICAgICAgZFsxXSA9IChkWzFdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgICAgIGRbMl0gPSAoZFsyXSArIDEpICYgZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBVcGRhdGUgcHJlRGVsYXkgaW5kZXgKICAgICAgICAgICAgdGhpcy5fcERXcml0ZSA9ICh0aGlzLl9wRFdyaXRlICsgMTI4KSAlIHRoaXMuX3BETGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiZGF0dG9ycm8tcmV2ZXJiIiwgRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IpOwogICAgY29uc29sZS5sb2coIkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIHJlZ2lzdGVyZWQiKTsKCiAgICBleHBvcnRzLkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yID0gRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdHRvcnJvLXJldmVyYi1idW5kbGUuanMubWFwCg==`;exports.default=e;
2
2
  //# sourceMappingURL=dattorro-reverb-bundle.js_url.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dattorro-reverb-bundle.js_url.cjs","names":[],"sources":["../../src/bundles/dattorro-reverb-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoKICAgIERhdHRvcnJvIFJldmVyYiBBdWRpb1dvcmtsZXQgSW1wbGVtZW50YXRpb24KICAgIE9yaWdpbmFsIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gYnkgS2jDtGkgTmd1eeG7hW4gKGtob2luKQogICAgaHR0cHM6Ly9naXRodWIuY29tL2tob2luL0RhdHRvcnJvUmV2ZXJiTm9kZQoKICAgIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyOgogICAgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCgogICAgSW4ganVyaXNkaWN0aW9ucyB0aGF0IHJlY29nbml6ZSBjb3B5cmlnaHQgbGF3cywgdGhpcyBzb2Z0d2FyZSBpcyB0bwogICAgYmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORC4KICAgIFRIRSBBVVRIT1IoUykgU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IgQU5ZVEhJTkcsIEFSSVNJTkcgRlJPTSwgT1IgSU4KICAgIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUuCiAgICAqLwogICAgLyoqCiAgICAgKiBEYXR0b3JybyBQbGF0ZSBSZXZlcmIgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCiAgICAgKgogICAgICogQmFzZWQgb24gSm9uIERhdHRvcnJvJ3MgMTk5NyBBRVMgcGFwZXIgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCiAgICAgKiBJbXBsZW1lbnRzIGEgaGlnaC1xdWFsaXR5IHBsYXRlIHJldmVyYiBhbGdvcml0aG0gd2l0aCBtb2R1bGF0ZWQgZGVsYXkgbGluZXMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2Njcm1hLnN0YW5mb3JkLmVkdS9+ZGF0dG9ycm8vRWZmZWN0RGVzaWduUGFydDEucGRmCiAgICAgKi8KICAgIGNsYXNzIERhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBfRGVsYXlzID0gW107CiAgICAgICAgX3BETGVuZ3RoOwogICAgICAgIF9wcmVEZWxheTsKICAgICAgICBfcERXcml0ZSA9IDA7CiAgICAgICAgX2xwMSA9IDAuMDsKICAgICAgICBfbHAyID0gMC4wOwogICAgICAgIF9scDMgPSAwLjA7CiAgICAgICAgX2V4Y1BoYXNlID0gMC4wOwogICAgICAgIF90YXBzOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBbInByZURlbGF5IiwgMCwgMCwgc2FtcGxlUmF0ZSAtIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiYmFuZHdpZHRoIiwgMC45OTk5LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMSIsIDAuNzUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiaW5wdXREaWZmdXNpb24yIiwgMC42MjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXkiLCAwLjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24xIiwgMC43LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkZWNheURpZmZ1c2lvbjIiLCAwLjUsIDAsIDAuOTk5OTk5LCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRhbXBpbmciLCAwLjAwNSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25SYXRlIiwgMC41LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImV4Y3Vyc2lvbkRlcHRoIiwgMC43LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbIndldCIsIDAuMywgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkcnkiLCAwLjYsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgXS5tYXAoKFtuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGVdKSA9PiAoewogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgbWluVmFsdWU6IG1pblZhbHVlLAogICAgICAgICAgICAgICAgbWF4VmFsdWU6IG1heFZhbHVlLAogICAgICAgICAgICAgICAgYXV0b21hdGlvblJhdGU6IGF1dG9tYXRpb25SYXRlLAogICAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgIC8vIFByZS1kZWxheSBpcyBhbHdheXMgb25lLXNlY29uZCBsb25nLCByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IDEyOC1jaHVuawogICAgICAgICAgICB0aGlzLl9wRExlbmd0aCA9IHNhbXBsZVJhdGUgKyAoMTI4IC0gKHNhbXBsZVJhdGUgJSAxMjgpKTsKICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3BETGVuZ3RoKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBkZWxheSBsaW5lcyB3aXRoIHNwZWNpZmllZCBsZW5ndGhzIChpbiBzZWNvbmRzKQogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAwLjAwNDc3MTM0NSwgMC4wMDM1OTUzMDksIDAuMDEyNzM0Nzg3LCAwLjAwOTMwNzQ4MywgMC4wMjI1Nzk4ODYsIDAuMTQ5NjI1MzQ5LCAwLjA2MDQ4MTgzOSwgMC4xMjQ5OTU4LCAwLjAzMDUwOTcyNywKICAgICAgICAgICAgICAgIDAuMTQxNjk1NTA4LCAwLjA4OTI0NDMxMywgMC4xMDYyODAwMzEsCiAgICAgICAgICAgIF0uZm9yRWFjaCgobGVuZ3RoKSA9PiB0aGlzLm1ha2VEZWxheShsZW5ndGgpKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0YXAgcG9zaXRpb25zIChpbiBzZWNvbmRzKSBmb3Igc3RlcmVvIG91dHB1dAogICAgICAgICAgICB0aGlzLl90YXBzID0gSW50MTZBcnJheS5mcm9tKFsKICAgICAgICAgICAgICAgIDAuMDA4OTM3ODcyLCAwLjA5OTkyOTQzOCwgMC4wNjQyNzg3NTQsIDAuMDY3MDY3NjM5LCAwLjA2Njg2NjAzMywgMC4wMDYyODMzOTEsIDAuMDM1ODE4Njg5LCAwLjAxMTg2MTE2MSwKICAgICAgICAgICAgICAgIDAuMTIxODcwOTA1LCAwLjA0MTI2MjA1NCwgMC4wODk4MTU1MywgMC4wNzA5MzE3NTYsIDAuMDExMjU2MzQyLCAwLjAwNDA2NTcyNCwKICAgICAgICAgICAgXSwgKGxlbmd0aCkgPT4gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBkZWxheSBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBsZW5ndGgKICAgICAgICAgKiBVc2VzIHBvd2VyLW9mLTIgc2l6aW5nIGZvciBlZmZpY2llbnQgd3JhcHBpbmcgd2l0aCBiaXR3aXNlIEFORAogICAgICAgICAqLwogICAgICAgIG1ha2VEZWxheShsZW5ndGgpIHsKICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgY29uc3QgbmV4dFBvdzIgPSAyICoqIE1hdGguY2VpbChNYXRoLmxvZzIobGVuKSk7CiAgICAgICAgICAgIHRoaXMuX0RlbGF5cy5wdXNoKFsKICAgICAgICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobmV4dFBvdzIpLAogICAgICAgICAgICAgICAgbGVuIC0gMSwgLy8gd3JpdGUgaW5kZXgKICAgICAgICAgICAgICAgIDAsIC8vIHJlYWQgaW5kZXgKICAgICAgICAgICAgICAgIG5leHRQb3cyIC0gMSwgLy8gbWFzayBmb3Igd3JhcHBpbmcKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFdyaXRlcyBhIHNhbXBsZSB0byBhIGRlbGF5IGxpbmUgYW5kIHJldHVybnMgdGhlIHdyaXR0ZW4gdmFsdWUKICAgICAgICAgKi8KICAgICAgICB3cml0ZURlbGF5KGluZGV4LCBkYXRhKSB7CiAgICAgICAgICAgIHJldHVybiAodGhpcy5fRGVsYXlzW2luZGV4XVswXVt0aGlzLl9EZWxheXNbaW5kZXhdWzFdXSA9IGRhdGEpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyB0aGUgY3VycmVudCBzYW1wbGUgZnJvbSBhIGRlbGF5IGxpbmUKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXkoaW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsyXV07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJlYWRzIGEgc2FtcGxlIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbgogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUF0KGluZGV4LCBvZmZzZXQpIHsKICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tpbmRleF07CiAgICAgICAgICAgIHJldHVybiBkWzBdWyhkWzJdICsgb2Zmc2V0KSAmIGRbM11dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSB3aXRoIGN1YmljIGludGVycG9sYXRpb24gYXQgYSBmcmFjdGlvbmFsIG9mZnNldAogICAgICAgICAqIFVzZXMgT2xsaSBOaWVtaXRhbG8ncyBvcHRpbWFsIGN1YmljIGludGVycG9sYXRpb24KICAgICAgICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm11c2ljZHNwLm9yZy9lbi9sYXRlc3QvT3RoZXIvNDktY3ViaWMtaW50ZXJwb2xsYXRpb24uaHRtbAogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUNBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICBjb25zdCBmcmFjID0gb2Zmc2V0IC0gfn5vZmZzZXQ7CiAgICAgICAgICAgIGxldCBpbnQgPSB+fm9mZnNldCArIGRbMl0gLSAxOwogICAgICAgICAgICBjb25zdCBtYXNrID0gZFszXTsKICAgICAgICAgICAgY29uc3QgeDAgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgxID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MiA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDMgPSBkWzBdW2ludCAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCBhID0gKDMgKiAoeDEgLSB4MikgLSB4MCArIHgzKSAvIDI7CiAgICAgICAgICAgIGNvbnN0IGIgPSAyICogeDIgKyB4MCAtICg1ICogeDEgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBjID0gKHgyIC0geDApIC8gMjsKICAgICAgICAgICAgcmV0dXJuICgoYSAqIGZyYWMgKyBiKSAqIGZyYWMgKyBjKSAqIGZyYWMgKyB4MTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUHJvY2VzcyBhdWRpbyBzYW1wbGVzCiAgICAgICAgICogRmlyc3QgaW5wdXQgd2lsbCBiZSBkb3dubWl4ZWQgdG8gbW9ubyBpZiBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IDIKICAgICAgICAgKiBPdXRwdXRzIHN0ZXJlbwogICAgICAgICAqLwogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IHBkID0gfn5wYXJhbWV0ZXJzLnByZURlbGF5WzBdOwogICAgICAgICAgICBjb25zdCBidyA9IHBhcmFtZXRlcnMuYmFuZHdpZHRoWzBdOwogICAgICAgICAgICBjb25zdCBmaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkYyA9IHBhcmFtZXRlcnMuZGVjYXlbMF07CiAgICAgICAgICAgIGNvbnN0IGZ0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjFbMF07CiAgICAgICAgICAgIGNvbnN0IHN0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjJbMF07CiAgICAgICAgICAgIGNvbnN0IGRwID0gMSAtIHBhcmFtZXRlcnMuZGFtcGluZ1swXTsKICAgICAgICAgICAgY29uc3QgZXggPSBwYXJhbWV0ZXJzLmV4Y3Vyc2lvblJhdGVbMF0gLyBzYW1wbGVSYXRlOwogICAgICAgICAgICBjb25zdCBlZCA9IChwYXJhbWV0ZXJzLmV4Y3Vyc2lvbkRlcHRoWzBdICogc2FtcGxlUmF0ZSkgLyAxMDAwOwogICAgICAgICAgICBjb25zdCB3ZSA9IHBhcmFtZXRlcnMud2V0WzBdICogMC42OyAvLyBsbyAmIHJvIGJvdGggbXVsdC4gYnkgMC42IGFueXdheXMKICAgICAgICAgICAgY29uc3QgZHIgPSBwYXJhbWV0ZXJzLmRyeVswXTsKICAgICAgICAgICAgLy8gV3JpdGUgdG8gcHJlZGVsYXkgYW5kIGRyeSBvdXRwdXQKICAgICAgICAgICAgaWYgKGlucHV0c1swXS5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxMjc7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXlbdGhpcy5fcERXcml0ZSArIGldID0gKGlucHV0c1swXVswXVtpXSArIGlucHV0c1swXVsxXVtpXSkgKiAwLjU7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gPSBpbnB1dHNbMF1bMV1baV0gKiBkcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpbnB1dHNbMF0ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuc2V0KGlucHV0c1swXVswXSwgdGhpcy5fcERXcml0ZSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzBdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBObyBpbnB1dDogdGhpcyBpcyB0aGUgbm9ybWFsIHN0YXRlIG9mIGFuIGlkbGUgcmV2ZXJiIGJ1cywgc28gd3JpdGUKICAgICAgICAgICAgICAgIC8vIHNpbGVuY2UgaW4gcGxhY2UgcmF0aGVyIHRoYW4gYWxsb2NhdGluZyBhIGJsb2NrIGV2ZXJ5IHF1YW50dW0uCiAgICAgICAgICAgICAgICB0aGlzLl9wcmVEZWxheS5maWxsKDAsIHRoaXMuX3BEV3JpdGUsIHRoaXMuX3BEV3JpdGUgKyAxMjgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgICAgd2hpbGUgKGkgPCAxMjgpIHsKICAgICAgICAgICAgICAgIGxldCBsbyA9IDAuMDsKICAgICAgICAgICAgICAgIGxldCBybyA9IDAuMDsKICAgICAgICAgICAgICAgIC8vIElucHV0IGxvdy1wYXNzIGZpbHRlciAoYmFuZHdpZHRoKQogICAgICAgICAgICAgICAgdGhpcy5fbHAxICs9IGJ3ICogKHRoaXMuX3ByZURlbGF5Wyh0aGlzLl9wRExlbmd0aCArIHRoaXMuX3BEV3JpdGUgLSBwZCArIGkpICUgdGhpcy5fcERMZW5ndGhdIC0gdGhpcy5fbHAxKTsKICAgICAgICAgICAgICAgIC8vIFByZS10YW5rIGRpZmZ1c2lvbiAoNCBhbGwtcGFzcyBmaWx0ZXJzKQogICAgICAgICAgICAgICAgbGV0IHByZSA9IHRoaXMud3JpdGVEZWxheSgwLCB0aGlzLl9scDEgLSBmaSAqIHRoaXMucmVhZERlbGF5KDApKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgxLCBmaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgxKSkgKyB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMiwgZmkgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgxKSAtIHNpICogdGhpcy5yZWFkRGVsYXkoMikpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDMsIHNpICogKHByZSAtIHRoaXMucmVhZERlbGF5KDMpKSArIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gc2kgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgzKTsKICAgICAgICAgICAgICAgIC8vIE1vZHVsYXRlZCBleGN1cnNpb25zIGZvciBjaG9ydXMgZWZmZWN0CiAgICAgICAgICAgICAgICBjb25zdCBleGMgPSBlZCAqICgxICsgTWF0aC5jb3ModGhpcy5fZXhjUGhhc2UgKiA2LjI4KSk7CiAgICAgICAgICAgICAgICBjb25zdCBleGMyID0gZWQgKiAoMSArIE1hdGguc2luKHRoaXMuX2V4Y1BoYXNlICogNi4yODQ3KSk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IGxvb3AgKHRhbmsgZGlmZnVzZSAxIC0+IGxvbmcgZGVsYXkgMSAtPiBkYW1wIDEgLT4gdGFuayBkaWZmdXNlIDIgLT4gbG9uZyBkZWxheSAyKQogICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDExKSArIGZ0ICogdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoNSwgdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDIgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoNSkgLSB0aGlzLl9scDIpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg2LCBkYyAqIHRoaXMuX2xwMiAtIHN0ICogdGhpcy5yZWFkRGVsYXkoNikpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDcsIHRoaXMucmVhZERlbGF5KDYpICsgc3QgKiB0ZW1wKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGxvb3AgKHRhbmsgZGlmZnVzZSAzIC0+IGxvbmcgZGVsYXkgMyAtPiBkYW1wIDIgLT4gdGFuayBkaWZmdXNlIDQgLT4gbG9uZyBkZWxheSA0KQogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg4LCBzcGxpdCArIGRjICogdGhpcy5yZWFkRGVsYXkoNykgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDgsIGV4YzIpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg5LCB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDMgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoOSkgLSB0aGlzLl9scDMpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSgxMCwgZGMgKiB0aGlzLl9scDMgLSBzdCAqIHRoaXMucmVhZERlbGF5KDEwKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoMTEsIHRoaXMucmVhZERlbGF5KDEwKSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBsbyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg5LCB0aGlzLl90YXBzWzBdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDEwLCB0aGlzLl90YXBzWzJdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbM10pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzRdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s1XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbNl0pOwogICAgICAgICAgICAgICAgLy8gUmlnaHQgb3V0cHV0OiBzdW0gb2YgdGFwcyBmcm9tIGJvdGggbG9vcHMKICAgICAgICAgICAgICAgIHJvID0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDUsIHRoaXMuX3RhcHNbN10pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzhdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s5XSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbMTBdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1sxMl0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMSwgdGhpcy5fdGFwc1sxM10pOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSArPSBsbyAqIHdlOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVsxXVtpXSArPSBybyAqIHdlOwogICAgICAgICAgICAgICAgdGhpcy5fZXhjUGhhc2UgKz0gZXg7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIGFsbCBkZWxheSBsaW5lIGluZGljZXMKICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5fRGVsYXlzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tqXTsKICAgICAgICAgICAgICAgICAgICBkWzFdID0gKGRbMV0gKyAxKSAmIGRbM107CiAgICAgICAgICAgICAgICAgICAgZFsyXSA9IChkWzJdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmVEZWxheSBpbmRleAogICAgICAgICAgICB0aGlzLl9wRFdyaXRlID0gKHRoaXMuX3BEV3JpdGUgKyAxMjgpICUgdGhpcy5fcERMZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJkYXR0b3Jyby1yZXZlcmIiLCBEYXR0b3Jyb1JldmVyYlByb2Nlc3Nvcik7CiAgICBjb25zb2xlLmxvZygiRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgcmVnaXN0ZXJlZCIpOwoKICAgIGV4cG9ydHMuRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgPSBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0dG9ycm8tcmV2ZXJiLWJ1bmRsZS5qcy5tYXAK\""],"mappings":"AAAA,IAAA,EAAe"}
1
+ {"version":3,"file":"dattorro-reverb-bundle.js_url.cjs","names":[],"sources":["../../src/bundles/dattorro-reverb-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoqIFRlcm1pbmFsIHJldGlyZW1lbnQgaXMgZGlzdGluY3QgZnJvbSB0ZW1wb3JhcmlseSBsb3NpbmcgYW4gaW5wdXQgb3IgYnlwYXNzaW5nIGFuIGVmZmVjdC4gKi8KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRWZmZWN0UHJvY2Vzc29yKG5hbWUsIFByb2Nlc3NvcikgewogICAgICAgIGNsYXNzIE93bmVkRWZmZWN0UHJvY2Vzc29yIGV4dGVuZHMgUHJvY2Vzc29yIHsKICAgICAgICAgICAgZGlzcG9zZWQgPSBmYWxzZTsKICAgICAgICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykgewogICAgICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgICAgICB0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSAiY2Fjb3Bob255OmRpc3Bvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKCJjYWNvcGhvbnk6ZGlzcG9zZWQiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQuY2xvc2UoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kaXNwb3NlZCAmJiBzdXBlci5wcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVnaXN0ZXJQcm9jZXNzb3IobmFtZSwgT3duZWRFZmZlY3RQcm9jZXNzb3IpOwogICAgfQoKICAgIC8qKgogICAgICogRGF0dG9ycm8gUGxhdGUgUmV2ZXJiIEF1ZGlvV29ya2xldFByb2Nlc3NvcgogICAgICoKICAgICAqIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyICJFZmZlY3QgRGVzaWduIFBhcnQgMTogUmV2ZXJiZXJhdG9yIGFuZCBPdGhlciBGaWx0ZXJzIgogICAgICogSW1wbGVtZW50cyBhIGhpZ2gtcXVhbGl0eSBwbGF0ZSByZXZlcmIgYWxnb3JpdGhtIHdpdGggbW9kdWxhdGVkIGRlbGF5IGxpbmVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9jY3JtYS5zdGFuZm9yZC5lZHUvfmRhdHRvcnJvL0VmZmVjdERlc2lnblBhcnQxLnBkZgogICAgICovCiAgICBjbGFzcyBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgX0RlbGF5cyA9IFtdOwogICAgICAgIF9wRExlbmd0aDsKICAgICAgICBfcHJlRGVsYXk7CiAgICAgICAgX3BEV3JpdGUgPSAwOwogICAgICAgIF9scDEgPSAwLjA7CiAgICAgICAgX2xwMiA9IDAuMDsKICAgICAgICBfbHAzID0gMC4wOwogICAgICAgIF9leGNQaGFzZSA9IDAuMDsKICAgICAgICBfdGFwczsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgWyJwcmVEZWxheSIsIDAsIDAsIHNhbXBsZVJhdGUgLSAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImJhbmR3aWR0aCIsIDAuOTk5OSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJpbnB1dERpZmZ1c2lvbjEiLCAwLjc1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMiIsIDAuNjI1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5IiwgMC41LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5RGlmZnVzaW9uMSIsIDAuNywgMCwgMC45OTk5OTksICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24yIiwgMC41LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkYW1waW5nIiwgMC4wMDUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZXhjdXJzaW9uUmF0ZSIsIDAuNSwgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25EZXB0aCIsIDAuNywgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJ3ZXQiLCAwLjMsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZHJ5IiwgMC42LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgIF0ubWFwKChbbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlXSkgPT4gKHsKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSwKICAgICAgICAgICAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSwKICAgICAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlOiBhdXRvbWF0aW9uUmF0ZSwKICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7CiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAvLyBQcmUtZGVsYXkgaXMgYWx3YXlzIG9uZS1zZWNvbmQgbG9uZywgcm91bmRlZCB0byB0aGUgbmVhcmVzdCAxMjgtY2h1bmsKICAgICAgICAgICAgdGhpcy5fcERMZW5ndGggPSBzYW1wbGVSYXRlICsgKDEyOCAtIChzYW1wbGVSYXRlICUgMTI4KSk7CiAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9wRExlbmd0aCk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZGVsYXkgbGluZXMgd2l0aCBzcGVjaWZpZWQgbGVuZ3RocyAoaW4gc2Vjb25kcykKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgMC4wMDQ3NzEzNDUsIDAuMDAzNTk1MzA5LCAwLjAxMjczNDc4NywgMC4wMDkzMDc0ODMsIDAuMDIyNTc5ODg2LCAwLjE0OTYyNTM0OSwgMC4wNjA0ODE4MzksIDAuMTI0OTk1OCwgMC4wMzA1MDk3MjcsCiAgICAgICAgICAgICAgICAwLjE0MTY5NTUwOCwgMC4wODkyNDQzMTMsIDAuMTA2MjgwMDMxLAogICAgICAgICAgICBdLmZvckVhY2goKGxlbmd0aCkgPT4gdGhpcy5tYWtlRGVsYXkobGVuZ3RoKSk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGFwIHBvc2l0aW9ucyAoaW4gc2Vjb25kcykgZm9yIHN0ZXJlbyBvdXRwdXQKICAgICAgICAgICAgdGhpcy5fdGFwcyA9IEludDE2QXJyYXkuZnJvbShbCiAgICAgICAgICAgICAgICAwLjAwODkzNzg3MiwgMC4wOTk5Mjk0MzgsIDAuMDY0Mjc4NzU0LCAwLjA2NzA2NzYzOSwgMC4wNjY4NjYwMzMsIDAuMDA2MjgzMzkxLCAwLjAzNTgxODY4OSwgMC4wMTE4NjExNjEsCiAgICAgICAgICAgICAgICAwLjEyMTg3MDkwNSwgMC4wNDEyNjIwNTQsIDAuMDg5ODE1NTMsIDAuMDcwOTMxNzU2LCAwLjAxMTI1NjM0MiwgMC4wMDQwNjU3MjQsCiAgICAgICAgICAgIF0sIChsZW5ndGgpID0+IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSkpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBDcmVhdGVzIGEgZGVsYXkgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGVuZ3RoCiAgICAgICAgICogVXNlcyBwb3dlci1vZi0yIHNpemluZyBmb3IgZWZmaWNpZW50IHdyYXBwaW5nIHdpdGggYml0d2lzZSBBTkQKICAgICAgICAgKi8KICAgICAgICBtYWtlRGVsYXkobGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSk7CiAgICAgICAgICAgIGNvbnN0IG5leHRQb3cyID0gMiAqKiBNYXRoLmNlaWwoTWF0aC5sb2cyKGxlbikpOwogICAgICAgICAgICB0aGlzLl9EZWxheXMucHVzaChbCiAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG5leHRQb3cyKSwKICAgICAgICAgICAgICAgIGxlbiAtIDEsIC8vIHdyaXRlIGluZGV4CiAgICAgICAgICAgICAgICAwLCAvLyByZWFkIGluZGV4CiAgICAgICAgICAgICAgICBuZXh0UG93MiAtIDEsIC8vIG1hc2sgZm9yIHdyYXBwaW5nCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBXcml0ZXMgYSBzYW1wbGUgdG8gYSBkZWxheSBsaW5lIGFuZCByZXR1cm5zIHRoZSB3cml0dGVuIHZhbHVlCiAgICAgICAgICovCiAgICAgICAgd3JpdGVEZWxheShpbmRleCwgZGF0YSkgewogICAgICAgICAgICByZXR1cm4gKHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsxXV0gPSBkYXRhKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgdGhlIGN1cnJlbnQgc2FtcGxlIGZyb20gYSBkZWxheSBsaW5lCiAgICAgICAgICovCiAgICAgICAgcmVhZERlbGF5KGluZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9EZWxheXNbaW5kZXhdWzBdW3RoaXMuX0RlbGF5c1tpbmRleF1bMl1dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSBhdCBhIHNwZWNpZmljIG9mZnNldCBmcm9tIHRoZSBjdXJyZW50IHJlYWQgcG9zaXRpb24KICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICByZXR1cm4gZFswXVsoZFsyXSArIG9mZnNldCkgJiBkWzNdXTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgYSBzYW1wbGUgd2l0aCBjdWJpYyBpbnRlcnBvbGF0aW9uIGF0IGEgZnJhY3Rpb25hbCBvZmZzZXQKICAgICAgICAgKiBVc2VzIE9sbGkgTmllbWl0YWxvJ3Mgb3B0aW1hbCBjdWJpYyBpbnRlcnBvbGF0aW9uCiAgICAgICAgICogQHNlZSBodHRwczovL3d3dy5tdXNpY2RzcC5vcmcvZW4vbGF0ZXN0L090aGVyLzQ5LWN1YmljLWludGVycG9sbGF0aW9uLmh0bWwKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlDQXQoaW5kZXgsIG9mZnNldCkgewogICAgICAgICAgICBjb25zdCBkID0gdGhpcy5fRGVsYXlzW2luZGV4XTsKICAgICAgICAgICAgY29uc3QgZnJhYyA9IG9mZnNldCAtIH5+b2Zmc2V0OwogICAgICAgICAgICBsZXQgaW50ID0gfn5vZmZzZXQgKyBkWzJdIC0gMTsKICAgICAgICAgICAgY29uc3QgbWFzayA9IGRbM107CiAgICAgICAgICAgIGNvbnN0IHgwID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MSA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDIgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgzID0gZFswXVtpbnQgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgYSA9ICgzICogKHgxIC0geDIpIC0geDAgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBiID0gMiAqIHgyICsgeDAgLSAoNSAqIHgxICsgeDMpIC8gMjsKICAgICAgICAgICAgY29uc3QgYyA9ICh4MiAtIHgwKSAvIDI7CiAgICAgICAgICAgIHJldHVybiAoKGEgKiBmcmFjICsgYikgKiBmcmFjICsgYykgKiBmcmFjICsgeDE7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFByb2Nlc3MgYXVkaW8gc2FtcGxlcwogICAgICAgICAqIEZpcnN0IGlucHV0IHdpbGwgYmUgZG93bm1peGVkIHRvIG1vbm8gaWYgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCAyCiAgICAgICAgICogT3V0cHV0cyBzdGVyZW8KICAgICAgICAgKi8KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBwZCA9IH5+cGFyYW1ldGVycy5wcmVEZWxheVswXTsKICAgICAgICAgICAgY29uc3QgYncgPSBwYXJhbWV0ZXJzLmJhbmR3aWR0aFswXTsKICAgICAgICAgICAgY29uc3QgZmkgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMVswXTsKICAgICAgICAgICAgY29uc3Qgc2kgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMlswXTsKICAgICAgICAgICAgY29uc3QgZGMgPSBwYXJhbWV0ZXJzLmRlY2F5WzBdOwogICAgICAgICAgICBjb25zdCBmdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkcCA9IDEgLSBwYXJhbWV0ZXJzLmRhbXBpbmdbMF07CiAgICAgICAgICAgIGNvbnN0IGV4ID0gcGFyYW1ldGVycy5leGN1cnNpb25SYXRlWzBdIC8gc2FtcGxlUmF0ZTsKICAgICAgICAgICAgY29uc3QgZWQgPSAocGFyYW1ldGVycy5leGN1cnNpb25EZXB0aFswXSAqIHNhbXBsZVJhdGUpIC8gMTAwMDsKICAgICAgICAgICAgY29uc3Qgd2UgPSBwYXJhbWV0ZXJzLndldFswXSAqIDAuNjsgLy8gbG8gJiBybyBib3RoIG11bHQuIGJ5IDAuNiBhbnl3YXlzCiAgICAgICAgICAgIGNvbnN0IGRyID0gcGFyYW1ldGVycy5kcnlbMF07CiAgICAgICAgICAgIC8vIFdyaXRlIHRvIHByZWRlbGF5IGFuZCBkcnkgb3V0cHV0CiAgICAgICAgICAgIGlmIChpbnB1dHNbMF0ubGVuZ3RoID09PSAyKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5W3RoaXMuX3BEV3JpdGUgKyBpXSA9IChpbnB1dHNbMF1bMF1baV0gKyBpbnB1dHNbMF1bMV1baV0pICogMC41OwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBpbnB1dHNbMF1bMF1baV0gKiBkcjsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzFdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXRzWzBdLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5LnNldChpbnB1dHNbMF1bMF0sIHRoaXMuX3BEV3JpdGUpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDEyNzsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzBdW2ldID0gb3V0cHV0c1swXVsxXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm8gaW5wdXQ6IHRoaXMgaXMgdGhlIG5vcm1hbCBzdGF0ZSBvZiBhbiBpZGxlIHJldmVyYiBidXMsIHNvIHdyaXRlCiAgICAgICAgICAgICAgICAvLyBzaWxlbmNlIGluIHBsYWNlIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgYSBibG9jayBldmVyeSBxdWFudHVtLgogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuZmlsbCgwLCB0aGlzLl9wRFdyaXRlLCB0aGlzLl9wRFdyaXRlICsgMTI4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgMTI4KSB7CiAgICAgICAgICAgICAgICBsZXQgbG8gPSAwLjA7CiAgICAgICAgICAgICAgICBsZXQgcm8gPSAwLjA7CiAgICAgICAgICAgICAgICAvLyBJbnB1dCBsb3ctcGFzcyBmaWx0ZXIgKGJhbmR3aWR0aCkKICAgICAgICAgICAgICAgIHRoaXMuX2xwMSArPSBidyAqICh0aGlzLl9wcmVEZWxheVsodGhpcy5fcERMZW5ndGggKyB0aGlzLl9wRFdyaXRlIC0gcGQgKyBpKSAlIHRoaXMuX3BETGVuZ3RoXSAtIHRoaXMuX2xwMSk7CiAgICAgICAgICAgICAgICAvLyBQcmUtdGFuayBkaWZmdXNpb24gKDQgYWxsLXBhc3MgZmlsdGVycykKICAgICAgICAgICAgICAgIGxldCBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMCwgdGhpcy5fbHAxIC0gZmkgKiB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMSwgZmkgKiAocHJlIC0gdGhpcy5yZWFkRGVsYXkoMSkpICsgdGhpcy5yZWFkRGVsYXkoMCkpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDIsIGZpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMSkgLSBzaSAqIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgzLCBzaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgzKSkgKyB0aGlzLnJlYWREZWxheSgyKSk7CiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdCA9IHNpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMyk7CiAgICAgICAgICAgICAgICAvLyBNb2R1bGF0ZWQgZXhjdXJzaW9ucyBmb3IgY2hvcnVzIGVmZmVjdAogICAgICAgICAgICAgICAgY29uc3QgZXhjID0gZWQgKiAoMSArIE1hdGguY29zKHRoaXMuX2V4Y1BoYXNlICogNi4yOCkpOwogICAgICAgICAgICAgICAgY29uc3QgZXhjMiA9IGVkICogKDEgKyBNYXRoLnNpbih0aGlzLl9leGNQaGFzZSAqIDYuMjg0NykpOwogICAgICAgICAgICAgICAgLy8gTGVmdCBsb29wICh0YW5rIGRpZmZ1c2UgMSAtPiBsb25nIGRlbGF5IDEgLT4gZGFtcCAxIC0+IHRhbmsgZGlmZnVzZSAyIC0+IGxvbmcgZGVsYXkgMikKICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy53cml0ZURlbGF5KDQsIHNwbGl0ICsgZGMgKiB0aGlzLnJlYWREZWxheSgxMSkgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDUsIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAyICs9IGRwICogKHRoaXMucmVhZERlbGF5KDUpIC0gdGhpcy5fbHAyKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNiwgZGMgKiB0aGlzLl9scDIgLSBzdCAqIHRoaXMucmVhZERlbGF5KDYpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg3LCB0aGlzLnJlYWREZWxheSg2KSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBSaWdodCBsb29wICh0YW5rIGRpZmZ1c2UgMyAtPiBsb25nIGRlbGF5IDMgLT4gZGFtcCAyIC0+IHRhbmsgZGlmZnVzZSA0IC0+IGxvbmcgZGVsYXkgNCkKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoOCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDcpICsgZnQgKiB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoOSwgdGhpcy5yZWFkRGVsYXlDQXQoOCwgZXhjMikgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAzICs9IGRwICogKHRoaXMucmVhZERlbGF5KDkpIC0gdGhpcy5fbHAzKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoMTAsIGRjICogdGhpcy5fbHAzIC0gc3QgKiB0aGlzLnJlYWREZWxheSgxMCkpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDExLCB0aGlzLnJlYWREZWxheSgxMCkgKyBzdCAqIHRlbXApOwogICAgICAgICAgICAgICAgLy8gTGVmdCBvdXRwdXQ6IHN1bSBvZiB0YXBzIGZyb20gYm90aCBsb29wcwogICAgICAgICAgICAgICAgbG8gPQogICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1swXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1syXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDExLCB0aGlzLl90YXBzWzNdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s0XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbNV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzZdKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBybyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzddKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s4XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbOV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzEwXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMTFdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTAsIHRoaXMuX3RhcHNbMTJdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbMTNdKTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gKz0gbG8gKiB3ZTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gKz0gcm8gKiB3ZTsKICAgICAgICAgICAgICAgIHRoaXMuX2V4Y1BoYXNlICs9IGV4OwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBhbGwgZGVsYXkgbGluZSBpbmRpY2VzCiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuX0RlbGF5cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbal07CiAgICAgICAgICAgICAgICAgICAgZFsxXSA9IChkWzFdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgICAgIGRbMl0gPSAoZFsyXSArIDEpICYgZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBVcGRhdGUgcHJlRGVsYXkgaW5kZXgKICAgICAgICAgICAgdGhpcy5fcERXcml0ZSA9ICh0aGlzLl9wRFdyaXRlICsgMTI4KSAlIHRoaXMuX3BETGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiZGF0dG9ycm8tcmV2ZXJiIiwgRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IpOwogICAgY29uc29sZS5sb2coIkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIHJlZ2lzdGVyZWQiKTsKCiAgICBleHBvcnRzLkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yID0gRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdHRvcnJvLXJldmVyYi1idW5kbGUuanMubWFwCg==\""],"mappings":"AAAA,IAAA,EAAe"}
@@ -1,5 +1,5 @@
1
1
  //#region src/bundles/dattorro-reverb-bundle.js?url
2
- var e = "data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoKICAgIERhdHRvcnJvIFJldmVyYiBBdWRpb1dvcmtsZXQgSW1wbGVtZW50YXRpb24KICAgIE9yaWdpbmFsIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gYnkgS2jDtGkgTmd1eeG7hW4gKGtob2luKQogICAgaHR0cHM6Ly9naXRodWIuY29tL2tob2luL0RhdHRvcnJvUmV2ZXJiTm9kZQoKICAgIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyOgogICAgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCgogICAgSW4ganVyaXNkaWN0aW9ucyB0aGF0IHJlY29nbml6ZSBjb3B5cmlnaHQgbGF3cywgdGhpcyBzb2Z0d2FyZSBpcyB0bwogICAgYmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORC4KICAgIFRIRSBBVVRIT1IoUykgU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IgQU5ZVEhJTkcsIEFSSVNJTkcgRlJPTSwgT1IgSU4KICAgIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUuCiAgICAqLwogICAgLyoqCiAgICAgKiBEYXR0b3JybyBQbGF0ZSBSZXZlcmIgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCiAgICAgKgogICAgICogQmFzZWQgb24gSm9uIERhdHRvcnJvJ3MgMTk5NyBBRVMgcGFwZXIgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCiAgICAgKiBJbXBsZW1lbnRzIGEgaGlnaC1xdWFsaXR5IHBsYXRlIHJldmVyYiBhbGdvcml0aG0gd2l0aCBtb2R1bGF0ZWQgZGVsYXkgbGluZXMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2Njcm1hLnN0YW5mb3JkLmVkdS9+ZGF0dG9ycm8vRWZmZWN0RGVzaWduUGFydDEucGRmCiAgICAgKi8KICAgIGNsYXNzIERhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBfRGVsYXlzID0gW107CiAgICAgICAgX3BETGVuZ3RoOwogICAgICAgIF9wcmVEZWxheTsKICAgICAgICBfcERXcml0ZSA9IDA7CiAgICAgICAgX2xwMSA9IDAuMDsKICAgICAgICBfbHAyID0gMC4wOwogICAgICAgIF9scDMgPSAwLjA7CiAgICAgICAgX2V4Y1BoYXNlID0gMC4wOwogICAgICAgIF90YXBzOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBbInByZURlbGF5IiwgMCwgMCwgc2FtcGxlUmF0ZSAtIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiYmFuZHdpZHRoIiwgMC45OTk5LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMSIsIDAuNzUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiaW5wdXREaWZmdXNpb24yIiwgMC42MjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXkiLCAwLjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24xIiwgMC43LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkZWNheURpZmZ1c2lvbjIiLCAwLjUsIDAsIDAuOTk5OTk5LCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRhbXBpbmciLCAwLjAwNSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25SYXRlIiwgMC41LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImV4Y3Vyc2lvbkRlcHRoIiwgMC43LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbIndldCIsIDAuMywgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkcnkiLCAwLjYsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgXS5tYXAoKFtuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGVdKSA9PiAoewogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgbWluVmFsdWU6IG1pblZhbHVlLAogICAgICAgICAgICAgICAgbWF4VmFsdWU6IG1heFZhbHVlLAogICAgICAgICAgICAgICAgYXV0b21hdGlvblJhdGU6IGF1dG9tYXRpb25SYXRlLAogICAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgIC8vIFByZS1kZWxheSBpcyBhbHdheXMgb25lLXNlY29uZCBsb25nLCByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IDEyOC1jaHVuawogICAgICAgICAgICB0aGlzLl9wRExlbmd0aCA9IHNhbXBsZVJhdGUgKyAoMTI4IC0gKHNhbXBsZVJhdGUgJSAxMjgpKTsKICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3BETGVuZ3RoKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBkZWxheSBsaW5lcyB3aXRoIHNwZWNpZmllZCBsZW5ndGhzIChpbiBzZWNvbmRzKQogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAwLjAwNDc3MTM0NSwgMC4wMDM1OTUzMDksIDAuMDEyNzM0Nzg3LCAwLjAwOTMwNzQ4MywgMC4wMjI1Nzk4ODYsIDAuMTQ5NjI1MzQ5LCAwLjA2MDQ4MTgzOSwgMC4xMjQ5OTU4LCAwLjAzMDUwOTcyNywKICAgICAgICAgICAgICAgIDAuMTQxNjk1NTA4LCAwLjA4OTI0NDMxMywgMC4xMDYyODAwMzEsCiAgICAgICAgICAgIF0uZm9yRWFjaCgobGVuZ3RoKSA9PiB0aGlzLm1ha2VEZWxheShsZW5ndGgpKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0YXAgcG9zaXRpb25zIChpbiBzZWNvbmRzKSBmb3Igc3RlcmVvIG91dHB1dAogICAgICAgICAgICB0aGlzLl90YXBzID0gSW50MTZBcnJheS5mcm9tKFsKICAgICAgICAgICAgICAgIDAuMDA4OTM3ODcyLCAwLjA5OTkyOTQzOCwgMC4wNjQyNzg3NTQsIDAuMDY3MDY3NjM5LCAwLjA2Njg2NjAzMywgMC4wMDYyODMzOTEsIDAuMDM1ODE4Njg5LCAwLjAxMTg2MTE2MSwKICAgICAgICAgICAgICAgIDAuMTIxODcwOTA1LCAwLjA0MTI2MjA1NCwgMC4wODk4MTU1MywgMC4wNzA5MzE3NTYsIDAuMDExMjU2MzQyLCAwLjAwNDA2NTcyNCwKICAgICAgICAgICAgXSwgKGxlbmd0aCkgPT4gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBkZWxheSBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBsZW5ndGgKICAgICAgICAgKiBVc2VzIHBvd2VyLW9mLTIgc2l6aW5nIGZvciBlZmZpY2llbnQgd3JhcHBpbmcgd2l0aCBiaXR3aXNlIEFORAogICAgICAgICAqLwogICAgICAgIG1ha2VEZWxheShsZW5ndGgpIHsKICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgY29uc3QgbmV4dFBvdzIgPSAyICoqIE1hdGguY2VpbChNYXRoLmxvZzIobGVuKSk7CiAgICAgICAgICAgIHRoaXMuX0RlbGF5cy5wdXNoKFsKICAgICAgICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobmV4dFBvdzIpLAogICAgICAgICAgICAgICAgbGVuIC0gMSwgLy8gd3JpdGUgaW5kZXgKICAgICAgICAgICAgICAgIDAsIC8vIHJlYWQgaW5kZXgKICAgICAgICAgICAgICAgIG5leHRQb3cyIC0gMSwgLy8gbWFzayBmb3Igd3JhcHBpbmcKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFdyaXRlcyBhIHNhbXBsZSB0byBhIGRlbGF5IGxpbmUgYW5kIHJldHVybnMgdGhlIHdyaXR0ZW4gdmFsdWUKICAgICAgICAgKi8KICAgICAgICB3cml0ZURlbGF5KGluZGV4LCBkYXRhKSB7CiAgICAgICAgICAgIHJldHVybiAodGhpcy5fRGVsYXlzW2luZGV4XVswXVt0aGlzLl9EZWxheXNbaW5kZXhdWzFdXSA9IGRhdGEpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyB0aGUgY3VycmVudCBzYW1wbGUgZnJvbSBhIGRlbGF5IGxpbmUKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXkoaW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsyXV07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJlYWRzIGEgc2FtcGxlIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbgogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUF0KGluZGV4LCBvZmZzZXQpIHsKICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tpbmRleF07CiAgICAgICAgICAgIHJldHVybiBkWzBdWyhkWzJdICsgb2Zmc2V0KSAmIGRbM11dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSB3aXRoIGN1YmljIGludGVycG9sYXRpb24gYXQgYSBmcmFjdGlvbmFsIG9mZnNldAogICAgICAgICAqIFVzZXMgT2xsaSBOaWVtaXRhbG8ncyBvcHRpbWFsIGN1YmljIGludGVycG9sYXRpb24KICAgICAgICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm11c2ljZHNwLm9yZy9lbi9sYXRlc3QvT3RoZXIvNDktY3ViaWMtaW50ZXJwb2xsYXRpb24uaHRtbAogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUNBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICBjb25zdCBmcmFjID0gb2Zmc2V0IC0gfn5vZmZzZXQ7CiAgICAgICAgICAgIGxldCBpbnQgPSB+fm9mZnNldCArIGRbMl0gLSAxOwogICAgICAgICAgICBjb25zdCBtYXNrID0gZFszXTsKICAgICAgICAgICAgY29uc3QgeDAgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgxID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MiA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDMgPSBkWzBdW2ludCAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCBhID0gKDMgKiAoeDEgLSB4MikgLSB4MCArIHgzKSAvIDI7CiAgICAgICAgICAgIGNvbnN0IGIgPSAyICogeDIgKyB4MCAtICg1ICogeDEgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBjID0gKHgyIC0geDApIC8gMjsKICAgICAgICAgICAgcmV0dXJuICgoYSAqIGZyYWMgKyBiKSAqIGZyYWMgKyBjKSAqIGZyYWMgKyB4MTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUHJvY2VzcyBhdWRpbyBzYW1wbGVzCiAgICAgICAgICogRmlyc3QgaW5wdXQgd2lsbCBiZSBkb3dubWl4ZWQgdG8gbW9ubyBpZiBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IDIKICAgICAgICAgKiBPdXRwdXRzIHN0ZXJlbwogICAgICAgICAqLwogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IHBkID0gfn5wYXJhbWV0ZXJzLnByZURlbGF5WzBdOwogICAgICAgICAgICBjb25zdCBidyA9IHBhcmFtZXRlcnMuYmFuZHdpZHRoWzBdOwogICAgICAgICAgICBjb25zdCBmaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkYyA9IHBhcmFtZXRlcnMuZGVjYXlbMF07CiAgICAgICAgICAgIGNvbnN0IGZ0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjFbMF07CiAgICAgICAgICAgIGNvbnN0IHN0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjJbMF07CiAgICAgICAgICAgIGNvbnN0IGRwID0gMSAtIHBhcmFtZXRlcnMuZGFtcGluZ1swXTsKICAgICAgICAgICAgY29uc3QgZXggPSBwYXJhbWV0ZXJzLmV4Y3Vyc2lvblJhdGVbMF0gLyBzYW1wbGVSYXRlOwogICAgICAgICAgICBjb25zdCBlZCA9IChwYXJhbWV0ZXJzLmV4Y3Vyc2lvbkRlcHRoWzBdICogc2FtcGxlUmF0ZSkgLyAxMDAwOwogICAgICAgICAgICBjb25zdCB3ZSA9IHBhcmFtZXRlcnMud2V0WzBdICogMC42OyAvLyBsbyAmIHJvIGJvdGggbXVsdC4gYnkgMC42IGFueXdheXMKICAgICAgICAgICAgY29uc3QgZHIgPSBwYXJhbWV0ZXJzLmRyeVswXTsKICAgICAgICAgICAgLy8gV3JpdGUgdG8gcHJlZGVsYXkgYW5kIGRyeSBvdXRwdXQKICAgICAgICAgICAgaWYgKGlucHV0c1swXS5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxMjc7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXlbdGhpcy5fcERXcml0ZSArIGldID0gKGlucHV0c1swXVswXVtpXSArIGlucHV0c1swXVsxXVtpXSkgKiAwLjU7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gPSBpbnB1dHNbMF1bMV1baV0gKiBkcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpbnB1dHNbMF0ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuc2V0KGlucHV0c1swXVswXSwgdGhpcy5fcERXcml0ZSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzBdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBObyBpbnB1dDogdGhpcyBpcyB0aGUgbm9ybWFsIHN0YXRlIG9mIGFuIGlkbGUgcmV2ZXJiIGJ1cywgc28gd3JpdGUKICAgICAgICAgICAgICAgIC8vIHNpbGVuY2UgaW4gcGxhY2UgcmF0aGVyIHRoYW4gYWxsb2NhdGluZyBhIGJsb2NrIGV2ZXJ5IHF1YW50dW0uCiAgICAgICAgICAgICAgICB0aGlzLl9wcmVEZWxheS5maWxsKDAsIHRoaXMuX3BEV3JpdGUsIHRoaXMuX3BEV3JpdGUgKyAxMjgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgICAgd2hpbGUgKGkgPCAxMjgpIHsKICAgICAgICAgICAgICAgIGxldCBsbyA9IDAuMDsKICAgICAgICAgICAgICAgIGxldCBybyA9IDAuMDsKICAgICAgICAgICAgICAgIC8vIElucHV0IGxvdy1wYXNzIGZpbHRlciAoYmFuZHdpZHRoKQogICAgICAgICAgICAgICAgdGhpcy5fbHAxICs9IGJ3ICogKHRoaXMuX3ByZURlbGF5Wyh0aGlzLl9wRExlbmd0aCArIHRoaXMuX3BEV3JpdGUgLSBwZCArIGkpICUgdGhpcy5fcERMZW5ndGhdIC0gdGhpcy5fbHAxKTsKICAgICAgICAgICAgICAgIC8vIFByZS10YW5rIGRpZmZ1c2lvbiAoNCBhbGwtcGFzcyBmaWx0ZXJzKQogICAgICAgICAgICAgICAgbGV0IHByZSA9IHRoaXMud3JpdGVEZWxheSgwLCB0aGlzLl9scDEgLSBmaSAqIHRoaXMucmVhZERlbGF5KDApKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgxLCBmaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgxKSkgKyB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMiwgZmkgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgxKSAtIHNpICogdGhpcy5yZWFkRGVsYXkoMikpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDMsIHNpICogKHByZSAtIHRoaXMucmVhZERlbGF5KDMpKSArIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gc2kgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgzKTsKICAgICAgICAgICAgICAgIC8vIE1vZHVsYXRlZCBleGN1cnNpb25zIGZvciBjaG9ydXMgZWZmZWN0CiAgICAgICAgICAgICAgICBjb25zdCBleGMgPSBlZCAqICgxICsgTWF0aC5jb3ModGhpcy5fZXhjUGhhc2UgKiA2LjI4KSk7CiAgICAgICAgICAgICAgICBjb25zdCBleGMyID0gZWQgKiAoMSArIE1hdGguc2luKHRoaXMuX2V4Y1BoYXNlICogNi4yODQ3KSk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IGxvb3AgKHRhbmsgZGlmZnVzZSAxIC0+IGxvbmcgZGVsYXkgMSAtPiBkYW1wIDEgLT4gdGFuayBkaWZmdXNlIDIgLT4gbG9uZyBkZWxheSAyKQogICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDExKSArIGZ0ICogdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoNSwgdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDIgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoNSkgLSB0aGlzLl9scDIpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg2LCBkYyAqIHRoaXMuX2xwMiAtIHN0ICogdGhpcy5yZWFkRGVsYXkoNikpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDcsIHRoaXMucmVhZERlbGF5KDYpICsgc3QgKiB0ZW1wKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGxvb3AgKHRhbmsgZGlmZnVzZSAzIC0+IGxvbmcgZGVsYXkgMyAtPiBkYW1wIDIgLT4gdGFuayBkaWZmdXNlIDQgLT4gbG9uZyBkZWxheSA0KQogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg4LCBzcGxpdCArIGRjICogdGhpcy5yZWFkRGVsYXkoNykgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDgsIGV4YzIpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg5LCB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDMgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoOSkgLSB0aGlzLl9scDMpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSgxMCwgZGMgKiB0aGlzLl9scDMgLSBzdCAqIHRoaXMucmVhZERlbGF5KDEwKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoMTEsIHRoaXMucmVhZERlbGF5KDEwKSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBsbyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg5LCB0aGlzLl90YXBzWzBdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDEwLCB0aGlzLl90YXBzWzJdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbM10pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzRdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s1XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbNl0pOwogICAgICAgICAgICAgICAgLy8gUmlnaHQgb3V0cHV0OiBzdW0gb2YgdGFwcyBmcm9tIGJvdGggbG9vcHMKICAgICAgICAgICAgICAgIHJvID0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDUsIHRoaXMuX3RhcHNbN10pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzhdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s5XSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbMTBdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1sxMl0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMSwgdGhpcy5fdGFwc1sxM10pOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSArPSBsbyAqIHdlOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVsxXVtpXSArPSBybyAqIHdlOwogICAgICAgICAgICAgICAgdGhpcy5fZXhjUGhhc2UgKz0gZXg7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIGFsbCBkZWxheSBsaW5lIGluZGljZXMKICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5fRGVsYXlzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tqXTsKICAgICAgICAgICAgICAgICAgICBkWzFdID0gKGRbMV0gKyAxKSAmIGRbM107CiAgICAgICAgICAgICAgICAgICAgZFsyXSA9IChkWzJdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmVEZWxheSBpbmRleAogICAgICAgICAgICB0aGlzLl9wRFdyaXRlID0gKHRoaXMuX3BEV3JpdGUgKyAxMjgpICUgdGhpcy5fcERMZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJkYXR0b3Jyby1yZXZlcmIiLCBEYXR0b3Jyb1JldmVyYlByb2Nlc3Nvcik7CiAgICBjb25zb2xlLmxvZygiRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgcmVnaXN0ZXJlZCIpOwoKICAgIGV4cG9ydHMuRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgPSBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0dG9ycm8tcmV2ZXJiLWJ1bmRsZS5qcy5tYXAK";
2
+ var e = "data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoqIFRlcm1pbmFsIHJldGlyZW1lbnQgaXMgZGlzdGluY3QgZnJvbSB0ZW1wb3JhcmlseSBsb3NpbmcgYW4gaW5wdXQgb3IgYnlwYXNzaW5nIGFuIGVmZmVjdC4gKi8KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRWZmZWN0UHJvY2Vzc29yKG5hbWUsIFByb2Nlc3NvcikgewogICAgICAgIGNsYXNzIE93bmVkRWZmZWN0UHJvY2Vzc29yIGV4dGVuZHMgUHJvY2Vzc29yIHsKICAgICAgICAgICAgZGlzcG9zZWQgPSBmYWxzZTsKICAgICAgICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykgewogICAgICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgICAgICB0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSAiY2Fjb3Bob255OmRpc3Bvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKCJjYWNvcGhvbnk6ZGlzcG9zZWQiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQuY2xvc2UoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kaXNwb3NlZCAmJiBzdXBlci5wcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVnaXN0ZXJQcm9jZXNzb3IobmFtZSwgT3duZWRFZmZlY3RQcm9jZXNzb3IpOwogICAgfQoKICAgIC8qKgogICAgICogRGF0dG9ycm8gUGxhdGUgUmV2ZXJiIEF1ZGlvV29ya2xldFByb2Nlc3NvcgogICAgICoKICAgICAqIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyICJFZmZlY3QgRGVzaWduIFBhcnQgMTogUmV2ZXJiZXJhdG9yIGFuZCBPdGhlciBGaWx0ZXJzIgogICAgICogSW1wbGVtZW50cyBhIGhpZ2gtcXVhbGl0eSBwbGF0ZSByZXZlcmIgYWxnb3JpdGhtIHdpdGggbW9kdWxhdGVkIGRlbGF5IGxpbmVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9jY3JtYS5zdGFuZm9yZC5lZHUvfmRhdHRvcnJvL0VmZmVjdERlc2lnblBhcnQxLnBkZgogICAgICovCiAgICBjbGFzcyBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgX0RlbGF5cyA9IFtdOwogICAgICAgIF9wRExlbmd0aDsKICAgICAgICBfcHJlRGVsYXk7CiAgICAgICAgX3BEV3JpdGUgPSAwOwogICAgICAgIF9scDEgPSAwLjA7CiAgICAgICAgX2xwMiA9IDAuMDsKICAgICAgICBfbHAzID0gMC4wOwogICAgICAgIF9leGNQaGFzZSA9IDAuMDsKICAgICAgICBfdGFwczsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgWyJwcmVEZWxheSIsIDAsIDAsIHNhbXBsZVJhdGUgLSAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImJhbmR3aWR0aCIsIDAuOTk5OSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJpbnB1dERpZmZ1c2lvbjEiLCAwLjc1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMiIsIDAuNjI1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5IiwgMC41LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5RGlmZnVzaW9uMSIsIDAuNywgMCwgMC45OTk5OTksICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24yIiwgMC41LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkYW1waW5nIiwgMC4wMDUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZXhjdXJzaW9uUmF0ZSIsIDAuNSwgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25EZXB0aCIsIDAuNywgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJ3ZXQiLCAwLjMsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZHJ5IiwgMC42LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgIF0ubWFwKChbbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlXSkgPT4gKHsKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSwKICAgICAgICAgICAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSwKICAgICAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlOiBhdXRvbWF0aW9uUmF0ZSwKICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7CiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAvLyBQcmUtZGVsYXkgaXMgYWx3YXlzIG9uZS1zZWNvbmQgbG9uZywgcm91bmRlZCB0byB0aGUgbmVhcmVzdCAxMjgtY2h1bmsKICAgICAgICAgICAgdGhpcy5fcERMZW5ndGggPSBzYW1wbGVSYXRlICsgKDEyOCAtIChzYW1wbGVSYXRlICUgMTI4KSk7CiAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9wRExlbmd0aCk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZGVsYXkgbGluZXMgd2l0aCBzcGVjaWZpZWQgbGVuZ3RocyAoaW4gc2Vjb25kcykKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgMC4wMDQ3NzEzNDUsIDAuMDAzNTk1MzA5LCAwLjAxMjczNDc4NywgMC4wMDkzMDc0ODMsIDAuMDIyNTc5ODg2LCAwLjE0OTYyNTM0OSwgMC4wNjA0ODE4MzksIDAuMTI0OTk1OCwgMC4wMzA1MDk3MjcsCiAgICAgICAgICAgICAgICAwLjE0MTY5NTUwOCwgMC4wODkyNDQzMTMsIDAuMTA2MjgwMDMxLAogICAgICAgICAgICBdLmZvckVhY2goKGxlbmd0aCkgPT4gdGhpcy5tYWtlRGVsYXkobGVuZ3RoKSk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGFwIHBvc2l0aW9ucyAoaW4gc2Vjb25kcykgZm9yIHN0ZXJlbyBvdXRwdXQKICAgICAgICAgICAgdGhpcy5fdGFwcyA9IEludDE2QXJyYXkuZnJvbShbCiAgICAgICAgICAgICAgICAwLjAwODkzNzg3MiwgMC4wOTk5Mjk0MzgsIDAuMDY0Mjc4NzU0LCAwLjA2NzA2NzYzOSwgMC4wNjY4NjYwMzMsIDAuMDA2MjgzMzkxLCAwLjAzNTgxODY4OSwgMC4wMTE4NjExNjEsCiAgICAgICAgICAgICAgICAwLjEyMTg3MDkwNSwgMC4wNDEyNjIwNTQsIDAuMDg5ODE1NTMsIDAuMDcwOTMxNzU2LCAwLjAxMTI1NjM0MiwgMC4wMDQwNjU3MjQsCiAgICAgICAgICAgIF0sIChsZW5ndGgpID0+IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSkpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBDcmVhdGVzIGEgZGVsYXkgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGVuZ3RoCiAgICAgICAgICogVXNlcyBwb3dlci1vZi0yIHNpemluZyBmb3IgZWZmaWNpZW50IHdyYXBwaW5nIHdpdGggYml0d2lzZSBBTkQKICAgICAgICAgKi8KICAgICAgICBtYWtlRGVsYXkobGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSk7CiAgICAgICAgICAgIGNvbnN0IG5leHRQb3cyID0gMiAqKiBNYXRoLmNlaWwoTWF0aC5sb2cyKGxlbikpOwogICAgICAgICAgICB0aGlzLl9EZWxheXMucHVzaChbCiAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG5leHRQb3cyKSwKICAgICAgICAgICAgICAgIGxlbiAtIDEsIC8vIHdyaXRlIGluZGV4CiAgICAgICAgICAgICAgICAwLCAvLyByZWFkIGluZGV4CiAgICAgICAgICAgICAgICBuZXh0UG93MiAtIDEsIC8vIG1hc2sgZm9yIHdyYXBwaW5nCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBXcml0ZXMgYSBzYW1wbGUgdG8gYSBkZWxheSBsaW5lIGFuZCByZXR1cm5zIHRoZSB3cml0dGVuIHZhbHVlCiAgICAgICAgICovCiAgICAgICAgd3JpdGVEZWxheShpbmRleCwgZGF0YSkgewogICAgICAgICAgICByZXR1cm4gKHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsxXV0gPSBkYXRhKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgdGhlIGN1cnJlbnQgc2FtcGxlIGZyb20gYSBkZWxheSBsaW5lCiAgICAgICAgICovCiAgICAgICAgcmVhZERlbGF5KGluZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9EZWxheXNbaW5kZXhdWzBdW3RoaXMuX0RlbGF5c1tpbmRleF1bMl1dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSBhdCBhIHNwZWNpZmljIG9mZnNldCBmcm9tIHRoZSBjdXJyZW50IHJlYWQgcG9zaXRpb24KICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICByZXR1cm4gZFswXVsoZFsyXSArIG9mZnNldCkgJiBkWzNdXTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgYSBzYW1wbGUgd2l0aCBjdWJpYyBpbnRlcnBvbGF0aW9uIGF0IGEgZnJhY3Rpb25hbCBvZmZzZXQKICAgICAgICAgKiBVc2VzIE9sbGkgTmllbWl0YWxvJ3Mgb3B0aW1hbCBjdWJpYyBpbnRlcnBvbGF0aW9uCiAgICAgICAgICogQHNlZSBodHRwczovL3d3dy5tdXNpY2RzcC5vcmcvZW4vbGF0ZXN0L090aGVyLzQ5LWN1YmljLWludGVycG9sbGF0aW9uLmh0bWwKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlDQXQoaW5kZXgsIG9mZnNldCkgewogICAgICAgICAgICBjb25zdCBkID0gdGhpcy5fRGVsYXlzW2luZGV4XTsKICAgICAgICAgICAgY29uc3QgZnJhYyA9IG9mZnNldCAtIH5+b2Zmc2V0OwogICAgICAgICAgICBsZXQgaW50ID0gfn5vZmZzZXQgKyBkWzJdIC0gMTsKICAgICAgICAgICAgY29uc3QgbWFzayA9IGRbM107CiAgICAgICAgICAgIGNvbnN0IHgwID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MSA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDIgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgzID0gZFswXVtpbnQgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgYSA9ICgzICogKHgxIC0geDIpIC0geDAgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBiID0gMiAqIHgyICsgeDAgLSAoNSAqIHgxICsgeDMpIC8gMjsKICAgICAgICAgICAgY29uc3QgYyA9ICh4MiAtIHgwKSAvIDI7CiAgICAgICAgICAgIHJldHVybiAoKGEgKiBmcmFjICsgYikgKiBmcmFjICsgYykgKiBmcmFjICsgeDE7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFByb2Nlc3MgYXVkaW8gc2FtcGxlcwogICAgICAgICAqIEZpcnN0IGlucHV0IHdpbGwgYmUgZG93bm1peGVkIHRvIG1vbm8gaWYgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCAyCiAgICAgICAgICogT3V0cHV0cyBzdGVyZW8KICAgICAgICAgKi8KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBwZCA9IH5+cGFyYW1ldGVycy5wcmVEZWxheVswXTsKICAgICAgICAgICAgY29uc3QgYncgPSBwYXJhbWV0ZXJzLmJhbmR3aWR0aFswXTsKICAgICAgICAgICAgY29uc3QgZmkgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMVswXTsKICAgICAgICAgICAgY29uc3Qgc2kgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMlswXTsKICAgICAgICAgICAgY29uc3QgZGMgPSBwYXJhbWV0ZXJzLmRlY2F5WzBdOwogICAgICAgICAgICBjb25zdCBmdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkcCA9IDEgLSBwYXJhbWV0ZXJzLmRhbXBpbmdbMF07CiAgICAgICAgICAgIGNvbnN0IGV4ID0gcGFyYW1ldGVycy5leGN1cnNpb25SYXRlWzBdIC8gc2FtcGxlUmF0ZTsKICAgICAgICAgICAgY29uc3QgZWQgPSAocGFyYW1ldGVycy5leGN1cnNpb25EZXB0aFswXSAqIHNhbXBsZVJhdGUpIC8gMTAwMDsKICAgICAgICAgICAgY29uc3Qgd2UgPSBwYXJhbWV0ZXJzLndldFswXSAqIDAuNjsgLy8gbG8gJiBybyBib3RoIG11bHQuIGJ5IDAuNiBhbnl3YXlzCiAgICAgICAgICAgIGNvbnN0IGRyID0gcGFyYW1ldGVycy5kcnlbMF07CiAgICAgICAgICAgIC8vIFdyaXRlIHRvIHByZWRlbGF5IGFuZCBkcnkgb3V0cHV0CiAgICAgICAgICAgIGlmIChpbnB1dHNbMF0ubGVuZ3RoID09PSAyKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5W3RoaXMuX3BEV3JpdGUgKyBpXSA9IChpbnB1dHNbMF1bMF1baV0gKyBpbnB1dHNbMF1bMV1baV0pICogMC41OwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBpbnB1dHNbMF1bMF1baV0gKiBkcjsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzFdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXRzWzBdLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5LnNldChpbnB1dHNbMF1bMF0sIHRoaXMuX3BEV3JpdGUpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDEyNzsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzBdW2ldID0gb3V0cHV0c1swXVsxXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm8gaW5wdXQ6IHRoaXMgaXMgdGhlIG5vcm1hbCBzdGF0ZSBvZiBhbiBpZGxlIHJldmVyYiBidXMsIHNvIHdyaXRlCiAgICAgICAgICAgICAgICAvLyBzaWxlbmNlIGluIHBsYWNlIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgYSBibG9jayBldmVyeSBxdWFudHVtLgogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuZmlsbCgwLCB0aGlzLl9wRFdyaXRlLCB0aGlzLl9wRFdyaXRlICsgMTI4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgMTI4KSB7CiAgICAgICAgICAgICAgICBsZXQgbG8gPSAwLjA7CiAgICAgICAgICAgICAgICBsZXQgcm8gPSAwLjA7CiAgICAgICAgICAgICAgICAvLyBJbnB1dCBsb3ctcGFzcyBmaWx0ZXIgKGJhbmR3aWR0aCkKICAgICAgICAgICAgICAgIHRoaXMuX2xwMSArPSBidyAqICh0aGlzLl9wcmVEZWxheVsodGhpcy5fcERMZW5ndGggKyB0aGlzLl9wRFdyaXRlIC0gcGQgKyBpKSAlIHRoaXMuX3BETGVuZ3RoXSAtIHRoaXMuX2xwMSk7CiAgICAgICAgICAgICAgICAvLyBQcmUtdGFuayBkaWZmdXNpb24gKDQgYWxsLXBhc3MgZmlsdGVycykKICAgICAgICAgICAgICAgIGxldCBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMCwgdGhpcy5fbHAxIC0gZmkgKiB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMSwgZmkgKiAocHJlIC0gdGhpcy5yZWFkRGVsYXkoMSkpICsgdGhpcy5yZWFkRGVsYXkoMCkpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDIsIGZpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMSkgLSBzaSAqIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgzLCBzaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgzKSkgKyB0aGlzLnJlYWREZWxheSgyKSk7CiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdCA9IHNpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMyk7CiAgICAgICAgICAgICAgICAvLyBNb2R1bGF0ZWQgZXhjdXJzaW9ucyBmb3IgY2hvcnVzIGVmZmVjdAogICAgICAgICAgICAgICAgY29uc3QgZXhjID0gZWQgKiAoMSArIE1hdGguY29zKHRoaXMuX2V4Y1BoYXNlICogNi4yOCkpOwogICAgICAgICAgICAgICAgY29uc3QgZXhjMiA9IGVkICogKDEgKyBNYXRoLnNpbih0aGlzLl9leGNQaGFzZSAqIDYuMjg0NykpOwogICAgICAgICAgICAgICAgLy8gTGVmdCBsb29wICh0YW5rIGRpZmZ1c2UgMSAtPiBsb25nIGRlbGF5IDEgLT4gZGFtcCAxIC0+IHRhbmsgZGlmZnVzZSAyIC0+IGxvbmcgZGVsYXkgMikKICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy53cml0ZURlbGF5KDQsIHNwbGl0ICsgZGMgKiB0aGlzLnJlYWREZWxheSgxMSkgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDUsIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAyICs9IGRwICogKHRoaXMucmVhZERlbGF5KDUpIC0gdGhpcy5fbHAyKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNiwgZGMgKiB0aGlzLl9scDIgLSBzdCAqIHRoaXMucmVhZERlbGF5KDYpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg3LCB0aGlzLnJlYWREZWxheSg2KSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBSaWdodCBsb29wICh0YW5rIGRpZmZ1c2UgMyAtPiBsb25nIGRlbGF5IDMgLT4gZGFtcCAyIC0+IHRhbmsgZGlmZnVzZSA0IC0+IGxvbmcgZGVsYXkgNCkKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoOCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDcpICsgZnQgKiB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoOSwgdGhpcy5yZWFkRGVsYXlDQXQoOCwgZXhjMikgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAzICs9IGRwICogKHRoaXMucmVhZERlbGF5KDkpIC0gdGhpcy5fbHAzKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoMTAsIGRjICogdGhpcy5fbHAzIC0gc3QgKiB0aGlzLnJlYWREZWxheSgxMCkpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDExLCB0aGlzLnJlYWREZWxheSgxMCkgKyBzdCAqIHRlbXApOwogICAgICAgICAgICAgICAgLy8gTGVmdCBvdXRwdXQ6IHN1bSBvZiB0YXBzIGZyb20gYm90aCBsb29wcwogICAgICAgICAgICAgICAgbG8gPQogICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1swXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1syXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDExLCB0aGlzLl90YXBzWzNdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s0XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbNV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzZdKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBybyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzddKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s4XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbOV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzEwXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMTFdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTAsIHRoaXMuX3RhcHNbMTJdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbMTNdKTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gKz0gbG8gKiB3ZTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gKz0gcm8gKiB3ZTsKICAgICAgICAgICAgICAgIHRoaXMuX2V4Y1BoYXNlICs9IGV4OwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBhbGwgZGVsYXkgbGluZSBpbmRpY2VzCiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuX0RlbGF5cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbal07CiAgICAgICAgICAgICAgICAgICAgZFsxXSA9IChkWzFdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgICAgIGRbMl0gPSAoZFsyXSArIDEpICYgZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBVcGRhdGUgcHJlRGVsYXkgaW5kZXgKICAgICAgICAgICAgdGhpcy5fcERXcml0ZSA9ICh0aGlzLl9wRFdyaXRlICsgMTI4KSAlIHRoaXMuX3BETGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiZGF0dG9ycm8tcmV2ZXJiIiwgRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IpOwogICAgY29uc29sZS5sb2coIkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIHJlZ2lzdGVyZWQiKTsKCiAgICBleHBvcnRzLkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yID0gRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdHRvcnJvLXJldmVyYi1idW5kbGUuanMubWFwCg==";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"dattorro-reverb-bundle.js_url.mjs","names":[],"sources":["../../src/bundles/dattorro-reverb-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoKICAgIERhdHRvcnJvIFJldmVyYiBBdWRpb1dvcmtsZXQgSW1wbGVtZW50YXRpb24KICAgIE9yaWdpbmFsIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gYnkgS2jDtGkgTmd1eeG7hW4gKGtob2luKQogICAgaHR0cHM6Ly9naXRodWIuY29tL2tob2luL0RhdHRvcnJvUmV2ZXJiTm9kZQoKICAgIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyOgogICAgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCgogICAgSW4ganVyaXNkaWN0aW9ucyB0aGF0IHJlY29nbml6ZSBjb3B5cmlnaHQgbGF3cywgdGhpcyBzb2Z0d2FyZSBpcyB0bwogICAgYmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORC4KICAgIFRIRSBBVVRIT1IoUykgU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IgQU5ZVEhJTkcsIEFSSVNJTkcgRlJPTSwgT1IgSU4KICAgIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUuCiAgICAqLwogICAgLyoqCiAgICAgKiBEYXR0b3JybyBQbGF0ZSBSZXZlcmIgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCiAgICAgKgogICAgICogQmFzZWQgb24gSm9uIERhdHRvcnJvJ3MgMTk5NyBBRVMgcGFwZXIgIkVmZmVjdCBEZXNpZ24gUGFydCAxOiBSZXZlcmJlcmF0b3IgYW5kIE90aGVyIEZpbHRlcnMiCiAgICAgKiBJbXBsZW1lbnRzIGEgaGlnaC1xdWFsaXR5IHBsYXRlIHJldmVyYiBhbGdvcml0aG0gd2l0aCBtb2R1bGF0ZWQgZGVsYXkgbGluZXMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2Njcm1hLnN0YW5mb3JkLmVkdS9+ZGF0dG9ycm8vRWZmZWN0RGVzaWduUGFydDEucGRmCiAgICAgKi8KICAgIGNsYXNzIERhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgICAgICBfRGVsYXlzID0gW107CiAgICAgICAgX3BETGVuZ3RoOwogICAgICAgIF9wcmVEZWxheTsKICAgICAgICBfcERXcml0ZSA9IDA7CiAgICAgICAgX2xwMSA9IDAuMDsKICAgICAgICBfbHAyID0gMC4wOwogICAgICAgIF9scDMgPSAwLjA7CiAgICAgICAgX2V4Y1BoYXNlID0gMC4wOwogICAgICAgIF90YXBzOwogICAgICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBbInByZURlbGF5IiwgMCwgMCwgc2FtcGxlUmF0ZSAtIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiYmFuZHdpZHRoIiwgMC45OTk5LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMSIsIDAuNzUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiaW5wdXREaWZmdXNpb24yIiwgMC42MjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXkiLCAwLjUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24xIiwgMC43LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkZWNheURpZmZ1c2lvbjIiLCAwLjUsIDAsIDAuOTk5OTk5LCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRhbXBpbmciLCAwLjAwNSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25SYXRlIiwgMC41LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImV4Y3Vyc2lvbkRlcHRoIiwgMC43LCAwLCAyLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbIndldCIsIDAuMywgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkcnkiLCAwLjYsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgXS5tYXAoKFtuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgYXV0b21hdGlvblJhdGVdKSA9PiAoewogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgbWluVmFsdWU6IG1pblZhbHVlLAogICAgICAgICAgICAgICAgbWF4VmFsdWU6IG1heFZhbHVlLAogICAgICAgICAgICAgICAgYXV0b21hdGlvblJhdGU6IGF1dG9tYXRpb25SYXRlLAogICAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsKICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgIC8vIFByZS1kZWxheSBpcyBhbHdheXMgb25lLXNlY29uZCBsb25nLCByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IDEyOC1jaHVuawogICAgICAgICAgICB0aGlzLl9wRExlbmd0aCA9IHNhbXBsZVJhdGUgKyAoMTI4IC0gKHNhbXBsZVJhdGUgJSAxMjgpKTsKICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuX3BETGVuZ3RoKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBkZWxheSBsaW5lcyB3aXRoIHNwZWNpZmllZCBsZW5ndGhzIChpbiBzZWNvbmRzKQogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAwLjAwNDc3MTM0NSwgMC4wMDM1OTUzMDksIDAuMDEyNzM0Nzg3LCAwLjAwOTMwNzQ4MywgMC4wMjI1Nzk4ODYsIDAuMTQ5NjI1MzQ5LCAwLjA2MDQ4MTgzOSwgMC4xMjQ5OTU4LCAwLjAzMDUwOTcyNywKICAgICAgICAgICAgICAgIDAuMTQxNjk1NTA4LCAwLjA4OTI0NDMxMywgMC4xMDYyODAwMzEsCiAgICAgICAgICAgIF0uZm9yRWFjaCgobGVuZ3RoKSA9PiB0aGlzLm1ha2VEZWxheShsZW5ndGgpKTsKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0YXAgcG9zaXRpb25zIChpbiBzZWNvbmRzKSBmb3Igc3RlcmVvIG91dHB1dAogICAgICAgICAgICB0aGlzLl90YXBzID0gSW50MTZBcnJheS5mcm9tKFsKICAgICAgICAgICAgICAgIDAuMDA4OTM3ODcyLCAwLjA5OTkyOTQzOCwgMC4wNjQyNzg3NTQsIDAuMDY3MDY3NjM5LCAwLjA2Njg2NjAzMywgMC4wMDYyODMzOTEsIDAuMDM1ODE4Njg5LCAwLjAxMTg2MTE2MSwKICAgICAgICAgICAgICAgIDAuMTIxODcwOTA1LCAwLjA0MTI2MjA1NCwgMC4wODk4MTU1MywgMC4wNzA5MzE3NTYsIDAuMDExMjU2MzQyLCAwLjAwNDA2NTcyNCwKICAgICAgICAgICAgXSwgKGxlbmd0aCkgPT4gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBkZWxheSBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBsZW5ndGgKICAgICAgICAgKiBVc2VzIHBvd2VyLW9mLTIgc2l6aW5nIGZvciBlZmZpY2llbnQgd3JhcHBpbmcgd2l0aCBiaXR3aXNlIEFORAogICAgICAgICAqLwogICAgICAgIG1ha2VEZWxheShsZW5ndGgpIHsKICAgICAgICAgICAgY29uc3QgbGVuID0gTWF0aC5yb3VuZChsZW5ndGggKiBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgY29uc3QgbmV4dFBvdzIgPSAyICoqIE1hdGguY2VpbChNYXRoLmxvZzIobGVuKSk7CiAgICAgICAgICAgIHRoaXMuX0RlbGF5cy5wdXNoKFsKICAgICAgICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobmV4dFBvdzIpLAogICAgICAgICAgICAgICAgbGVuIC0gMSwgLy8gd3JpdGUgaW5kZXgKICAgICAgICAgICAgICAgIDAsIC8vIHJlYWQgaW5kZXgKICAgICAgICAgICAgICAgIG5leHRQb3cyIC0gMSwgLy8gbWFzayBmb3Igd3JhcHBpbmcKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFdyaXRlcyBhIHNhbXBsZSB0byBhIGRlbGF5IGxpbmUgYW5kIHJldHVybnMgdGhlIHdyaXR0ZW4gdmFsdWUKICAgICAgICAgKi8KICAgICAgICB3cml0ZURlbGF5KGluZGV4LCBkYXRhKSB7CiAgICAgICAgICAgIHJldHVybiAodGhpcy5fRGVsYXlzW2luZGV4XVswXVt0aGlzLl9EZWxheXNbaW5kZXhdWzFdXSA9IGRhdGEpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyB0aGUgY3VycmVudCBzYW1wbGUgZnJvbSBhIGRlbGF5IGxpbmUKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXkoaW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsyXV07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJlYWRzIGEgc2FtcGxlIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbgogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUF0KGluZGV4LCBvZmZzZXQpIHsKICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tpbmRleF07CiAgICAgICAgICAgIHJldHVybiBkWzBdWyhkWzJdICsgb2Zmc2V0KSAmIGRbM11dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSB3aXRoIGN1YmljIGludGVycG9sYXRpb24gYXQgYSBmcmFjdGlvbmFsIG9mZnNldAogICAgICAgICAqIFVzZXMgT2xsaSBOaWVtaXRhbG8ncyBvcHRpbWFsIGN1YmljIGludGVycG9sYXRpb24KICAgICAgICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm11c2ljZHNwLm9yZy9lbi9sYXRlc3QvT3RoZXIvNDktY3ViaWMtaW50ZXJwb2xsYXRpb24uaHRtbAogICAgICAgICAqLwogICAgICAgIHJlYWREZWxheUNBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICBjb25zdCBmcmFjID0gb2Zmc2V0IC0gfn5vZmZzZXQ7CiAgICAgICAgICAgIGxldCBpbnQgPSB+fm9mZnNldCArIGRbMl0gLSAxOwogICAgICAgICAgICBjb25zdCBtYXNrID0gZFszXTsKICAgICAgICAgICAgY29uc3QgeDAgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgxID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MiA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDMgPSBkWzBdW2ludCAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCBhID0gKDMgKiAoeDEgLSB4MikgLSB4MCArIHgzKSAvIDI7CiAgICAgICAgICAgIGNvbnN0IGIgPSAyICogeDIgKyB4MCAtICg1ICogeDEgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBjID0gKHgyIC0geDApIC8gMjsKICAgICAgICAgICAgcmV0dXJuICgoYSAqIGZyYWMgKyBiKSAqIGZyYWMgKyBjKSAqIGZyYWMgKyB4MTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUHJvY2VzcyBhdWRpbyBzYW1wbGVzCiAgICAgICAgICogRmlyc3QgaW5wdXQgd2lsbCBiZSBkb3dubWl4ZWQgdG8gbW9ubyBpZiBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IDIKICAgICAgICAgKiBPdXRwdXRzIHN0ZXJlbwogICAgICAgICAqLwogICAgICAgIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgIGNvbnN0IHBkID0gfn5wYXJhbWV0ZXJzLnByZURlbGF5WzBdOwogICAgICAgICAgICBjb25zdCBidyA9IHBhcmFtZXRlcnMuYmFuZHdpZHRoWzBdOwogICAgICAgICAgICBjb25zdCBmaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzaSA9IHBhcmFtZXRlcnMuaW5wdXREaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkYyA9IHBhcmFtZXRlcnMuZGVjYXlbMF07CiAgICAgICAgICAgIGNvbnN0IGZ0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjFbMF07CiAgICAgICAgICAgIGNvbnN0IHN0ID0gcGFyYW1ldGVycy5kZWNheURpZmZ1c2lvbjJbMF07CiAgICAgICAgICAgIGNvbnN0IGRwID0gMSAtIHBhcmFtZXRlcnMuZGFtcGluZ1swXTsKICAgICAgICAgICAgY29uc3QgZXggPSBwYXJhbWV0ZXJzLmV4Y3Vyc2lvblJhdGVbMF0gLyBzYW1wbGVSYXRlOwogICAgICAgICAgICBjb25zdCBlZCA9IChwYXJhbWV0ZXJzLmV4Y3Vyc2lvbkRlcHRoWzBdICogc2FtcGxlUmF0ZSkgLyAxMDAwOwogICAgICAgICAgICBjb25zdCB3ZSA9IHBhcmFtZXRlcnMud2V0WzBdICogMC42OyAvLyBsbyAmIHJvIGJvdGggbXVsdC4gYnkgMC42IGFueXdheXMKICAgICAgICAgICAgY29uc3QgZHIgPSBwYXJhbWV0ZXJzLmRyeVswXTsKICAgICAgICAgICAgLy8gV3JpdGUgdG8gcHJlZGVsYXkgYW5kIGRyeSBvdXRwdXQKICAgICAgICAgICAgaWYgKGlucHV0c1swXS5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxMjc7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXlbdGhpcy5fcERXcml0ZSArIGldID0gKGlucHV0c1swXVswXVtpXSArIGlucHV0c1swXVsxXVtpXSkgKiAwLjU7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gPSBpbnB1dHNbMF1bMV1baV0gKiBkcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpbnB1dHNbMF0ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuc2V0KGlucHV0c1swXVswXSwgdGhpcy5fcERXcml0ZSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzBdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBObyBpbnB1dDogdGhpcyBpcyB0aGUgbm9ybWFsIHN0YXRlIG9mIGFuIGlkbGUgcmV2ZXJiIGJ1cywgc28gd3JpdGUKICAgICAgICAgICAgICAgIC8vIHNpbGVuY2UgaW4gcGxhY2UgcmF0aGVyIHRoYW4gYWxsb2NhdGluZyBhIGJsb2NrIGV2ZXJ5IHF1YW50dW0uCiAgICAgICAgICAgICAgICB0aGlzLl9wcmVEZWxheS5maWxsKDAsIHRoaXMuX3BEV3JpdGUsIHRoaXMuX3BEV3JpdGUgKyAxMjgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgICAgd2hpbGUgKGkgPCAxMjgpIHsKICAgICAgICAgICAgICAgIGxldCBsbyA9IDAuMDsKICAgICAgICAgICAgICAgIGxldCBybyA9IDAuMDsKICAgICAgICAgICAgICAgIC8vIElucHV0IGxvdy1wYXNzIGZpbHRlciAoYmFuZHdpZHRoKQogICAgICAgICAgICAgICAgdGhpcy5fbHAxICs9IGJ3ICogKHRoaXMuX3ByZURlbGF5Wyh0aGlzLl9wRExlbmd0aCArIHRoaXMuX3BEV3JpdGUgLSBwZCArIGkpICUgdGhpcy5fcERMZW5ndGhdIC0gdGhpcy5fbHAxKTsKICAgICAgICAgICAgICAgIC8vIFByZS10YW5rIGRpZmZ1c2lvbiAoNCBhbGwtcGFzcyBmaWx0ZXJzKQogICAgICAgICAgICAgICAgbGV0IHByZSA9IHRoaXMud3JpdGVEZWxheSgwLCB0aGlzLl9scDEgLSBmaSAqIHRoaXMucmVhZERlbGF5KDApKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgxLCBmaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgxKSkgKyB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMiwgZmkgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgxKSAtIHNpICogdGhpcy5yZWFkRGVsYXkoMikpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDMsIHNpICogKHByZSAtIHRoaXMucmVhZERlbGF5KDMpKSArIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gc2kgKiBwcmUgKyB0aGlzLnJlYWREZWxheSgzKTsKICAgICAgICAgICAgICAgIC8vIE1vZHVsYXRlZCBleGN1cnNpb25zIGZvciBjaG9ydXMgZWZmZWN0CiAgICAgICAgICAgICAgICBjb25zdCBleGMgPSBlZCAqICgxICsgTWF0aC5jb3ModGhpcy5fZXhjUGhhc2UgKiA2LjI4KSk7CiAgICAgICAgICAgICAgICBjb25zdCBleGMyID0gZWQgKiAoMSArIE1hdGguc2luKHRoaXMuX2V4Y1BoYXNlICogNi4yODQ3KSk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IGxvb3AgKHRhbmsgZGlmZnVzZSAxIC0+IGxvbmcgZGVsYXkgMSAtPiBkYW1wIDEgLT4gdGFuayBkaWZmdXNlIDIgLT4gbG9uZyBkZWxheSAyKQogICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDExKSArIGZ0ICogdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoNSwgdGhpcy5yZWFkRGVsYXlDQXQoNCwgZXhjKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDIgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoNSkgLSB0aGlzLl9scDIpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg2LCBkYyAqIHRoaXMuX2xwMiAtIHN0ICogdGhpcy5yZWFkRGVsYXkoNikpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDcsIHRoaXMucmVhZERlbGF5KDYpICsgc3QgKiB0ZW1wKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGxvb3AgKHRhbmsgZGlmZnVzZSAzIC0+IGxvbmcgZGVsYXkgMyAtPiBkYW1wIDIgLT4gdGFuayBkaWZmdXNlIDQgLT4gbG9uZyBkZWxheSA0KQogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSg4LCBzcGxpdCArIGRjICogdGhpcy5yZWFkRGVsYXkoNykgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDgsIGV4YzIpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg5LCB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSAtIGZ0ICogdGVtcCk7CiAgICAgICAgICAgICAgICB0aGlzLl9scDMgKz0gZHAgKiAodGhpcy5yZWFkRGVsYXkoOSkgLSB0aGlzLl9scDMpOwogICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMud3JpdGVEZWxheSgxMCwgZGMgKiB0aGlzLl9scDMgLSBzdCAqIHRoaXMucmVhZERlbGF5KDEwKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoMTEsIHRoaXMucmVhZERlbGF5KDEwKSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBMZWZ0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBsbyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg5LCB0aGlzLl90YXBzWzBdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDEwLCB0aGlzLl90YXBzWzJdKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbM10pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzRdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s1XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbNl0pOwogICAgICAgICAgICAgICAgLy8gUmlnaHQgb3V0cHV0OiBzdW0gb2YgdGFwcyBmcm9tIGJvdGggbG9vcHMKICAgICAgICAgICAgICAgIHJvID0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDUsIHRoaXMuX3RhcHNbN10pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzhdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNiwgdGhpcy5fdGFwc1s5XSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDcsIHRoaXMuX3RhcHNbMTBdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1sxMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1sxMl0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMSwgdGhpcy5fdGFwc1sxM10pOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVswXVtpXSArPSBsbyAqIHdlOwogICAgICAgICAgICAgICAgb3V0cHV0c1swXVsxXVtpXSArPSBybyAqIHdlOwogICAgICAgICAgICAgICAgdGhpcy5fZXhjUGhhc2UgKz0gZXg7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIGFsbCBkZWxheSBsaW5lIGluZGljZXMKICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5fRGVsYXlzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuX0RlbGF5c1tqXTsKICAgICAgICAgICAgICAgICAgICBkWzFdID0gKGRbMV0gKyAxKSAmIGRbM107CiAgICAgICAgICAgICAgICAgICAgZFsyXSA9IChkWzJdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmVEZWxheSBpbmRleAogICAgICAgICAgICB0aGlzLl9wRFdyaXRlID0gKHRoaXMuX3BEV3JpdGUgKyAxMjgpICUgdGhpcy5fcERMZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJlZ2lzdGVyUHJvY2Vzc29yKCJkYXR0b3Jyby1yZXZlcmIiLCBEYXR0b3Jyb1JldmVyYlByb2Nlc3Nvcik7CiAgICBjb25zb2xlLmxvZygiRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgcmVnaXN0ZXJlZCIpOwoKICAgIGV4cG9ydHMuRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IgPSBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvcjsKCiAgICByZXR1cm4gZXhwb3J0czsKCn0pKHt9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0dG9ycm8tcmV2ZXJiLWJ1bmRsZS5qcy5tYXAK\""],"mappings":";AAAA,IAAA,IAAe"}
1
+ {"version":3,"file":"dattorro-reverb-bundle.js_url.mjs","names":[],"sources":["../../src/bundles/dattorro-reverb-bundle.js?url"],"sourcesContent":["export default \"data:text/javascript;base64,dmFyIGRhdHRvcnJvUmV2ZXJiID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoqIFRlcm1pbmFsIHJldGlyZW1lbnQgaXMgZGlzdGluY3QgZnJvbSB0ZW1wb3JhcmlseSBsb3NpbmcgYW4gaW5wdXQgb3IgYnlwYXNzaW5nIGFuIGVmZmVjdC4gKi8KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRWZmZWN0UHJvY2Vzc29yKG5hbWUsIFByb2Nlc3NvcikgewogICAgICAgIGNsYXNzIE93bmVkRWZmZWN0UHJvY2Vzc29yIGV4dGVuZHMgUHJvY2Vzc29yIHsKICAgICAgICAgICAgZGlzcG9zZWQgPSBmYWxzZTsKICAgICAgICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykgewogICAgICAgICAgICAgICAgc3VwZXIob3B0aW9ucyk7CiAgICAgICAgICAgICAgICB0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSAiY2Fjb3Bob255OmRpc3Bvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKCJjYWNvcGhvbnk6ZGlzcG9zZWQiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQuY2xvc2UoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kaXNwb3NlZCAmJiBzdXBlci5wcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVnaXN0ZXJQcm9jZXNzb3IobmFtZSwgT3duZWRFZmZlY3RQcm9jZXNzb3IpOwogICAgfQoKICAgIC8qKgogICAgICogRGF0dG9ycm8gUGxhdGUgUmV2ZXJiIEF1ZGlvV29ya2xldFByb2Nlc3NvcgogICAgICoKICAgICAqIEJhc2VkIG9uIEpvbiBEYXR0b3JybydzIDE5OTcgQUVTIHBhcGVyICJFZmZlY3QgRGVzaWduIFBhcnQgMTogUmV2ZXJiZXJhdG9yIGFuZCBPdGhlciBGaWx0ZXJzIgogICAgICogSW1wbGVtZW50cyBhIGhpZ2gtcXVhbGl0eSBwbGF0ZSByZXZlcmIgYWxnb3JpdGhtIHdpdGggbW9kdWxhdGVkIGRlbGF5IGxpbmVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9jY3JtYS5zdGFuZm9yZC5lZHUvfmRhdHRvcnJvL0VmZmVjdERlc2lnblBhcnQxLnBkZgogICAgICovCiAgICBjbGFzcyBEYXR0b3Jyb1JldmVyYlByb2Nlc3NvciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgICAgICAgX0RlbGF5cyA9IFtdOwogICAgICAgIF9wRExlbmd0aDsKICAgICAgICBfcHJlRGVsYXk7CiAgICAgICAgX3BEV3JpdGUgPSAwOwogICAgICAgIF9scDEgPSAwLjA7CiAgICAgICAgX2xwMiA9IDAuMDsKICAgICAgICBfbHAzID0gMC4wOwogICAgICAgIF9leGNQaGFzZSA9IDAuMDsKICAgICAgICBfdGFwczsKICAgICAgICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgWyJwcmVEZWxheSIsIDAsIDAsIHNhbXBsZVJhdGUgLSAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImJhbmR3aWR0aCIsIDAuOTk5OSwgMCwgMSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJpbnB1dERpZmZ1c2lvbjEiLCAwLjc1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImlucHV0RGlmZnVzaW9uMiIsIDAuNjI1LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5IiwgMC41LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgICAgICBbImRlY2F5RGlmZnVzaW9uMSIsIDAuNywgMCwgMC45OTk5OTksICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZGVjYXlEaWZmdXNpb24yIiwgMC41LCAwLCAwLjk5OTk5OSwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJkYW1waW5nIiwgMC4wMDUsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZXhjdXJzaW9uUmF0ZSIsIDAuNSwgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJleGN1cnNpb25EZXB0aCIsIDAuNywgMCwgMiwgImstcmF0ZSJdLAogICAgICAgICAgICAgICAgWyJ3ZXQiLCAwLjMsIDAsIDEsICJrLXJhdGUiXSwKICAgICAgICAgICAgICAgIFsiZHJ5IiwgMC42LCAwLCAxLCAiay1yYXRlIl0sCiAgICAgICAgICAgIF0ubWFwKChbbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGF1dG9tYXRpb25SYXRlXSkgPT4gKHsKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSwKICAgICAgICAgICAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSwKICAgICAgICAgICAgICAgIGF1dG9tYXRpb25SYXRlOiBhdXRvbWF0aW9uUmF0ZSwKICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7CiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMpOwogICAgICAgICAgICAvLyBQcmUtZGVsYXkgaXMgYWx3YXlzIG9uZS1zZWNvbmQgbG9uZywgcm91bmRlZCB0byB0aGUgbmVhcmVzdCAxMjgtY2h1bmsKICAgICAgICAgICAgdGhpcy5fcERMZW5ndGggPSBzYW1wbGVSYXRlICsgKDEyOCAtIChzYW1wbGVSYXRlICUgMTI4KSk7CiAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9wRExlbmd0aCk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZGVsYXkgbGluZXMgd2l0aCBzcGVjaWZpZWQgbGVuZ3RocyAoaW4gc2Vjb25kcykKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgMC4wMDQ3NzEzNDUsIDAuMDAzNTk1MzA5LCAwLjAxMjczNDc4NywgMC4wMDkzMDc0ODMsIDAuMDIyNTc5ODg2LCAwLjE0OTYyNTM0OSwgMC4wNjA0ODE4MzksIDAuMTI0OTk1OCwgMC4wMzA1MDk3MjcsCiAgICAgICAgICAgICAgICAwLjE0MTY5NTUwOCwgMC4wODkyNDQzMTMsIDAuMTA2MjgwMDMxLAogICAgICAgICAgICBdLmZvckVhY2goKGxlbmd0aCkgPT4gdGhpcy5tYWtlRGVsYXkobGVuZ3RoKSk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGFwIHBvc2l0aW9ucyAoaW4gc2Vjb25kcykgZm9yIHN0ZXJlbyBvdXRwdXQKICAgICAgICAgICAgdGhpcy5fdGFwcyA9IEludDE2QXJyYXkuZnJvbShbCiAgICAgICAgICAgICAgICAwLjAwODkzNzg3MiwgMC4wOTk5Mjk0MzgsIDAuMDY0Mjc4NzU0LCAwLjA2NzA2NzYzOSwgMC4wNjY4NjYwMzMsIDAuMDA2MjgzMzkxLCAwLjAzNTgxODY4OSwgMC4wMTE4NjExNjEsCiAgICAgICAgICAgICAgICAwLjEyMTg3MDkwNSwgMC4wNDEyNjIwNTQsIDAuMDg5ODE1NTMsIDAuMDcwOTMxNzU2LCAwLjAxMTI1NjM0MiwgMC4wMDQwNjU3MjQsCiAgICAgICAgICAgIF0sIChsZW5ndGgpID0+IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSkpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBDcmVhdGVzIGEgZGVsYXkgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGVuZ3RoCiAgICAgICAgICogVXNlcyBwb3dlci1vZi0yIHNpemluZyBmb3IgZWZmaWNpZW50IHdyYXBwaW5nIHdpdGggYml0d2lzZSBBTkQKICAgICAgICAgKi8KICAgICAgICBtYWtlRGVsYXkobGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnN0IGxlbiA9IE1hdGgucm91bmQobGVuZ3RoICogc2FtcGxlUmF0ZSk7CiAgICAgICAgICAgIGNvbnN0IG5leHRQb3cyID0gMiAqKiBNYXRoLmNlaWwoTWF0aC5sb2cyKGxlbikpOwogICAgICAgICAgICB0aGlzLl9EZWxheXMucHVzaChbCiAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG5leHRQb3cyKSwKICAgICAgICAgICAgICAgIGxlbiAtIDEsIC8vIHdyaXRlIGluZGV4CiAgICAgICAgICAgICAgICAwLCAvLyByZWFkIGluZGV4CiAgICAgICAgICAgICAgICBuZXh0UG93MiAtIDEsIC8vIG1hc2sgZm9yIHdyYXBwaW5nCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBXcml0ZXMgYSBzYW1wbGUgdG8gYSBkZWxheSBsaW5lIGFuZCByZXR1cm5zIHRoZSB3cml0dGVuIHZhbHVlCiAgICAgICAgICovCiAgICAgICAgd3JpdGVEZWxheShpbmRleCwgZGF0YSkgewogICAgICAgICAgICByZXR1cm4gKHRoaXMuX0RlbGF5c1tpbmRleF1bMF1bdGhpcy5fRGVsYXlzW2luZGV4XVsxXV0gPSBkYXRhKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgdGhlIGN1cnJlbnQgc2FtcGxlIGZyb20gYSBkZWxheSBsaW5lCiAgICAgICAgICovCiAgICAgICAgcmVhZERlbGF5KGluZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9EZWxheXNbaW5kZXhdWzBdW3RoaXMuX0RlbGF5c1tpbmRleF1bMl1dOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZWFkcyBhIHNhbXBsZSBhdCBhIHNwZWNpZmljIG9mZnNldCBmcm9tIHRoZSBjdXJyZW50IHJlYWQgcG9zaXRpb24KICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlBdChpbmRleCwgb2Zmc2V0KSB7CiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbaW5kZXhdOwogICAgICAgICAgICByZXR1cm4gZFswXVsoZFsyXSArIG9mZnNldCkgJiBkWzNdXTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmVhZHMgYSBzYW1wbGUgd2l0aCBjdWJpYyBpbnRlcnBvbGF0aW9uIGF0IGEgZnJhY3Rpb25hbCBvZmZzZXQKICAgICAgICAgKiBVc2VzIE9sbGkgTmllbWl0YWxvJ3Mgb3B0aW1hbCBjdWJpYyBpbnRlcnBvbGF0aW9uCiAgICAgICAgICogQHNlZSBodHRwczovL3d3dy5tdXNpY2RzcC5vcmcvZW4vbGF0ZXN0L090aGVyLzQ5LWN1YmljLWludGVycG9sbGF0aW9uLmh0bWwKICAgICAgICAgKi8KICAgICAgICByZWFkRGVsYXlDQXQoaW5kZXgsIG9mZnNldCkgewogICAgICAgICAgICBjb25zdCBkID0gdGhpcy5fRGVsYXlzW2luZGV4XTsKICAgICAgICAgICAgY29uc3QgZnJhYyA9IG9mZnNldCAtIH5+b2Zmc2V0OwogICAgICAgICAgICBsZXQgaW50ID0gfn5vZmZzZXQgKyBkWzJdIC0gMTsKICAgICAgICAgICAgY29uc3QgbWFzayA9IGRbM107CiAgICAgICAgICAgIGNvbnN0IHgwID0gZFswXVtpbnQrKyAmIG1hc2tdOwogICAgICAgICAgICBjb25zdCB4MSA9IGRbMF1baW50KysgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgeDIgPSBkWzBdW2ludCsrICYgbWFza107CiAgICAgICAgICAgIGNvbnN0IHgzID0gZFswXVtpbnQgJiBtYXNrXTsKICAgICAgICAgICAgY29uc3QgYSA9ICgzICogKHgxIC0geDIpIC0geDAgKyB4MykgLyAyOwogICAgICAgICAgICBjb25zdCBiID0gMiAqIHgyICsgeDAgLSAoNSAqIHgxICsgeDMpIC8gMjsKICAgICAgICAgICAgY29uc3QgYyA9ICh4MiAtIHgwKSAvIDI7CiAgICAgICAgICAgIHJldHVybiAoKGEgKiBmcmFjICsgYikgKiBmcmFjICsgYykgKiBmcmFjICsgeDE7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFByb2Nlc3MgYXVkaW8gc2FtcGxlcwogICAgICAgICAqIEZpcnN0IGlucHV0IHdpbGwgYmUgZG93bm1peGVkIHRvIG1vbm8gaWYgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCAyCiAgICAgICAgICogT3V0cHV0cyBzdGVyZW8KICAgICAgICAgKi8KICAgICAgICBwcm9jZXNzKGlucHV0cywgb3V0cHV0cywgcGFyYW1ldGVycykgewogICAgICAgICAgICBjb25zdCBwZCA9IH5+cGFyYW1ldGVycy5wcmVEZWxheVswXTsKICAgICAgICAgICAgY29uc3QgYncgPSBwYXJhbWV0ZXJzLmJhbmR3aWR0aFswXTsKICAgICAgICAgICAgY29uc3QgZmkgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMVswXTsKICAgICAgICAgICAgY29uc3Qgc2kgPSBwYXJhbWV0ZXJzLmlucHV0RGlmZnVzaW9uMlswXTsKICAgICAgICAgICAgY29uc3QgZGMgPSBwYXJhbWV0ZXJzLmRlY2F5WzBdOwogICAgICAgICAgICBjb25zdCBmdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24xWzBdOwogICAgICAgICAgICBjb25zdCBzdCA9IHBhcmFtZXRlcnMuZGVjYXlEaWZmdXNpb24yWzBdOwogICAgICAgICAgICBjb25zdCBkcCA9IDEgLSBwYXJhbWV0ZXJzLmRhbXBpbmdbMF07CiAgICAgICAgICAgIGNvbnN0IGV4ID0gcGFyYW1ldGVycy5leGN1cnNpb25SYXRlWzBdIC8gc2FtcGxlUmF0ZTsKICAgICAgICAgICAgY29uc3QgZWQgPSAocGFyYW1ldGVycy5leGN1cnNpb25EZXB0aFswXSAqIHNhbXBsZVJhdGUpIC8gMTAwMDsKICAgICAgICAgICAgY29uc3Qgd2UgPSBwYXJhbWV0ZXJzLndldFswXSAqIDAuNjsgLy8gbG8gJiBybyBib3RoIG11bHQuIGJ5IDAuNiBhbnl3YXlzCiAgICAgICAgICAgIGNvbnN0IGRyID0gcGFyYW1ldGVycy5kcnlbMF07CiAgICAgICAgICAgIC8vIFdyaXRlIHRvIHByZWRlbGF5IGFuZCBkcnkgb3V0cHV0CiAgICAgICAgICAgIGlmIChpbnB1dHNbMF0ubGVuZ3RoID09PSAyKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTI3OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5W3RoaXMuX3BEV3JpdGUgKyBpXSA9IChpbnB1dHNbMF1bMF1baV0gKyBpbnB1dHNbMF1bMV1baV0pICogMC41OwogICAgICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gPSBpbnB1dHNbMF1bMF1baV0gKiBkcjsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzFdW2ldID0gaW5wdXRzWzBdWzFdW2ldICogZHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaW5wdXRzWzBdLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX3ByZURlbGF5LnNldChpbnB1dHNbMF1bMF0sIHRoaXMuX3BEV3JpdGUpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDEyNzsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRzWzBdWzBdW2ldID0gb3V0cHV0c1swXVsxXVtpXSA9IGlucHV0c1swXVswXVtpXSAqIGRyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm8gaW5wdXQ6IHRoaXMgaXMgdGhlIG5vcm1hbCBzdGF0ZSBvZiBhbiBpZGxlIHJldmVyYiBidXMsIHNvIHdyaXRlCiAgICAgICAgICAgICAgICAvLyBzaWxlbmNlIGluIHBsYWNlIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgYSBibG9jayBldmVyeSBxdWFudHVtLgogICAgICAgICAgICAgICAgdGhpcy5fcHJlRGVsYXkuZmlsbCgwLCB0aGlzLl9wRFdyaXRlLCB0aGlzLl9wRFdyaXRlICsgMTI4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgMTI4KSB7CiAgICAgICAgICAgICAgICBsZXQgbG8gPSAwLjA7CiAgICAgICAgICAgICAgICBsZXQgcm8gPSAwLjA7CiAgICAgICAgICAgICAgICAvLyBJbnB1dCBsb3ctcGFzcyBmaWx0ZXIgKGJhbmR3aWR0aCkKICAgICAgICAgICAgICAgIHRoaXMuX2xwMSArPSBidyAqICh0aGlzLl9wcmVEZWxheVsodGhpcy5fcERMZW5ndGggKyB0aGlzLl9wRFdyaXRlIC0gcGQgKyBpKSAlIHRoaXMuX3BETGVuZ3RoXSAtIHRoaXMuX2xwMSk7CiAgICAgICAgICAgICAgICAvLyBQcmUtdGFuayBkaWZmdXNpb24gKDQgYWxsLXBhc3MgZmlsdGVycykKICAgICAgICAgICAgICAgIGxldCBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMCwgdGhpcy5fbHAxIC0gZmkgKiB0aGlzLnJlYWREZWxheSgwKSk7CiAgICAgICAgICAgICAgICBwcmUgPSB0aGlzLndyaXRlRGVsYXkoMSwgZmkgKiAocHJlIC0gdGhpcy5yZWFkRGVsYXkoMSkpICsgdGhpcy5yZWFkRGVsYXkoMCkpOwogICAgICAgICAgICAgICAgcHJlID0gdGhpcy53cml0ZURlbGF5KDIsIGZpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMSkgLSBzaSAqIHRoaXMucmVhZERlbGF5KDIpKTsKICAgICAgICAgICAgICAgIHByZSA9IHRoaXMud3JpdGVEZWxheSgzLCBzaSAqIChwcmUgLSB0aGlzLnJlYWREZWxheSgzKSkgKyB0aGlzLnJlYWREZWxheSgyKSk7CiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdCA9IHNpICogcHJlICsgdGhpcy5yZWFkRGVsYXkoMyk7CiAgICAgICAgICAgICAgICAvLyBNb2R1bGF0ZWQgZXhjdXJzaW9ucyBmb3IgY2hvcnVzIGVmZmVjdAogICAgICAgICAgICAgICAgY29uc3QgZXhjID0gZWQgKiAoMSArIE1hdGguY29zKHRoaXMuX2V4Y1BoYXNlICogNi4yOCkpOwogICAgICAgICAgICAgICAgY29uc3QgZXhjMiA9IGVkICogKDEgKyBNYXRoLnNpbih0aGlzLl9leGNQaGFzZSAqIDYuMjg0NykpOwogICAgICAgICAgICAgICAgLy8gTGVmdCBsb29wICh0YW5rIGRpZmZ1c2UgMSAtPiBsb25nIGRlbGF5IDEgLT4gZGFtcCAxIC0+IHRhbmsgZGlmZnVzZSAyIC0+IGxvbmcgZGVsYXkgMikKICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy53cml0ZURlbGF5KDQsIHNwbGl0ICsgZGMgKiB0aGlzLnJlYWREZWxheSgxMSkgKyBmdCAqIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDUsIHRoaXMucmVhZERlbGF5Q0F0KDQsIGV4YykgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAyICs9IGRwICogKHRoaXMucmVhZERlbGF5KDUpIC0gdGhpcy5fbHAyKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoNiwgZGMgKiB0aGlzLl9scDIgLSBzdCAqIHRoaXMucmVhZERlbGF5KDYpKTsKICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEZWxheSg3LCB0aGlzLnJlYWREZWxheSg2KSArIHN0ICogdGVtcCk7CiAgICAgICAgICAgICAgICAvLyBSaWdodCBsb29wICh0YW5rIGRpZmZ1c2UgMyAtPiBsb25nIGRlbGF5IDMgLT4gZGFtcCAyIC0+IHRhbmsgZGlmZnVzZSA0IC0+IGxvbmcgZGVsYXkgNCkKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoOCwgc3BsaXQgKyBkYyAqIHRoaXMucmVhZERlbGF5KDcpICsgZnQgKiB0aGlzLnJlYWREZWxheUNBdCg4LCBleGMyKSk7CiAgICAgICAgICAgICAgICB0aGlzLndyaXRlRGVsYXkoOSwgdGhpcy5yZWFkRGVsYXlDQXQoOCwgZXhjMikgLSBmdCAqIHRlbXApOwogICAgICAgICAgICAgICAgdGhpcy5fbHAzICs9IGRwICogKHRoaXMucmVhZERlbGF5KDkpIC0gdGhpcy5fbHAzKTsKICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLndyaXRlRGVsYXkoMTAsIGRjICogdGhpcy5fbHAzIC0gc3QgKiB0aGlzLnJlYWREZWxheSgxMCkpOwogICAgICAgICAgICAgICAgdGhpcy53cml0ZURlbGF5KDExLCB0aGlzLnJlYWREZWxheSgxMCkgKyBzdCAqIHRlbXApOwogICAgICAgICAgICAgICAgLy8gTGVmdCBvdXRwdXQ6IHN1bSBvZiB0YXBzIGZyb20gYm90aCBsb29wcwogICAgICAgICAgICAgICAgbG8gPQogICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoOSwgdGhpcy5fdGFwc1swXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCgxMCwgdGhpcy5fdGFwc1syXSkgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDExLCB0aGlzLl90YXBzWzNdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s0XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbNV0pIC0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzZdKTsKICAgICAgICAgICAgICAgIC8vIFJpZ2h0IG91dHB1dDogc3VtIG9mIHRhcHMgZnJvbSBib3RoIGxvb3BzCiAgICAgICAgICAgICAgICBybyA9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg1LCB0aGlzLl90YXBzWzddKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoNSwgdGhpcy5fdGFwc1s4XSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDYsIHRoaXMuX3RhcHNbOV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkRGVsYXlBdCg3LCB0aGlzLl90YXBzWzEwXSkgLQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWREZWxheUF0KDksIHRoaXMuX3RhcHNbMTFdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTAsIHRoaXMuX3RhcHNbMTJdKSAtCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZERlbGF5QXQoMTEsIHRoaXMuX3RhcHNbMTNdKTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMF1baV0gKz0gbG8gKiB3ZTsKICAgICAgICAgICAgICAgIG91dHB1dHNbMF1bMV1baV0gKz0gcm8gKiB3ZTsKICAgICAgICAgICAgICAgIHRoaXMuX2V4Y1BoYXNlICs9IGV4OwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBhbGwgZGVsYXkgbGluZSBpbmRpY2VzCiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuX0RlbGF5cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLl9EZWxheXNbal07CiAgICAgICAgICAgICAgICAgICAgZFsxXSA9IChkWzFdICsgMSkgJiBkWzNdOwogICAgICAgICAgICAgICAgICAgIGRbMl0gPSAoZFsyXSArIDEpICYgZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBVcGRhdGUgcHJlRGVsYXkgaW5kZXgKICAgICAgICAgICAgdGhpcy5fcERXcml0ZSA9ICh0aGlzLl9wRFdyaXRlICsgMTI4KSAlIHRoaXMuX3BETGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZWdpc3RlckVmZmVjdFByb2Nlc3NvcigiZGF0dG9ycm8tcmV2ZXJiIiwgRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3IpOwogICAgY29uc29sZS5sb2coIkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yIHJlZ2lzdGVyZWQiKTsKCiAgICBleHBvcnRzLkRhdHRvcnJvUmV2ZXJiUHJvY2Vzc29yID0gRGF0dG9ycm9SZXZlcmJQcm9jZXNzb3I7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdHRvcnJvLXJldmVyYi1idW5kbGUuanMubWFwCg==\""],"mappings":";AAAA,IAAA,IAAe"}