testcafe 1.17.2-alpha.2 → 1.17.2-rc.1

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 (40) hide show
  1. package/README.md +34 -30
  2. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/client-function-executor.js +12 -32
  3. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/clients-manager.js +14 -0
  4. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/execution-context.js +85 -0
  5. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +9 -4
  6. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/shared-adapter-initializer.js +53 -0
  7. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/cursor.js +103 -0
  8. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/dom-utils.js +113 -0
  9. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/index.js +10 -0
  10. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/position-utils.js +81 -0
  11. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/style-utils.js +158 -0
  12. package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -2
  13. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +32 -2
  14. package/lib/client/automation/index.js +450 -372
  15. package/lib/client/automation/index.min.js +1 -1
  16. package/lib/client/core/index.js +31 -33
  17. package/lib/client/core/index.min.js +1 -1
  18. package/lib/client/core/scroll/adapter/index.js +15 -0
  19. package/lib/client/core/scroll/index.js +235 -0
  20. package/lib/client/core/utils/shared/adapter/index.js +18 -0
  21. package/lib/client/core/utils/shared/position.js +86 -0
  22. package/lib/client/core/utils/shared/scroll.js +85 -0
  23. package/lib/client/core/utils/shared/style.js +27 -0
  24. package/lib/client/driver/index.js +75 -77
  25. package/lib/client/driver/index.min.js +1 -1
  26. package/lib/client/proxyless/index.js +3250 -2447
  27. package/lib/client/ui/index.js +23 -21
  28. package/lib/client/ui/index.min.js +1 -1
  29. package/lib/shared/actions/automations/settings.js +31 -0
  30. package/lib/shared/actions/cursor.js +63 -0
  31. package/lib/shared/adapter/index.js +3 -6
  32. package/lib/shared/utils/get-line-rect-intersection.js +42 -0
  33. package/lib/shared/utils/position.js +20 -0
  34. package/lib/shared/utils/values/axis-values.js +44 -0
  35. package/lib/shared/utils/values/boundary-values.js +39 -0
  36. package/lib/shared/utils/values/dimensions.js +18 -0
  37. package/package.json +3 -2
  38. package/ts-defs/index.d.ts +25 -14
  39. package/ts-defs/selectors.d.ts +3 -3
  40. package/ts-defs/testcafe-scripts.d.ts +3 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
- <a href="https://www.devexpress.com/products/testcafestudio/?utm_source=github.com&utm_medium=referral&utm_campaign=tc-gh-banner">
3
- <img src="https://raw.github.com/DevExpress/testcafe/master/media/testcafe-studio-banner.png" alt="Try TestCafe Studio IDE" />
2
+ <a href="https://testcafe.io/403442/resources/blog/2021-10-7-dashboard-alpha-invitation-announce?utm_source=github.com&utm_medium=referral&utm_campaign=tc-gh-banner">
3
+ <img src="https://raw.github.com/DevExpress/testcafe/master/media/tda-banner.png" alt="Join TestCafe Dashboard “Alpha Test” Program" />
4
4
  </a>
5
5
  </p>
6
6
 
@@ -196,61 +196,65 @@ If you want your plugin to be listed below, [send us a note in a Github issue](h
196
196
 
197
197
  Thank you to all the people who already contributed to TestCafe!
198
198
 
199
- [<img alt="aha-oretama" src="https://avatars.githubusercontent.com/u/7259161?v=4&s=117" width="117">](https://github.com/aha-oretama) |[<img alt="ai" src="https://avatars.githubusercontent.com/u/19343?v=4&s=117" width="117">](https://github.com/ai) |[<img alt="aleks-pro" src="https://avatars.githubusercontent.com/u/14822473?v=4&s=117" width="117">](https://github.com/aleks-pro) |[<img alt="AlexanderMoiseev" src="https://avatars.githubusercontent.com/u/1498953?v=4&s=117" width="117">](https://github.com/AlexanderMoiseev) |[<img alt="AlexanderMoskovkin" src="https://avatars.githubusercontent.com/u/12047804?v=4&s=117" width="117">](https://github.com/AlexanderMoskovkin) |[<img alt="alexey-lin" src="https://avatars.githubusercontent.com/u/13483856?v=4&s=117" width="117">](https://github.com/alexey-lin) |
199
+ [<img alt="aha-oretama" src="https://avatars.githubusercontent.com/u/7259161?v=4&s=117" width="117">](https://github.com/aha-oretama) |[<img alt="ai" src="https://avatars.githubusercontent.com/u/19343?v=4&s=117" width="117">](https://github.com/ai) |[<img alt="aleks-pro" src="https://avatars.githubusercontent.com/u/14822473?v=4&s=117" width="117">](https://github.com/aleks-pro) |[<img alt="Aleksey28" src="https://avatars.githubusercontent.com/u/32869530?v=4&s=117" width="117">](https://github.com/Aleksey28) |[<img alt="AlexanderMoiseev" src="https://avatars.githubusercontent.com/u/1498953?v=4&s=117" width="117">](https://github.com/AlexanderMoiseev) |[<img alt="AlexanderMoskovkin" src="https://avatars.githubusercontent.com/u/12047804?v=4&s=117" width="117">](https://github.com/AlexanderMoskovkin) |
200
200
  :---: |:---: |:---: |:---: |:---: |:---: |
201
- [aha-oretama](https://github.com/aha-oretama) |[ai](https://github.com/ai) |[aleks-pro](https://github.com/aleks-pro) |[AlexanderMoiseev](https://github.com/AlexanderMoiseev) |[AlexanderMoskovkin](https://github.com/AlexanderMoskovkin) |[alexey-lin](https://github.com/alexey-lin) |
201
+ [aha-oretama](https://github.com/aha-oretama) |[ai](https://github.com/ai) |[aleks-pro](https://github.com/aleks-pro) |[Aleksey28](https://github.com/Aleksey28) |[AlexanderMoiseev](https://github.com/AlexanderMoiseev) |[AlexanderMoskovkin](https://github.com/AlexanderMoskovkin) |
202
202
 
203
- [<img alt="AlexKamaev" src="https://avatars.githubusercontent.com/u/1678902?v=4&s=117" width="117">](https://github.com/AlexKamaev) |[<img alt="AlexSkorkin" src="https://avatars.githubusercontent.com/u/995726?v=4&s=117" width="117">](https://github.com/AlexSkorkin) |[<img alt="alexwybraniec" src="https://avatars.githubusercontent.com/u/521536?v=4&s=117" width="117">](https://github.com/alexwybraniec) |[<img alt="andrewbranch" src="https://avatars.githubusercontent.com/u/3277153?v=4&s=117" width="117">](https://github.com/andrewbranch) |[<img alt="AndreyBelym" src="https://avatars.githubusercontent.com/u/4479386?v=4&s=117" width="117">](https://github.com/AndreyBelym) |[<img alt="AndyWendt" src="https://avatars.githubusercontent.com/u/6130713?v=4&s=117" width="117">](https://github.com/AndyWendt) |
203
+ [<img alt="alexey-lin" src="https://avatars.githubusercontent.com/u/13483856?v=4&s=117" width="117">](https://github.com/alexey-lin) |[<img alt="AlexKamaev" src="https://avatars.githubusercontent.com/u/1678902?v=4&s=117" width="117">](https://github.com/AlexKamaev) |[<img alt="AlexSkorkin" src="https://avatars.githubusercontent.com/u/995726?v=4&s=117" width="117">](https://github.com/AlexSkorkin) |[<img alt="alexwybraniec" src="https://avatars.githubusercontent.com/u/521536?v=4&s=117" width="117">](https://github.com/alexwybraniec) |[<img alt="andrewbranch" src="https://avatars.githubusercontent.com/u/3277153?v=4&s=117" width="117">](https://github.com/andrewbranch) |[<img alt="AndreyBelym" src="https://avatars.githubusercontent.com/u/4479386?v=4&s=117" width="117">](https://github.com/AndreyBelym) |
204
204
  :---: |:---: |:---: |:---: |:---: |:---: |
205
- [AlexKamaev](https://github.com/AlexKamaev) |[AlexSkorkin](https://github.com/AlexSkorkin) |[alexwybraniec](https://github.com/alexwybraniec) |[andrewbranch](https://github.com/andrewbranch) |[AndreyBelym](https://github.com/AndreyBelym) |[AndyWendt](https://github.com/AndyWendt) |
205
+ [alexey-lin](https://github.com/alexey-lin) |[AlexKamaev](https://github.com/AlexKamaev) |[AlexSkorkin](https://github.com/AlexSkorkin) |[alexwybraniec](https://github.com/alexwybraniec) |[andrewbranch](https://github.com/andrewbranch) |[AndreyBelym](https://github.com/AndreyBelym) |
206
206
 
207
- [<img alt="anthophobiac" src="https://avatars.githubusercontent.com/u/16448031?v=4&s=117" width="117">](https://github.com/anthophobiac) |[<img alt="arubtsov" src="https://avatars.githubusercontent.com/u/10169557?v=4&s=117" width="117">](https://github.com/arubtsov) |[<img alt="augustomezencio-hotmart" src="https://avatars.githubusercontent.com/u/25016353?v=4&s=117" width="117">](https://github.com/augustomezencio-hotmart) |[<img alt="bdwain" src="https://avatars.githubusercontent.com/u/3982094?v=4&s=117" width="117">](https://github.com/bdwain) |[<img alt="benmonro" src="https://avatars.githubusercontent.com/u/399236?v=4&s=117" width="117">](https://github.com/benmonro) |[<img alt="beyondcompute" src="https://avatars.githubusercontent.com/u/248055?v=4&s=117" width="117">](https://github.com/beyondcompute) |
207
+ [<img alt="AndyWendt" src="https://avatars.githubusercontent.com/u/6130713?v=4&s=117" width="117">](https://github.com/AndyWendt) |[<img alt="AnnaKondratova" src="https://avatars.githubusercontent.com/u/27012218?v=4&s=117" width="117">](https://github.com/AnnaKondratova) |[<img alt="anthophobiac" src="https://avatars.githubusercontent.com/u/16448031?v=4&s=117" width="117">](https://github.com/anthophobiac) |[<img alt="arubtsov" src="https://avatars.githubusercontent.com/u/10169557?v=4&s=117" width="117">](https://github.com/arubtsov) |[<img alt="augustomezencio-hotmart" src="https://avatars.githubusercontent.com/u/25016353?v=4&s=117" width="117">](https://github.com/augustomezencio-hotmart) |[<img alt="bdwain" src="https://avatars.githubusercontent.com/u/3982094?v=4&s=117" width="117">](https://github.com/bdwain) |
208
208
  :---: |:---: |:---: |:---: |:---: |:---: |
209
- [anthophobiac](https://github.com/anthophobiac) |[arubtsov](https://github.com/arubtsov) |[augustomezencio-hotmart](https://github.com/augustomezencio-hotmart) |[bdwain](https://github.com/bdwain) |[benmonro](https://github.com/benmonro) |[beyondcompute](https://github.com/beyondcompute) |
209
+ [AndyWendt](https://github.com/AndyWendt) |[AnnaKondratova](https://github.com/AnnaKondratova) |[anthophobiac](https://github.com/anthophobiac) |[arubtsov](https://github.com/arubtsov) |[augustomezencio-hotmart](https://github.com/augustomezencio-hotmart) |[bdwain](https://github.com/bdwain) |
210
210
 
211
- [<img alt="bill-looby-i" src="https://avatars.githubusercontent.com/u/51128939?v=4&s=117" width="117">](https://github.com/bill-looby-i) |[<img alt="bsmithb2" src="https://avatars.githubusercontent.com/u/1773789?v=4&s=117" width="117">](https://github.com/bsmithb2) |[<img alt="caseyWebb" src="https://avatars.githubusercontent.com/u/5419074?v=4&s=117" width="117">](https://github.com/caseyWebb) |[<img alt="cdrini" src="https://avatars.githubusercontent.com/u/6251786?v=4&s=117" width="117">](https://github.com/cdrini) |[<img alt="cgfarmer4" src="https://avatars.githubusercontent.com/u/336449?v=4&s=117" width="117">](https://github.com/cgfarmer4) |[<img alt="Chris-Greaves" src="https://avatars.githubusercontent.com/u/28542943?v=4&s=117" width="117">](https://github.com/Chris-Greaves) |
211
+ [<img alt="benmonro" src="https://avatars.githubusercontent.com/u/399236?v=4&s=117" width="117">](https://github.com/benmonro) |[<img alt="beyondcompute" src="https://avatars.githubusercontent.com/u/248055?v=4&s=117" width="117">](https://github.com/beyondcompute) |[<img alt="bill-looby-i" src="https://avatars.githubusercontent.com/u/51128939?v=4&s=117" width="117">](https://github.com/bill-looby-i) |[<img alt="bsmithb2" src="https://avatars.githubusercontent.com/u/1773789?v=4&s=117" width="117">](https://github.com/bsmithb2) |[<img alt="caseyWebb" src="https://avatars.githubusercontent.com/u/5419074?v=4&s=117" width="117">](https://github.com/caseyWebb) |[<img alt="cdrini" src="https://avatars.githubusercontent.com/u/6251786?v=4&s=117" width="117">](https://github.com/cdrini) |
212
212
  :---: |:---: |:---: |:---: |:---: |:---: |
213
- [bill-looby-i](https://github.com/bill-looby-i) |[bsmithb2](https://github.com/bsmithb2) |[caseyWebb](https://github.com/caseyWebb) |[cdrini](https://github.com/cdrini) |[cgfarmer4](https://github.com/cgfarmer4) |[Chris-Greaves](https://github.com/Chris-Greaves) |
213
+ [benmonro](https://github.com/benmonro) |[beyondcompute](https://github.com/beyondcompute) |[bill-looby-i](https://github.com/bill-looby-i) |[bsmithb2](https://github.com/bsmithb2) |[caseyWebb](https://github.com/caseyWebb) |[cdrini](https://github.com/cdrini) |
214
214
 
215
- [<img alt="churkin" src="https://avatars.githubusercontent.com/u/5182202?v=4&s=117" width="117">](https://github.com/churkin) |[<img alt="dej611" src="https://avatars.githubusercontent.com/u/924948?v=4&s=117" width="117">](https://github.com/dej611) |[<img alt="DIRECTcut" src="https://avatars.githubusercontent.com/u/49588154?v=4&s=117" width="117">](https://github.com/DIRECTcut) |[<img alt="Dmitry-Ostashev" src="https://avatars.githubusercontent.com/u/24777868?v=4&s=117" width="117">](https://github.com/Dmitry-Ostashev) |[<img alt="ericyd" src="https://avatars.githubusercontent.com/u/8379268?v=4&s=117" width="117">](https://github.com/ericyd) |[<img alt="Farfurix" src="https://avatars.githubusercontent.com/u/30019338?v=4&s=117" width="117">](https://github.com/Farfurix) |
215
+ [<img alt="cgfarmer4" src="https://avatars.githubusercontent.com/u/336449?v=4&s=117" width="117">](https://github.com/cgfarmer4) |[<img alt="Chris-Greaves" src="https://avatars.githubusercontent.com/u/28542943?v=4&s=117" width="117">](https://github.com/Chris-Greaves) |[<img alt="churkin" src="https://avatars.githubusercontent.com/u/5182202?v=4&s=117" width="117">](https://github.com/churkin) |[<img alt="dej611" src="https://avatars.githubusercontent.com/u/924948?v=4&s=117" width="117">](https://github.com/dej611) |[<img alt="DIRECTcut" src="https://avatars.githubusercontent.com/u/49588154?v=4&s=117" width="117">](https://github.com/DIRECTcut) |[<img alt="Dmitry-Ostashev" src="https://avatars.githubusercontent.com/u/24777868?v=4&s=117" width="117">](https://github.com/Dmitry-Ostashev) |
216
216
  :---: |:---: |:---: |:---: |:---: |:---: |
217
- [churkin](https://github.com/churkin) |[dej611](https://github.com/dej611) |[DIRECTcut](https://github.com/DIRECTcut) |[Dmitry-Ostashev](https://github.com/Dmitry-Ostashev) |[ericyd](https://github.com/ericyd) |[Farfurix](https://github.com/Farfurix) |
217
+ [cgfarmer4](https://github.com/cgfarmer4) |[Chris-Greaves](https://github.com/Chris-Greaves) |[churkin](https://github.com/churkin) |[dej611](https://github.com/dej611) |[DIRECTcut](https://github.com/DIRECTcut) |[Dmitry-Ostashev](https://github.com/Dmitry-Ostashev) |
218
218
 
219
- [<img alt="GeoffreyBooth" src="https://avatars.githubusercontent.com/u/456802?v=4&s=117" width="117">](https://github.com/GeoffreyBooth) |[<img alt="helen-dikareva" src="https://avatars.githubusercontent.com/u/12034551?v=4&s=117" width="117">](https://github.com/helen-dikareva) |[<img alt="honsq90" src="https://avatars.githubusercontent.com/u/1791439?v=4&s=117" width="117">](https://github.com/honsq90) |[<img alt="infctr" src="https://avatars.githubusercontent.com/u/15550153?v=4&s=117" width="117">](https://github.com/infctr) |[<img alt="inikulin" src="https://avatars.githubusercontent.com/u/453071?v=4&s=117" width="117">](https://github.com/inikulin) |[<img alt="Ivan-Katovich" src="https://avatars.githubusercontent.com/u/7858279?v=4&s=117" width="117">](https://github.com/Ivan-Katovich) |
219
+ [<img alt="eignatyev" src="https://avatars.githubusercontent.com/u/12494773?v=4&s=117" width="117">](https://github.com/eignatyev) |[<img alt="ericyd" src="https://avatars.githubusercontent.com/u/8379268?v=4&s=117" width="117">](https://github.com/ericyd) |[<img alt="Farfurix" src="https://avatars.githubusercontent.com/u/30019338?v=4&s=117" width="117">](https://github.com/Farfurix) |[<img alt="flora8984461" src="https://avatars.githubusercontent.com/u/39588094?v=4&s=117" width="117">](https://github.com/flora8984461) |[<img alt="GeoffreyBooth" src="https://avatars.githubusercontent.com/u/456802?v=4&s=117" width="117">](https://github.com/GeoffreyBooth) |[<img alt="helen-dikareva" src="https://avatars.githubusercontent.com/u/12034551?v=4&s=117" width="117">](https://github.com/helen-dikareva) |
220
220
  :---: |:---: |:---: |:---: |:---: |:---: |
221
- [GeoffreyBooth](https://github.com/GeoffreyBooth) |[helen-dikareva](https://github.com/helen-dikareva) |[honsq90](https://github.com/honsq90) |[infctr](https://github.com/infctr) |[inikulin](https://github.com/inikulin) |[Ivan-Katovich](https://github.com/Ivan-Katovich) |
221
+ [eignatyev](https://github.com/eignatyev) |[ericyd](https://github.com/ericyd) |[Farfurix](https://github.com/Farfurix) |[flora8984461](https://github.com/flora8984461) |[GeoffreyBooth](https://github.com/GeoffreyBooth) |[helen-dikareva](https://github.com/helen-dikareva) |
222
222
 
223
- [<img alt="jamesgeorge007" src="https://avatars.githubusercontent.com/u/25279263?v=4&s=117" width="117">](https://github.com/jamesgeorge007) |[<img alt="jaypea" src="https://avatars.githubusercontent.com/u/367199?v=4&s=117" width="117">](https://github.com/jaypea) |[<img alt="kanhaiya15" src="https://avatars.githubusercontent.com/u/38152453?v=4&s=117" width="117">](https://github.com/kanhaiya15) |[<img alt="kirovboris" src="https://avatars.githubusercontent.com/u/3633477?v=4&s=117" width="117">](https://github.com/kirovboris) |[<img alt="kubejm" src="https://avatars.githubusercontent.com/u/8680565?v=4&s=117" width="117">](https://github.com/kubejm) |[<img alt="LavrovArtem" src="https://avatars.githubusercontent.com/u/5373460?v=4&s=117" width="117">](https://github.com/LavrovArtem) |
223
+ [<img alt="honsq90" src="https://avatars.githubusercontent.com/u/1791439?v=4&s=117" width="117">](https://github.com/honsq90) |[<img alt="infctr" src="https://avatars.githubusercontent.com/u/15550153?v=4&s=117" width="117">](https://github.com/infctr) |[<img alt="inikulin" src="https://avatars.githubusercontent.com/u/453071?v=4&s=117" width="117">](https://github.com/inikulin) |[<img alt="Ivan-Katovich" src="https://avatars.githubusercontent.com/u/7858279?v=4&s=117" width="117">](https://github.com/Ivan-Katovich) |[<img alt="jamesgeorge007" src="https://avatars.githubusercontent.com/u/25279263?v=4&s=117" width="117">](https://github.com/jamesgeorge007) |[<img alt="jaypea" src="https://avatars.githubusercontent.com/u/367199?v=4&s=117" width="117">](https://github.com/jaypea) |
224
224
  :---: |:---: |:---: |:---: |:---: |:---: |
225
- [jamesgeorge007](https://github.com/jamesgeorge007) |[jaypea](https://github.com/jaypea) |[kanhaiya15](https://github.com/kanhaiya15) |[kirovboris](https://github.com/kirovboris) |[kubejm](https://github.com/kubejm) |[LavrovArtem](https://github.com/LavrovArtem) |
225
+ [honsq90](https://github.com/honsq90) |[infctr](https://github.com/infctr) |[inikulin](https://github.com/inikulin) |[Ivan-Katovich](https://github.com/Ivan-Katovich) |[jamesgeorge007](https://github.com/jamesgeorge007) |[jaypea](https://github.com/jaypea) |
226
226
 
227
- [<img alt="link89" src="https://avatars.githubusercontent.com/u/3314130?v=4&s=117" width="117">](https://github.com/link89) |[<img alt="lzxb" src="https://avatars.githubusercontent.com/u/8424643?v=4&s=117" width="117">](https://github.com/lzxb) |[<img alt="macdonaldr93" src="https://avatars.githubusercontent.com/u/5184848?v=4&s=117" width="117">](https://github.com/macdonaldr93) |[<img alt="MargaritaLoseva" src="https://avatars.githubusercontent.com/u/12034505?v=4&s=117" width="117">](https://github.com/MargaritaLoseva) |[<img alt="Marketionist" src="https://avatars.githubusercontent.com/u/534603?v=4&s=117" width="117">](https://github.com/Marketionist) |[<img alt="MatthewNielsen27" src="https://avatars.githubusercontent.com/u/35040439?v=4&s=117" width="117">](https://github.com/MatthewNielsen27) |
227
+ [<img alt="kanhaiya15" src="https://avatars.githubusercontent.com/u/38152453?v=4&s=117" width="117">](https://github.com/kanhaiya15) |[<img alt="kirovboris" src="https://avatars.githubusercontent.com/u/3633477?v=4&s=117" width="117">](https://github.com/kirovboris) |[<img alt="kisrefod" src="https://avatars.githubusercontent.com/u/27427579?v=4&s=117" width="117">](https://github.com/kisrefod) |[<img alt="kubejm" src="https://avatars.githubusercontent.com/u/8680565?v=4&s=117" width="117">](https://github.com/kubejm) |[<img alt="LavrovArtem" src="https://avatars.githubusercontent.com/u/5373460?v=4&s=117" width="117">](https://github.com/LavrovArtem) |[<img alt="link89" src="https://avatars.githubusercontent.com/u/3314130?v=4&s=117" width="117">](https://github.com/link89) |
228
228
  :---: |:---: |:---: |:---: |:---: |:---: |
229
- [link89](https://github.com/link89) |[lzxb](https://github.com/lzxb) |[macdonaldr93](https://github.com/macdonaldr93) |[MargaritaLoseva](https://github.com/MargaritaLoseva) |[Marketionist](https://github.com/Marketionist) |[MatthewNielsen27](https://github.com/MatthewNielsen27) |
229
+ [kanhaiya15](https://github.com/kanhaiya15) |[kirovboris](https://github.com/kirovboris) |[kisrefod](https://github.com/kisrefod) |[kubejm](https://github.com/kubejm) |[LavrovArtem](https://github.com/LavrovArtem) |[link89](https://github.com/link89) |
230
230
 
231
- [<img alt="mattmanske" src="https://avatars.githubusercontent.com/u/2078566?v=4&s=117" width="117">](https://github.com/mattmanske) |[<img alt="mcjim" src="https://avatars.githubusercontent.com/u/485440?v=4&s=117" width="117">](https://github.com/mcjim) |[<img alt="miherlosev" src="https://avatars.githubusercontent.com/u/4133518?v=4&s=117" width="117">](https://github.com/miherlosev) |[<img alt="morfey13" src="https://avatars.githubusercontent.com/u/2048346?v=4&s=117" width="117">](https://github.com/morfey13) |[<img alt="mostlyfabulous" src="https://avatars.githubusercontent.com/u/15062048?v=4&s=117" width="117">](https://github.com/mostlyfabulous) |[<img alt="murajun1978" src="https://avatars.githubusercontent.com/u/911903?v=4&s=117" width="117">](https://github.com/murajun1978) |
231
+ [<img alt="lzxb" src="https://avatars.githubusercontent.com/u/8424643?v=4&s=117" width="117">](https://github.com/lzxb) |[<img alt="macdonaldr93" src="https://avatars.githubusercontent.com/u/5184848?v=4&s=117" width="117">](https://github.com/macdonaldr93) |[<img alt="MargaritaLoseva" src="https://avatars.githubusercontent.com/u/12034505?v=4&s=117" width="117">](https://github.com/MargaritaLoseva) |[<img alt="Marketionist" src="https://avatars.githubusercontent.com/u/534603?v=4&s=117" width="117">](https://github.com/Marketionist) |[<img alt="MatthewNielsen27" src="https://avatars.githubusercontent.com/u/35040439?v=4&s=117" width="117">](https://github.com/MatthewNielsen27) |[<img alt="mattmanske" src="https://avatars.githubusercontent.com/u/2078566?v=4&s=117" width="117">](https://github.com/mattmanske) |
232
232
  :---: |:---: |:---: |:---: |:---: |:---: |
233
- [mattmanske](https://github.com/mattmanske) |[mcjim](https://github.com/mcjim) |[miherlosev](https://github.com/miherlosev) |[morfey13](https://github.com/morfey13) |[mostlyfabulous](https://github.com/mostlyfabulous) |[murajun1978](https://github.com/murajun1978) |
233
+ [lzxb](https://github.com/lzxb) |[macdonaldr93](https://github.com/macdonaldr93) |[MargaritaLoseva](https://github.com/MargaritaLoseva) |[Marketionist](https://github.com/Marketionist) |[MatthewNielsen27](https://github.com/MatthewNielsen27) |[mattmanske](https://github.com/mattmanske) |
234
234
 
235
- [<img alt="NiavlysB" src="https://avatars.githubusercontent.com/u/3757523?v=4&s=117" width="117">](https://github.com/NiavlysB) |[<img alt="NickCis" src="https://avatars.githubusercontent.com/u/174561?v=4&s=117" width="117">](https://github.com/NickCis) |[<img alt="Nuarat" src="https://avatars.githubusercontent.com/u/11683678?v=4&s=117" width="117">](https://github.com/Nuarat) |[<img alt="Ogurecher" src="https://avatars.githubusercontent.com/u/28919867?v=4&s=117" width="117">](https://github.com/Ogurecher) |[<img alt="pietrovich" src="https://avatars.githubusercontent.com/u/1728613?v=4&s=117" width="117">](https://github.com/pietrovich) |[<img alt="radarhere" src="https://avatars.githubusercontent.com/u/3112309?v=4&s=117" width="117">](https://github.com/radarhere) |
235
+ [<img alt="mcjim" src="https://avatars.githubusercontent.com/u/485440?v=4&s=117" width="117">](https://github.com/mcjim) |[<img alt="miherlosev" src="https://avatars.githubusercontent.com/u/4133518?v=4&s=117" width="117">](https://github.com/miherlosev) |[<img alt="morfey13" src="https://avatars.githubusercontent.com/u/2048346?v=4&s=117" width="117">](https://github.com/morfey13) |[<img alt="mostlyfabulous" src="https://avatars.githubusercontent.com/u/15062048?v=4&s=117" width="117">](https://github.com/mostlyfabulous) |[<img alt="murajun1978" src="https://avatars.githubusercontent.com/u/911903?v=4&s=117" width="117">](https://github.com/murajun1978) |[<img alt="NickCis" src="https://avatars.githubusercontent.com/u/174561?v=4&s=117" width="117">](https://github.com/NickCis) |
236
236
  :---: |:---: |:---: |:---: |:---: |:---: |
237
- [NiavlysB](https://github.com/NiavlysB) |[NickCis](https://github.com/NickCis) |[Nuarat](https://github.com/Nuarat) |[Ogurecher](https://github.com/Ogurecher) |[pietrovich](https://github.com/pietrovich) |[radarhere](https://github.com/radarhere) |
237
+ [mcjim](https://github.com/mcjim) |[miherlosev](https://github.com/miherlosev) |[morfey13](https://github.com/morfey13) |[mostlyfabulous](https://github.com/mostlyfabulous) |[murajun1978](https://github.com/murajun1978) |[NickCis](https://github.com/NickCis) |
238
238
 
239
- [<img alt="raspo" src="https://avatars.githubusercontent.com/u/927264?v=4&s=117" width="117">](https://github.com/raspo) |[<img alt="rbardini" src="https://avatars.githubusercontent.com/u/874370?v=4&s=117" width="117">](https://github.com/rbardini) |[<img alt="renancouto" src="https://avatars.githubusercontent.com/u/230893?v=4&s=117" width="117">](https://github.com/renancouto) |[<img alt="rueyaa332266" src="https://avatars.githubusercontent.com/u/8298718?v=4&s=117" width="117">](https://github.com/rueyaa332266) |[<img alt="sgrillon14" src="https://avatars.githubusercontent.com/u/5530550?v=4&s=117" width="117">](https://github.com/sgrillon14) |[<img alt="smockle" src="https://avatars.githubusercontent.com/u/3104489?v=4&s=117" width="117">](https://github.com/smockle) |
239
+ [<img alt="Nuarat" src="https://avatars.githubusercontent.com/u/11683678?v=4&s=117" width="117">](https://github.com/Nuarat) |[<img alt="Ogurecher" src="https://avatars.githubusercontent.com/u/28919867?v=4&s=117" width="117">](https://github.com/Ogurecher) |[<img alt="pietrovich" src="https://avatars.githubusercontent.com/u/1728613?v=4&s=117" width="117">](https://github.com/pietrovich) |[<img alt="radarhere" src="https://avatars.githubusercontent.com/u/3112309?v=4&s=117" width="117">](https://github.com/radarhere) |[<img alt="raspo" src="https://avatars.githubusercontent.com/u/927264?v=4&s=117" width="117">](https://github.com/raspo) |[<img alt="rbardini" src="https://avatars.githubusercontent.com/u/874370?v=4&s=117" width="117">](https://github.com/rbardini) |
240
240
  :---: |:---: |:---: |:---: |:---: |:---: |
241
- [raspo](https://github.com/raspo) |[rbardini](https://github.com/rbardini) |[renancouto](https://github.com/renancouto) |[rueyaa332266](https://github.com/rueyaa332266) |[sgrillon14](https://github.com/sgrillon14) |[smockle](https://github.com/smockle) |
241
+ [Nuarat](https://github.com/Nuarat) |[Ogurecher](https://github.com/Ogurecher) |[pietrovich](https://github.com/pietrovich) |[radarhere](https://github.com/radarhere) |[raspo](https://github.com/raspo) |[rbardini](https://github.com/rbardini) |
242
242
 
243
- [<img alt="stefanschenk" src="https://avatars.githubusercontent.com/u/12391671?v=4&s=117" width="117">](https://github.com/stefanschenk) |[<img alt="superroma" src="https://avatars.githubusercontent.com/u/8553464?v=4&s=117" width="117">](https://github.com/superroma) |[<img alt="theghostbel" src="https://avatars.githubusercontent.com/u/482899?v=4&s=117" width="117">](https://github.com/theghostbel) |[<img alt="titerman" src="https://avatars.githubusercontent.com/u/43554315?v=4&s=117" width="117">](https://github.com/titerman) |[<img alt="tobiasbueschel" src="https://avatars.githubusercontent.com/u/13087421?v=4&s=117" width="117">](https://github.com/tobiasbueschel) |[<img alt="varunkumar" src="https://avatars.githubusercontent.com/u/509433?v=4&s=117" width="117">](https://github.com/varunkumar) |
243
+ [<img alt="renancouto" src="https://avatars.githubusercontent.com/u/230893?v=4&s=117" width="117">](https://github.com/renancouto) |[<img alt="rob4629" src="https://avatars.githubusercontent.com/u/37812673?v=4&s=117" width="117">](https://github.com/rob4629) |[<img alt="rueyaa332266" src="https://avatars.githubusercontent.com/u/8298718?v=4&s=117" width="117">](https://github.com/rueyaa332266) |[<img alt="sgrillon14" src="https://avatars.githubusercontent.com/u/5530550?v=4&s=117" width="117">](https://github.com/sgrillon14) |[<img alt="smockle" src="https://avatars.githubusercontent.com/u/3104489?v=4&s=117" width="117">](https://github.com/smockle) |[<img alt="stefanschenk" src="https://avatars.githubusercontent.com/u/12391671?v=4&s=117" width="117">](https://github.com/stefanschenk) |
244
244
  :---: |:---: |:---: |:---: |:---: |:---: |
245
- [stefanschenk](https://github.com/stefanschenk) |[superroma](https://github.com/superroma) |[theghostbel](https://github.com/theghostbel) |[titerman](https://github.com/titerman) |[tobiasbueschel](https://github.com/tobiasbueschel) |[varunkumar](https://github.com/varunkumar) |
245
+ [renancouto](https://github.com/renancouto) |[rob4629](https://github.com/rob4629) |[rueyaa332266](https://github.com/rueyaa332266) |[sgrillon14](https://github.com/sgrillon14) |[smockle](https://github.com/smockle) |[stefanschenk](https://github.com/stefanschenk) |
246
246
 
247
- [<img alt="VasilyStrelyaev" src="https://avatars.githubusercontent.com/u/11459924?v=4&s=117" width="117">](https://github.com/VasilyStrelyaev) |[<img alt="vitalics" src="https://avatars.githubusercontent.com/u/8816260?v=4&s=117" width="117">](https://github.com/vitalics) |[<img alt="Vla8islav" src="https://avatars.githubusercontent.com/u/1637557?v=4&s=117" width="117">](https://github.com/Vla8islav) |[<img alt="wentwrong" src="https://avatars.githubusercontent.com/u/26363017?v=4&s=117" width="117">](https://github.com/wentwrong) |[<img alt="intermike" src="https://avatars0.githubusercontent.com/u/10540148?v=4&s=117" width="117">](https://github.com/intermike) |[<img alt="DevSide" src="https://avatars2.githubusercontent.com/u/6873926?v=4&s=117" width="117">](https://github.com/DevSide) |
247
+ [<img alt="superroma" src="https://avatars.githubusercontent.com/u/8553464?v=4&s=117" width="117">](https://github.com/superroma) |[<img alt="sylbru" src="https://avatars.githubusercontent.com/u/3757523?v=4&s=117" width="117">](https://github.com/sylbru) |[<img alt="taiki-fw" src="https://avatars.githubusercontent.com/u/43266182?v=4&s=117" width="117">](https://github.com/taiki-fw) |[<img alt="theghostbel" src="https://avatars.githubusercontent.com/u/482899?v=4&s=117" width="117">](https://github.com/theghostbel) |[<img alt="titerman" src="https://avatars.githubusercontent.com/u/43554315?v=4&s=117" width="117">](https://github.com/titerman) |[<img alt="tobiasbueschel" src="https://avatars.githubusercontent.com/u/13087421?v=4&s=117" width="117">](https://github.com/tobiasbueschel) |
248
248
  :---: |:---: |:---: |:---: |:---: |:---: |
249
- [VasilyStrelyaev](https://github.com/VasilyStrelyaev) |[vitalics](https://github.com/vitalics) |[Vla8islav](https://github.com/Vla8islav) |[wentwrong](https://github.com/wentwrong) |[intermike](https://github.com/intermike) |[DevSide](https://github.com/DevSide) |
249
+ [superroma](https://github.com/superroma) |[sylbru](https://github.com/sylbru) |[taiki-fw](https://github.com/taiki-fw) |[theghostbel](https://github.com/theghostbel) |[titerman](https://github.com/titerman) |[tobiasbueschel](https://github.com/tobiasbueschel) |
250
250
 
251
- [<img alt="b12031106" src="https://avatars1.githubusercontent.com/u/2063566?v=4&s=117" width="117">](https://github.com/b12031106) |[<img alt="tomashanacek" src="https://avatars2.githubusercontent.com/u/1244486?v=4&s=117" width="117">](https://github.com/tomashanacek) |[<img alt="danielroe" src="https://avatars1.githubusercontent.com/u/28706372?v=4&s=117" width="117">](https://github.com/danielroe) |[<img alt="Aleksey28" src="https://avatars.githubusercontent.com/u/32869530?v=4&s=117" width="117">](https://github.com/Aleksey28) |[<img alt="kisrefod" src="https://avatars.githubusercontent.com/u/27427579?v=4&s=117" width="117">](https://github.com/kisrefod) |[<img alt="rob4629" src="https://avatars.githubusercontent.com/u/37812673?v=4&s=117" width="117">](https://github.com/rob4629) |
251
+ [<img alt="intermike" src="https://avatars0.githubusercontent.com/u/10540148?v=4&s=117" width="117">](https://github.com/intermike) |[<img alt="DevSide" src="https://avatars2.githubusercontent.com/u/6873926?v=4&s=117" width="117">](https://github.com/DevSide) |[<img alt="b12031106" src="https://avatars1.githubusercontent.com/u/2063566?v=4&s=117" width="117">](https://github.com/b12031106) |[<img alt="tomashanacek" src="https://avatars2.githubusercontent.com/u/1244486?v=4&s=117" width="117">](https://github.com/tomashanacek) |[<img alt="danielroe" src="https://avatars1.githubusercontent.com/u/28706372?v=4&s=117" width="117">](https://github.com/danielroe) |[<img alt="michaelficarra" src="https://avatars.githubusercontent.com/u/218840?v=4&s=117" width="117">](https://github.com/michaelficarra)
252
252
  :---: |:---: |:---: |:---: |:---: |:---: |
253
- [b12031106](https://github.com/b12031106) |[tomashanacek](https://github.com/tomashanacek) |[danielroe](https://github.com/danielroe) |[Aleksey28](https://github.com/Aleksey28) |[kisrefod](https://github.com/kisrefod) |[rob4629](https://github.com/rob4629) |
253
+ [intermike](https://github.com/intermike) |[DevSide](https://github.com/DevSide) |[b12031106](https://github.com/b12031106) |[tomashanacek](https://github.com/tomashanacek) |[danielroe](https://github.com/danielroe) |[michaelficarra](https://github.com/michaelficarra)
254
+
255
+ [<img alt="varunkumar" src="https://avatars.githubusercontent.com/u/509433?v=4&s=117" width="117">](https://github.com/varunkumar) |[<img alt="VasilyStrelyaev" src="https://avatars.githubusercontent.com/u/11459924?v=4&s=117" width="117">](https://github.com/VasilyStrelyaev) |[<img alt="vitalics" src="https://avatars.githubusercontent.com/u/8816260?v=4&s=117" width="117">](https://github.com/vitalics) |[<img alt="Vla8islav" src="https://avatars.githubusercontent.com/u/1637557?v=4&s=117" width="117">](https://github.com/Vla8islav) |[<img alt="wentwrong" src="https://avatars.githubusercontent.com/u/26363017?v=4&s=117" width="117">](https://github.com/wentwrong) |
256
+ :---: |:---: |:---: |:---: |:---: |
257
+ [varunkumar](https://github.com/varunkumar) |[VasilyStrelyaev](https://github.com/VasilyStrelyaev) |[vitalics](https://github.com/vitalics) |[Vla8islav](https://github.com/Vla8islav) |[wentwrong](https://github.com/wentwrong) |
254
258
 
255
259
  ## Plugins
256
260
 
@@ -18,21 +18,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
21
24
  Object.defineProperty(exports, "__esModule", { value: true });
22
25
  const SharedErrors = __importStar(require("../../../../../../shared/errors"));
26
+ const execution_context_1 = __importDefault(require("./execution-context"));
27
+ const utils_1 = require("./utils");
23
28
  const EXECUTION_CTX_WAS_DESTROYED_CODE = -32000;
24
29
  const SELECTOR_MAX_EXECUTE_COUNT = 10;
25
30
  const PROXYLESS_SCRIPT = 'window["%proxyless%"]';
26
31
  class ClientFunctionExecutor {
27
- constructor() {
28
- // new Map<frameId, executionContextId>
29
- this._frameExecutionContexts = new Map();
30
- this._currentFrameId = '';
31
- }
32
32
  async evaluateScript(Runtime, expression) {
33
- const script = { expression, awaitPromise: true };
34
- if (this._currentFrameId && this._frameExecutionContexts.has(this._currentFrameId))
35
- script.contextId = this._frameExecutionContexts.get(this._currentFrameId);
33
+ const script = {
34
+ expression,
35
+ awaitPromise: true,
36
+ contextId: execution_context_1.default.getCurrentContextId(),
37
+ };
36
38
  try {
37
39
  const { result, exceptionDetails = null } = await Runtime.evaluate(script);
38
40
  return { result, exceptionDetails, error: null };
@@ -116,31 +118,9 @@ class ClientFunctionExecutor {
116
118
  }
117
119
  async getNode(args) {
118
120
  const objectId = await this.executeSelector(args);
119
- const response = await args.DOM.describeNode({ objectId });
120
- return response.node;
121
- }
122
- setupFramesWatching(Runtime) {
123
- Runtime.on('executionContextCreated', (event) => {
124
- var _a;
125
- if (!((_a = event.context.auxData) === null || _a === void 0 ? void 0 : _a.frameId))
126
- return;
127
- this._frameExecutionContexts.set(event.context.auxData.frameId, event.context.id);
128
- });
129
- Runtime.on('executionContextDestroyed', (event) => {
130
- for (const [frameId, executionContextId] of this._frameExecutionContexts.entries()) {
131
- if (executionContextId === event.executionContextId)
132
- this._frameExecutionContexts.delete(frameId);
133
- }
134
- });
135
- Runtime.on('executionContextsCleared', () => {
136
- this._currentFrameId = '';
137
- this._frameExecutionContexts.clear();
138
- });
139
- }
140
- setCurrentFrameId(frameId) {
141
- this._currentFrameId = frameId;
121
+ return utils_1.describeNode(args.DOM, objectId);
142
122
  }
143
123
  }
144
124
  exports.default = ClientFunctionExecutor;
145
125
  module.exports = exports.default;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWZ1bmN0aW9uLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jZHAtY2xpZW50L2NsaWVudC1mdW5jdGlvbi1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSw4RUFBZ0U7QUFpQ2hFLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDaEQsTUFBTSwwQkFBMEIsR0FBUyxFQUFFLENBQUM7QUFDNUMsTUFBTSxnQkFBZ0IsR0FBbUIsdUJBQXVCLENBQUM7QUFHakUsTUFBcUIsc0JBQXNCO0lBQTNDO1FBQ0ksdUNBQXVDO1FBQ3RCLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzdELG9CQUFlLEdBQVcsRUFBRSxDQUFDO0lBa0p6QyxDQUFDO0lBaEpVLEtBQUssQ0FBQyxjQUFjLENBQUUsT0FBbUIsRUFBRSxVQUFrQjtRQUNoRSxNQUFNLE1BQU0sR0FBb0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRW5FLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU5RSxJQUFJO1lBQ0EsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENB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QUMseUJBQXlCLEVBQUUsQ0FBQyxLQUFtQyxFQUFFLEVBQUU7O1lBQzFFLElBQUksUUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsT0FBTyxDQUFBO2dCQUMvQixPQUFPO1lBRVgsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxLQUFxQyxFQUFFLEVBQUU7WUFDOUUsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNoRixJQUFJLGtCQUFrQixLQUFLLEtBQUssQ0FBQyxrQkFBa0I7b0JBQy9DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDcEQ7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxpQkFBaUIsQ0FBRSxPQUFlO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO0lBQ25DLENBQUM7Q0FDSjtBQXJKRCx5Q0FxSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvdG9jb2wgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wnO1xuaW1wb3J0IHsgQ2FsbHNpdGVSZWNvcmQgfSBmcm9tICdjYWxsc2l0ZS1yZWNvcmQnO1xuaW1wb3J0IFByb3RvY29sUHJveHlBcGkgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wvdHlwZXMvcHJvdG9jb2wtcHJveHktYXBpJztcbmltcG9ydCBSdW50aW1lQXBpID0gUHJvdG9jb2xQcm94eUFwaS5SdW50aW1lQXBpO1xuaW1wb3J0IEV2YWx1YXRlUmVxdWVzdCA9IFByb3RvY29sLlJ1bnRpbWUuRXZhbHVhdGVSZXF1ZXN0O1xuaW1wb3J0IFJlbW90ZU9iamVjdCA9IFByb3RvY29sLlJ1bnRpbWUuUmVtb3RlT2JqZWN0O1xuaW1wb3J0IEV4Y2VwdGlvbkRldGFpbHMgPSBQcm90b2NvbC5SdW50aW1lLkV4Y2VwdGlvbkRldGFpbHM7XG5pbXBvcnQgUHJvcGVydHlQcmV2aWV3ID0gUHJvdG9jb2wuUnVudGltZS5Qcm9wZXJ0eVByZXZpZXc7XG5pbXBvcnQgRE9NQXBpID0gUHJvdG9jb2xQcm94eUFwaS5ET01BcGk7XG5pbXBvcnQgRXhlY3V0aW9uQ29udGV4dENyZWF0ZWRFdmVudCA9IFByb3RvY29sLlJ1bnRpbWUuRXhlY3V0aW9uQ29udGV4dENyZWF0ZWRFdmVudDtcbmltcG9ydCBFeGVjdXRpb25Db250ZXh0RGVzdHJveWVkRXZlbnQgPSBQcm90b2NvbC5SdW50aW1lLkV4ZWN1dGlvbkNvbnRleHREZXN0cm95ZWRFdmVudDtcbmltcG9ydCBET00gPSBQcm90b2NvbC5ET007XG5pbXBvcnQgKiBhcyBTaGFyZWRFcnJvcnMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2Vycm9ycyc7XG5pbXBvcnQge1xuICAgIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQsXG4gICAgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UsXG4gICAgRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuaW1wb3J0IHsgQXV0b21hdGlvbkVycm9yQ3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuXG5cbmludGVyZmFjZSBFdmFsdWF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVxdWVzdDogRXZhbHVhdGVSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiB7IGNvZGU6IG51bWJlciB9O1xufVxuXG5pbnRlcmZhY2UgRXZhbHVhdGVTY3JpcHRSZXN1bHQge1xuICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0IHwgbnVsbDtcbiAgICBleGNlcHRpb25EZXRhaWxzOiBFeGNlcHRpb25EZXRhaWxzIHwgbnVsbDtcbiAgICBlcnJvcjogRXZhbHVhdGlvbkVycm9yIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIFNlbGVjdG9yU25hcHNob3RBcmdzIHtcbiAgICBSdW50aW1lOiBSdW50aW1lQXBpO1xuICAgIGNvbW1hbmQ6IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQ7XG4gICAgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkO1xuICAgIHNlbGVjdG9yVGltZW91dDogbnVtYmVyO1xuICAgIGVyckN0b3JzOiBBdXRvbWF0aW9uRXJyb3JDdG9ycztcbn1cblxuaW50ZXJmYWNlIFNlbGVjdG9yTm9kZUFyZ3MgZXh0ZW5kcyBTZWxlY3RvclNuYXBzaG90QXJncyB7XG4gICAgRE9NOiBET01BcGk7XG59XG5cblxuY29uc3QgRVhFQ1VUSU9OX0NUWF9XQVNfREVTVFJPWUVEX0NPREUgPSAtMzIwMDA7XG5jb25zdCBTRUxFQ1RPUl9NQVhfRVhFQ1VURV9DT1VOVCAgICAgICA9IDEwO1xuY29uc3QgUFJPWFlMRVNTX1NDUklQVCAgICAgICAgICAgICAgICAgPSAnd2luZG93W1wiJXByb3h5bGVzcyVcIl0nO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaWVudEZ1bmN0aW9uRXhlY3V0b3Ige1xuICAgIC8vIG5ldyBNYXA8ZnJhbWVJZCwgZXhlY3V0aW9uQ29udGV4dElkPlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIHByaXZhdGUgX2N1cnJlbnRGcmFtZUlkOiBzdHJpbmcgPSAnJztcblxuICAgIHB1YmxpYyBhc3luYyBldmFsdWF0ZVNjcmlwdCAoUnVudGltZTogUnVudGltZUFwaSwgZXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxFdmFsdWF0ZVNjcmlwdFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBzY3JpcHQ6IEV2YWx1YXRlUmVxdWVzdCA9IHsgZXhwcmVzc2lvbiwgYXdhaXRQcm9taXNlOiB0cnVlIH07XG5cbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGcmFtZUlkICYmIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuaGFzKHRoaXMuX2N1cnJlbnRGcmFtZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdC5jb250ZXh0SWQgPSB0aGlzLl9mcmFtZUV4ZWN1dGlvbkNvbnRleHRzLmdldCh0aGlzLl9jdXJyZW50RnJhbWVJZCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVzdWx0LCBleGNlcHRpb25EZXRhaWxzID0gbnVsbCB9ID0gYXdhaXQgUnVudGltZS5ldmFsdWF0ZShzY3JpcHQpO1xuXG4gICAgICAgICAgICByZXR1cm4geyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4geyByZXN1bHQ6IG51bGwsIGV4Y2VwdGlvbkRldGFpbHM6IG51bGwsIGVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ldmFsdWF0ZVNjcmlwdFdpdGhSZWxvYWRQYWdlSWdub3JlIChSdW50aW1lOiBSdW50aW1lQXBpLCBleHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPEV2YWx1YXRlU2NyaXB0UmVzdWx0PiB7XG4gICAgICAgIGxldCBhdHRlbXB0cyA9IDA7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGxldCBleGNlcHRpb25EZXRhaWxzO1xuICAgICAgICBsZXQgZXJyb3I7XG5cbiAgICAgICAgd2hpbGUgKGF0dGVtcHRzKysgPCBTRUxFQ1RPUl9NQVhfRVhFQ1VURV9DT1VOVCkge1xuICAgICAgICAgICAgKHsgcmVzdWx0LCBleGNlcHRpb25EZXRhaWxzLCBlcnJvciB9ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZVNjcmlwdChSdW50aW1lLCBleHByZXNzaW9uKSk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5yZXNwb25zZS5jb2RlID09PSBFWEVDVVRJT05fQ1RYX1dBU19ERVNUUk9ZRURfQ09ERSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW9iamVjdC1saXRlcmFsLXR5cGUtYXNzZXJ0aW9uXG4gICAgICAgIHJldHVybiB7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscywgZXJyb3IgfSBhcyBFdmFsdWF0ZVNjcmlwdFJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0UHJvcGVydHlCeU5hbWUgKHByb3BlcnRpZXM6IFByb3BlcnR5UHJldmlld1tdLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5maW5kKHByb3AgPT4gcHJvcC5uYW1lID09PSBuYW1lKSEudmFsdWUhO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF90aHJvd0V4Y2VwdGlvbiAoZGV0YWlsczogRXhjZXB0aW9uRGV0YWlscywgY29tbWFuZDogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UsIGNhbGxzaXRlOiBDYWxsc2l0ZVJlY29yZCk6IG5ldmVyIHtcbiAgICAgICAgY29uc3QgZXhjZXB0aW9uID0gZGV0YWlscy5leGNlcHRpb247XG5cbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lICA9IGV4Y2VwdGlvbi5jbGFzc05hbWU7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gZXhjZXB0aW9uLnByZXZpZXc/LnByb3BlcnRpZXMgYXMgUHJvcGVydHlQcmV2aWV3W107XG5cbiAgICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09IFNoYXJlZEVycm9ycy5VbmNhdWdodEVycm9ySW5DdXN0b21ET01Qcm9wZXJ0eUNvZGUubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuVW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlKGNvbW1hbmQuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fZ2V0UHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgJ2Vyck1zZycpLFxuICAgICAgICAgICAgICAgICAgICBDbGllbnRGdW5jdGlvbkV4ZWN1dG9yLl9nZXRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0aWVzLCAncHJvcGVydHknKSxcbiAgICAgICAgICAgICAgICAgICAgY2FsbHNpdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lID09PSBTaGFyZWRFcnJvcnMuQ2Fubm90T2J0YWluSW5mb0ZvckVsZW1lbnRTcGVjaWZpZWRCeVNlbGVjdG9yRXJyb3IubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuQ2Fubm90T2J0YWluSW5mb0ZvckVsZW1lbnRTcGVjaWZpZWRCeVNlbGVjdG9yRXJyb3IoY2FsbHNpdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgYXBpRm5DaGFpbjogY29tbWFuZC5hcGlGbkNoYWluLFxuICAgICAgICAgICAgICAgICAgICBhcGlGbkluZGV4OiBwYXJzZUludChDbGllbnRGdW5jdGlvbkV4ZWN1dG9yLl9nZXRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0aWVzLCAnYXBpRm5JbmRleCcpLCAxMCksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjbGFzc05hbWUgPT09IFNoYXJlZEVycm9ycy5BY3Rpb25FbGVtZW50Tm90Rm91bmRFcnJvci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNoYXJlZEVycm9ycy5BY3Rpb25FbGVtZW50Tm90Rm91bmRFcnJvcihjYWxsc2l0ZSwge1xuICAgICAgICAgICAgICAgICAgICBhcGlGbkNoYWluOiBjb21tYW5kLmFwaUZuQ2hhaW4sXG4gICAgICAgICAgICAgICAgICAgIGFwaUZuSW5kZXg6IHBhcnNlSW50KENsaWVudEZ1bmN0aW9uRXhlY3V0b3IuX2dldFByb3BlcnR5QnlOYW1lKHByb3BlcnRpZXMsICdhcGlGbkluZGV4JyksIDEwKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNsYXNzTmFtZSA9PT0gU2hhcmVkRXJyb3JzLkRvbU5vZGVDbGllbnRGdW5jdGlvblJlc3VsdEVycm9yLm5hbWUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNoYXJlZEVycm9ycy5Eb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvcihjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIGNhbGxzaXRlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNsYXNzTmFtZSA9PT0gU2hhcmVkRXJyb3JzLkludmFsaWRTZWxlY3RvclJlc3VsdEVycm9yLm5hbWUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNoYXJlZEVycm9ycy5JbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvcihjYWxsc2l0ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjbGFzc05hbWUgPT09IFNoYXJlZEVycm9ycy5BY3Rpb25FbGVtZW50SXNJbnZpc2libGVFcnJvci5uYW1lKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuQWN0aW9uRWxlbWVudElzSW52aXNpYmxlRXJyb3IoY2FsbHNpdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IFNoYXJlZEVycm9ycy5VbmNhdWdodEVycm9ySW5DbGllbnRGdW5jdGlvbkNvZGUoY29tbWFuZC5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lLCBkZXRhaWxzLnRleHQsIGNhbGxzaXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIChSdW50aW1lOiBSdW50aW1lQXBpLCBjb21tYW5kOiBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kLCBjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gYCR7UFJPWFlMRVNTX1NDUklQVH0uZXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCgke0pTT04uc3RyaW5naWZ5KGNvbW1hbmQpfSk7YDtcblxuICAgICAgICBjb25zdCB7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscywgZXJyb3IgfSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVTY3JpcHQoUnVudGltZSwgZXhwcmVzc2lvbik7XG5cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UuY29kZSA9PT0gRVhFQ1VUSU9OX0NUWF9XQVNfREVTVFJPWUVEX0NPREUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNoYXJlZEVycm9ycy5DbGllbnRGdW5jdGlvbkV4ZWN1dGlvbkludGVycnVwdGlvbkVycm9yKGNvbW1hbmQuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgY2FsbHNpdGUpO1xuXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKVxuICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fdGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uRGV0YWlscywgY29tbWFuZCwgY2FsbHNpdGUpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCEudmFsdWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZVNlbGVjdG9yIDxUIGV4dGVuZHMgU2VsZWN0b3JTbmFwc2hvdEFyZ3MgfCBTZWxlY3Rvck5vZGVBcmdzPiAoYXJnczogVCk6IFByb21pc2U8VCBleHRlbmRzIFNlbGVjdG9yTm9kZUFyZ3MgPyBzdHJpbmcgOiBvYmplY3Q+IHtcbiAgICAgICAgY29uc3QgeyBSdW50aW1lLCBjb21tYW5kLCBjYWxsc2l0ZSwgc2VsZWN0b3JUaW1lb3V0LCBlcnJDdG9ycyB9ID0gYXJncztcblxuICAgICAgICBjb25zdCByZXR1cm5Ob2RlT2JqSWQgPSAnRE9NJyBpbiBhcmdzO1xuICAgICAgICBjb25zdCBleHByZXNzaW9uICAgICAgPSBgJHtQUk9YWUxFU1NfU0NSSVBUfS5leGVjdXRlU2VsZWN0b3JDb21tYW5kKCR7SlNPTi5zdHJpbmdpZnkoY29tbWFuZCl9LCAke3NlbGVjdG9yVGltZW91dH0sICR7RGF0ZS5ub3coKX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3JldHVybk5vZGVPYmpJZH0sICR7SlNPTi5zdHJpbmdpZnkoZXJyQ3RvcnMpfSk7YDtcblxuICAgICAgICBjb25zdCB7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscywgZXJyb3IgfSA9IGF3YWl0IHRoaXMuX2V2YWx1YXRlU2NyaXB0V2l0aFJlbG9hZFBhZ2VJZ25vcmUoUnVudGltZSwgZXhwcmVzc2lvbik7XG5cbiAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG5cbiAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpXG4gICAgICAgICAgICBDbGllbnRGdW5jdGlvbkV4ZWN1dG9yLl90aHJvd0V4Y2VwdGlvbihleGNlcHRpb25EZXRhaWxzLCBjb21tYW5kLCBjYWxsc2l0ZSk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgcmV0dXJuIHJldHVybk5vZGVPYmpJZCA/IHJlc3VsdCEub2JqZWN0SWQgOiBKU09OLnBhcnNlKHJlc3VsdCEudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXROb2RlIChhcmdzOiBTZWxlY3Rvck5vZGVBcmdzKTogUHJvbWlzZTxET00uTm9kZT4ge1xuICAgICAgICBjb25zdCBvYmplY3RJZCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVNlbGVjdG9yKGFyZ3MpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFyZ3MuRE9NLmRlc2NyaWJlTm9kZSh7IG9iamVjdElkIH0pO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5ub2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXR1cEZyYW1lc1dhdGNoaW5nIChSdW50aW1lOiBSdW50aW1lQXBpKTogdm9pZCB7XG4gICAgICAgIFJ1bnRpbWUub24oJ2V4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgKGV2ZW50OiBFeGVjdXRpb25Db250ZXh0Q3JlYXRlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmNvbnRleHQuYXV4RGF0YT8uZnJhbWVJZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuc2V0KGV2ZW50LmNvbnRleHQuYXV4RGF0YS5mcmFtZUlkLCBldmVudC5jb250ZXh0LmlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUnVudGltZS5vbignZXhlY3V0aW9uQ29udGV4dERlc3Ryb3llZCcsIChldmVudDogRXhlY3V0aW9uQ29udGV4dERlc3Ryb3llZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtmcmFtZUlkLCBleGVjdXRpb25Db250ZXh0SWRdIG9mIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCA9PT0gZXZlbnQuZXhlY3V0aW9uQ29udGV4dElkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mcmFtZUV4ZWN1dGlvbkNvbnRleHRzLmRlbGV0ZShmcmFtZUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgUnVudGltZS5vbignZXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEZyYW1lSWQgPSAnJztcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEN1cnJlbnRGcmFtZUlkIChmcmFtZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudEZyYW1lSWQgPSBmcmFtZUlkO1xuICAgIH1cbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWZ1bmN0aW9uLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jZHAtY2xpZW50L2NsaWVudC1mdW5jdGlvbi1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSw4RUFBZ0U7QUFPaEUsNEVBQW1EO0FBRW5ELG1DQUF1QztBQTBCdkMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUNoRCxNQUFNLDBCQUEwQixHQUFTLEVBQUUsQ0FBQztBQUM1QyxNQUFNLGdCQUFnQixHQUFtQix1QkFBdUIsQ0FBQztBQUdqRSxNQUFxQixzQkFBc0I7SUFDaEMsS0FBSyxDQUFDLGNBQWMsQ0FBRSxPQUFtQixFQUFFLFVBQWtCO1FBQ2hFLE1BQU0sTUFBTSxHQUFvQjtZQUM1QixVQUFVO1lBQ1YsWUFBWSxFQUFFLElBQUk7WUFDbEIsU0FBUyxFQUFLLDJCQUFnQixDQUFDLG1CQUFtQixFQUFFO1NBQ3ZELENBQUM7UUFFRixJQUFJO1lBQ0EsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDcEQ7UUFDRCxPQUFPLEtBQUssRUFBRTtZQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsbUNBQW1DLENBQUUsT0FBbUIsRUFBRSxVQUFrQjtRQUN0RixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7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LEtBQUssZUFBZSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7bUNBQ3JHLGVBQWUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFNUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEgsSUFBSSxLQUFLO1lBQ0wsTUFBTSxLQUFLLENBQUM7UUFFaEIsSUFBSSxnQkFBZ0I7WUFDaEIsc0JBQXNCLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVoRixvRUFBb0U7UUFDcEUsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFFLElBQXNCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxPQUFPLG9CQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0o7QUF4SEQseUNBd0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCBQcm90b2NvbFByb3h5QXBpIGZyb20gJ2RldnRvb2xzLXByb3RvY29sL3R5cGVzL3Byb3RvY29sLXByb3h5LWFwaSc7XG5pbXBvcnQgUnVudGltZUFwaSA9IFByb3RvY29sUHJveHlBcGkuUnVudGltZUFwaTtcbmltcG9ydCBFdmFsdWF0ZVJlcXVlc3QgPSBQcm90b2NvbC5SdW50aW1lLkV2YWx1YXRlUmVxdWVzdDtcbmltcG9ydCBSZW1vdGVPYmplY3QgPSBQcm90b2NvbC5SdW50aW1lLlJlbW90ZU9iamVjdDtcbmltcG9ydCBFeGNlcHRpb25EZXRhaWxzID0gUHJvdG9jb2wuUnVudGltZS5FeGNlcHRpb25EZXRhaWxzO1xuaW1wb3J0IFByb3BlcnR5UHJldmlldyA9IFByb3RvY29sLlJ1bnRpbWUuUHJvcGVydHlQcmV2aWV3O1xuaW1wb3J0IERPTUFwaSA9IFByb3RvY29sUHJveHlBcGkuRE9NQXBpO1xuaW1wb3J0ICogYXMgU2hhcmVkRXJyb3JzIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgICBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kLFxuICAgIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlLFxuICAgIEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL29ic2VydmF0aW9uJztcbmltcG9ydCB7IEF1dG9tYXRpb25FcnJvckN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCBFeGVjdXRpb25Db250ZXh0IGZyb20gJy4vZXhlY3V0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgU2VydmVyTm9kZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVzY3JpYmVOb2RlIH0gZnJvbSAnLi91dGlscyc7XG5cbmludGVyZmFjZSBFdmFsdWF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVxdWVzdDogRXZhbHVhdGVSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiB7IGNvZGU6IG51bWJlciB9O1xufVxuXG5pbnRlcmZhY2UgRXZhbHVhdGVTY3JpcHRSZXN1bHQge1xuICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0IHwgbnVsbDtcbiAgICBleGNlcHRpb25EZXRhaWxzOiBFeGNlcHRpb25EZXRhaWxzIHwgbnVsbDtcbiAgICBlcnJvcjogRXZhbHVhdGlvbkVycm9yIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIFNlbGVjdG9yU25hcHNob3RBcmdzIHtcbiAgICBSdW50aW1lOiBSdW50aW1lQXBpO1xuICAgIGNvbW1hbmQ6IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQ7XG4gICAgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkO1xuICAgIHNlbGVjdG9yVGltZW91dDogbnVtYmVyO1xuICAgIGVyckN0b3JzOiBBdXRvbWF0aW9uRXJyb3JDdG9ycztcbn1cblxuaW50ZXJmYWNlIFNlbGVjdG9yTm9kZUFyZ3MgZXh0ZW5kcyBTZWxlY3RvclNuYXBzaG90QXJncyB7XG4gICAgRE9NOiBET01BcGk7XG59XG5cblxuY29uc3QgRVhFQ1VUSU9OX0NUWF9XQVNfREVTVFJPWUVEX0NPREUgPSAtMzIwMDA7XG5jb25zdCBTRUxFQ1RPUl9NQVhfRVhFQ1VURV9DT1VOVCAgICAgICA9IDEwO1xuY29uc3QgUFJPWFlMRVNTX1NDUklQVCAgICAgICAgICAgICAgICAgPSAnd2luZG93W1wiJXByb3h5bGVzcyVcIl0nO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaWVudEZ1bmN0aW9uRXhlY3V0b3Ige1xuICAgIHB1YmxpYyBhc3luYyBldmFsdWF0ZVNjcmlwdCAoUnVudGltZTogUnVudGltZUFwaSwgZXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxFdmFsdWF0ZVNjcmlwdFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBzY3JpcHQ6IEV2YWx1YXRlUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgICBhd2FpdFByb21pc2U6IHRydWUsXG4gICAgICAgICAgICBjb250ZXh0SWQ6ICAgIEV4ZWN1dGlvbkNvbnRleHQuZ2V0Q3VycmVudENvbnRleHRJZCgpLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscyA9IG51bGwgfSA9IGF3YWl0IFJ1bnRpbWUuZXZhbHVhdGUoc2NyaXB0KTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCBleGNlcHRpb25EZXRhaWxzLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVzdWx0OiBudWxsLCBleGNlcHRpb25EZXRhaWxzOiBudWxsLCBlcnJvciB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZXZhbHVhdGVTY3JpcHRXaXRoUmVsb2FkUGFnZUlnbm9yZSAoUnVudGltZTogUnVudGltZUFwaSwgZXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxFdmFsdWF0ZVNjcmlwdFJlc3VsdD4ge1xuICAgICAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBsZXQgZXhjZXB0aW9uRGV0YWlscztcbiAgICAgICAgbGV0IGVycm9yO1xuXG4gICAgICAgIHdoaWxlIChhdHRlbXB0cysrIDwgU0VMRUNUT1JfTUFYX0VYRUNVVEVfQ09VTlQpIHtcbiAgICAgICAgICAgICh7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscywgZXJyb3IgfSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVTY3JpcHQoUnVudGltZSwgZXhwcmVzc2lvbikpO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IucmVzcG9uc2UuY29kZSA9PT0gRVhFQ1VUSU9OX0NUWF9XQVNfREVTVFJPWUVEX0NPREUpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1vYmplY3QtbGl0ZXJhbC10eXBlLWFzc2VydGlvblxuICAgICAgICByZXR1cm4geyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yIH0gYXMgRXZhbHVhdGVTY3JpcHRSZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldFByb3BlcnR5QnlOYW1lIChwcm9wZXJ0aWVzOiBQcm9wZXJ0eVByZXZpZXdbXSwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3AubmFtZSA9PT0gbmFtZSkhLnZhbHVlITtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfdGhyb3dFeGNlcHRpb24gKGRldGFpbHM6IEV4Y2VwdGlvbkRldGFpbHMsIGNvbW1hbmQ6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlLCBjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQpOiBuZXZlciB7XG4gICAgICAgIGNvbnN0IGV4Y2VwdGlvbiA9IGRldGFpbHMuZXhjZXB0aW9uO1xuXG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSAgPSBleGNlcHRpb24uY2xhc3NOYW1lO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGV4Y2VwdGlvbi5wcmV2aWV3Py5wcm9wZXJ0aWVzIGFzIFByb3BlcnR5UHJldmlld1tdO1xuXG4gICAgICAgICAgICBpZiAoY2xhc3NOYW1lID09PSBTaGFyZWRFcnJvcnMuVW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2hhcmVkRXJyb3JzLlVuY2F1Z2h0RXJyb3JJbkN1c3RvbURPTVByb3BlcnR5Q29kZShjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIENsaWVudEZ1bmN0aW9uRXhlY3V0b3IuX2dldFByb3BlcnR5QnlOYW1lKHByb3BlcnRpZXMsICdlcnJNc2cnKSxcbiAgICAgICAgICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fZ2V0UHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgJ3Byb3BlcnR5JyksXG4gICAgICAgICAgICAgICAgICAgIGNhbGxzaXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNsYXNzTmFtZSA9PT0gU2hhcmVkRXJyb3JzLkNhbm5vdE9idGFpbkluZm9Gb3JFbGVtZW50U3BlY2lmaWVkQnlTZWxlY3RvckVycm9yLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2hhcmVkRXJyb3JzLkNhbm5vdE9idGFpbkluZm9Gb3JFbGVtZW50U3BlY2lmaWVkQnlTZWxlY3RvckVycm9yKGNhbGxzaXRlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFwaUZuQ2hhaW46IGNvbW1hbmQuYXBpRm5DaGFpbixcbiAgICAgICAgICAgICAgICAgICAgYXBpRm5JbmRleDogcGFyc2VJbnQoQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fZ2V0UHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgJ2FwaUZuSW5kZXgnKSwgMTApLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lID09PSBTaGFyZWRFcnJvcnMuQWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3IubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuQWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3IoY2FsbHNpdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgYXBpRm5DaGFpbjogY29tbWFuZC5hcGlGbkNoYWluLFxuICAgICAgICAgICAgICAgICAgICBhcGlGbkluZGV4OiBwYXJzZUludChDbGllbnRGdW5jdGlvbkV4ZWN1dG9yLl9nZXRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0aWVzLCAnYXBpRm5JbmRleCcpLCAxMCksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjbGFzc05hbWUgPT09IFNoYXJlZEVycm9ycy5Eb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvci5uYW1lKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuRG9tTm9kZUNsaWVudEZ1bmN0aW9uUmVzdWx0RXJyb3IoY29tbWFuZC5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lLCBjYWxsc2l0ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjbGFzc05hbWUgPT09IFNoYXJlZEVycm9ycy5JbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvci5uYW1lKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuSW52YWxpZFNlbGVjdG9yUmVzdWx0RXJyb3IoY2FsbHNpdGUpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lID09PSBTaGFyZWRFcnJvcnMuQWN0aW9uRWxlbWVudElzSW52aXNpYmxlRXJyb3IubmFtZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2hhcmVkRXJyb3JzLkFjdGlvbkVsZW1lbnRJc0ludmlzaWJsZUVycm9yKGNhbGxzaXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuVW5jYXVnaHRFcnJvckluQ2xpZW50RnVuY3Rpb25Db2RlKGNvbW1hbmQuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgZGV0YWlscy50ZXh0LCBjYWxsc2l0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVDbGllbnRGdW5jdGlvbiAoUnVudGltZTogUnVudGltZUFwaSwgY29tbWFuZDogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCwgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkKTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGAke1BST1hZTEVTU19TQ1JJUFR9LmV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQoJHtKU09OLnN0cmluZ2lmeShjb21tYW5kKX0pO2A7XG5cbiAgICAgICAgY29uc3QgeyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yIH0gPSBhd2FpdCB0aGlzLmV2YWx1YXRlU2NyaXB0KFJ1bnRpbWUsIGV4cHJlc3Npb24pO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLmNvZGUgPT09IEVYRUNVVElPTl9DVFhfV0FTX0RFU1RST1lFRF9DT0RFKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaGFyZWRFcnJvcnMuQ2xpZW50RnVuY3Rpb25FeGVjdXRpb25JbnRlcnJ1cHRpb25FcnJvcihjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIGNhbGxzaXRlKTtcblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscylcbiAgICAgICAgICAgIENsaWVudEZ1bmN0aW9uRXhlY3V0b3IuX3Rocm93RXhjZXB0aW9uKGV4Y2VwdGlvbkRldGFpbHMsIGNvbW1hbmQsIGNhbGxzaXRlKTtcblxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQhLnZhbHVlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVTZWxlY3RvciA8VCBleHRlbmRzIFNlbGVjdG9yU25hcHNob3RBcmdzIHwgU2VsZWN0b3JOb2RlQXJncz4gKGFyZ3M6IFQpOiBQcm9taXNlPFQgZXh0ZW5kcyBTZWxlY3Rvck5vZGVBcmdzID8gc3RyaW5nIDogb2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHsgUnVudGltZSwgY29tbWFuZCwgY2FsbHNpdGUsIHNlbGVjdG9yVGltZW91dCwgZXJyQ3RvcnMgfSA9IGFyZ3M7XG5cbiAgICAgICAgY29uc3QgcmV0dXJuTm9kZU9iaklkID0gJ0RPTScgaW4gYXJncztcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiAgICAgID0gYCR7UFJPWFlMRVNTX1NDUklQVH0uZXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCgke0pTT04uc3RyaW5naWZ5KGNvbW1hbmQpfSwgJHtzZWxlY3RvclRpbWVvdXR9LCAke0RhdGUubm93KCl9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtyZXR1cm5Ob2RlT2JqSWR9LCAke0pTT04uc3RyaW5naWZ5KGVyckN0b3JzKX0pO2A7XG5cbiAgICAgICAgY29uc3QgeyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yIH0gPSBhd2FpdCB0aGlzLl9ldmFsdWF0ZVNjcmlwdFdpdGhSZWxvYWRQYWdlSWdub3JlKFJ1bnRpbWUsIGV4cHJlc3Npb24pO1xuXG4gICAgICAgIGlmIChlcnJvcilcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuXG4gICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKVxuICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fdGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uRGV0YWlscywgY29tbWFuZCwgY2FsbHNpdGUpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIHJldHVybiByZXR1cm5Ob2RlT2JqSWQgPyByZXN1bHQhLm9iamVjdElkIDogSlNPTi5wYXJzZShyZXN1bHQhLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9kZSAoYXJnczogU2VsZWN0b3JOb2RlQXJncyk6IFByb21pc2U8U2VydmVyTm9kZT4ge1xuICAgICAgICBjb25zdCBvYmplY3RJZCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVNlbGVjdG9yKGFyZ3MpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmliZU5vZGUoYXJncy5ET00sIG9iamVjdElkKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getClient = exports.setClient = void 0;
4
+ // NOTE: temporary solution
5
+ let currentClient;
6
+ function setClient(client) {
7
+ currentClient = client;
8
+ }
9
+ exports.setClient = setClient;
10
+ function getClient() {
11
+ return currentClient;
12
+ }
13
+ exports.getClient = getClient;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50cy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jZHAtY2xpZW50L2NsaWVudHMtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwyQkFBMkI7QUFDM0IsSUFBSSxhQUEwQixDQUFDO0FBRS9CLFNBQWdCLFNBQVMsQ0FBRSxNQUFtQjtJQUMxQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFGRCw4QkFFQztBQUVELFNBQWdCLFNBQVM7SUFDckIsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQztBQUZELDhCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3RvY29sUHJveHlBcGkgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wvdHlwZXMvcHJvdG9jb2wtcHJveHktYXBpJztcbmltcG9ydCBQcm90b2NvbEFwaSA9IFByb3RvY29sUHJveHlBcGkuUHJvdG9jb2xBcGk7XG5cblxuLy8gTk9URTogdGVtcG9yYXJ5IHNvbHV0aW9uXG5sZXQgY3VycmVudENsaWVudDogUHJvdG9jb2xBcGk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDbGllbnQgKGNsaWVudDogUHJvdG9jb2xBcGkpOiB2b2lkIHtcbiAgICBjdXJyZW50Q2xpZW50ID0gY2xpZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xpZW50ICgpOiBQcm90b2NvbEFwaSB7XG4gICAgcmV0dXJuIGN1cnJlbnRDbGllbnQ7XG59XG4iXX0=
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const EMPTY_CONTEXT = -1;
4
+ class ExecutionContext {
5
+ constructor(parent, frameId = '', ctxId = EMPTY_CONTEXT) {
6
+ this.children = [];
7
+ this.ctxId = ctxId;
8
+ this.frameId = frameId;
9
+ this.parent = parent !== null && parent !== void 0 ? parent : this;
10
+ }
11
+ _is(frameOrCtxId) {
12
+ return (typeof frameOrCtxId === 'string' ? this.frameId : this.ctxId) === frameOrCtxId;
13
+ }
14
+ find(frameOrCtxId) {
15
+ if (this._is(frameOrCtxId))
16
+ return this;
17
+ const children = Array.from(this.children);
18
+ let index = 0;
19
+ while (children[index]) {
20
+ const child = children[index];
21
+ if (child._is(frameOrCtxId))
22
+ return child;
23
+ if (child.children.length)
24
+ children.push(...child.children);
25
+ ++index;
26
+ }
27
+ return ExecutionContext.top;
28
+ }
29
+ _add(frameId) {
30
+ const newCtx = new ExecutionContext(this, frameId);
31
+ this.children.push(newCtx);
32
+ return newCtx;
33
+ }
34
+ _remove() {
35
+ if (this === ExecutionContext.current)
36
+ ExecutionContext.current = ExecutionContext.top;
37
+ for (const child of this.children)
38
+ child._remove();
39
+ if (!this.parent || this.parent === this)
40
+ return;
41
+ this.parent.children.splice(this.parent.children.indexOf(this), 1);
42
+ this.parent = null;
43
+ }
44
+ _setContext(ctx) {
45
+ this.ctxId = ctx;
46
+ }
47
+ _deleteContext() {
48
+ this.ctxId = EMPTY_CONTEXT;
49
+ }
50
+ _clearAll() {
51
+ ExecutionContext.current = ExecutionContext.top;
52
+ this.frameId = '';
53
+ this.ctxId = EMPTY_CONTEXT;
54
+ this._remove();
55
+ }
56
+ static initialize({ Runtime, Page }) {
57
+ Page.on('frameAttached', ({ frameId, parentFrameId }) => {
58
+ ExecutionContext.top.find(parentFrameId)._add(frameId);
59
+ });
60
+ Page.on('frameDetached', ({ frameId }) => ExecutionContext.top.find(frameId)._remove());
61
+ Runtime.on('executionContextsCleared', () => ExecutionContext.top._clearAll());
62
+ Runtime.on('executionContextDestroyed', ({ executionContextId }) => ExecutionContext.top.find(executionContextId)._deleteContext());
63
+ Runtime.on('executionContextCreated', ({ context }) => {
64
+ if (!context.auxData || !context.auxData.frameId || !context.auxData.isDefault)
65
+ return;
66
+ if (!ExecutionContext.top.frameId)
67
+ ExecutionContext.top.frameId = context.auxData.frameId;
68
+ ExecutionContext.top.find(context.auxData.frameId)._setContext(context.id);
69
+ });
70
+ }
71
+ static getCurrentContextId() {
72
+ return ExecutionContext.current.ctxId;
73
+ }
74
+ static switchToIframe(frameId) {
75
+ ExecutionContext.current = ExecutionContext.top.find(frameId);
76
+ }
77
+ static switchToMainWindow() {
78
+ ExecutionContext.current = ExecutionContext.top;
79
+ }
80
+ }
81
+ exports.default = ExecutionContext;
82
+ ExecutionContext.current = new ExecutionContext();
83
+ ExecutionContext.top = ExecutionContext.current;
84
+ module.exports = exports.default;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2NkcC1jbGllbnQvZXhlY3V0aW9uLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV6QixNQUFxQixnQkFBZ0I7SUFNakMsWUFBb0IsTUFBeUIsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxhQUFhO1FBRjNFLGFBQVEsR0FBdUIsRUFBRSxDQUFDO1FBR3JDLElBQUksQ0FBQyxLQUFLLEdBQUksS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUksTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxHQUFHLENBQUUsWUFBNkI7UUFDdEMsT0FBTyxDQUFDLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFlBQVksQ0FBQztJQUMzRixDQUFDO0lBRU0sSUFBSSxDQUFFLFlBQTZCO1FBQ3RDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFFaEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLEdBQVEsQ0FBQyxDQUFDO1FBRW5CLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5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QU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUMxRSxPQUFPO1lBRVgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPO2dCQUM3QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBRTNELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUI7UUFDN0IsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFFLE9BQWU7UUFDekMsZ0JBQWdCLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0I7UUFDNUIsZ0JBQWdCLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztJQUNwRCxDQUFDOztBQTlHTCxtQ0ErR0M7QUFsQ2lCLHdCQUFPLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3hCLG9CQUFHLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3RvY29sUHJveHlBcGkgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wvdHlwZXMvcHJvdG9jb2wtcHJveHktYXBpJztcbmltcG9ydCBQcm90b2NvbEFwaSA9IFByb3RvY29sUHJveHlBcGkuUHJvdG9jb2xBcGk7XG5cblxuY29uc3QgRU1QVFlfQ09OVEVYVCA9IC0xO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeGVjdXRpb25Db250ZXh0IHtcbiAgICBwdWJsaWMgY3R4SWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgZnJhbWVJZDogc3RyaW5nO1xuICAgIHB1YmxpYyBwYXJlbnQ6IEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsO1xuICAgIHB1YmxpYyBjaGlsZHJlbjogRXhlY3V0aW9uQ29udGV4dFtdID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHBhcmVudD86IEV4ZWN1dGlvbkNvbnRleHQsIGZyYW1lSWQgPSAnJywgY3R4SWQgPSBFTVBUWV9DT05URVhUKSB7XG4gICAgICAgIHRoaXMuY3R4SWQgID0gY3R4SWQ7XG4gICAgICAgIHRoaXMuZnJhbWVJZCA9IGZyYW1lSWQ7XG4gICAgICAgIHRoaXMucGFyZW50ICA9IHBhcmVudCA/PyB0aGlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzIChmcmFtZU9yQ3R4SWQ6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHR5cGVvZiBmcmFtZU9yQ3R4SWQgPT09ICdzdHJpbmcnID8gdGhpcy5mcmFtZUlkIDogdGhpcy5jdHhJZCkgPT09IGZyYW1lT3JDdHhJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZCAoZnJhbWVPckN0eElkOiBzdHJpbmcgfCBudW1iZXIpOiBFeGVjdXRpb25Db250ZXh0IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzKGZyYW1lT3JDdHhJZCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbik7XG4gICAgICAgIGxldCBpbmRleCAgICAgID0gMDtcblxuICAgICAgICB3aGlsZSAoY2hpbGRyZW5baW5kZXhdKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2luZGV4XTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkLl9pcyhmcmFtZU9yQ3R4SWQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcblxuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0aClcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKC4uLmNoaWxkLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFeGVjdXRpb25Db250ZXh0LnRvcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGQgKGZyYW1lSWQ6IHN0cmluZyk6IEV4ZWN1dGlvbkNvbnRleHQge1xuICAgICAgICBjb25zdCBuZXdDdHggPSBuZXcgRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBmcmFtZUlkKTtcblxuICAgICAgICB0aGlzLmNoaWxkcmVuLnB1c2gobmV3Q3R4KTtcblxuICAgICAgICByZXR1cm4gbmV3Q3R4O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzID09PSBFeGVjdXRpb25Db250ZXh0LmN1cnJlbnQpXG4gICAgICAgICAgICBFeGVjdXRpb25Db250ZXh0LmN1cnJlbnQgPSBFeGVjdXRpb25Db250ZXh0LnRvcDtcblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pXG4gICAgICAgICAgICBjaGlsZC5fcmVtb3ZlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCB8fCB0aGlzLnBhcmVudCA9PT0gdGhpcylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UodGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKSwgMSk7XG4gICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDb250ZXh0IChjdHg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN0eElkID0gY3R4O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RlbGV0ZUNvbnRleHQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN0eElkID0gRU1QVFlfQ09OVEVYVDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jbGVhckFsbCAoKTogdm9pZCB7XG4gICAgICAgIEV4ZWN1dGlvbkNvbnRleHQuY3VycmVudCA9IEV4ZWN1dGlvbkNvbnRleHQudG9wO1xuXG4gICAgICAgIHRoaXMuZnJhbWVJZCA9ICcnO1xuICAgICAgICB0aGlzLmN0eElkICAgPSBFTVBUWV9DT05URVhUO1xuXG4gICAgICAgIHRoaXMuX3JlbW92ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudCA9IG5ldyBFeGVjdXRpb25Db250ZXh0KCk7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSB0b3AgPSBFeGVjdXRpb25Db250ZXh0LmN1cnJlbnQ7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXRpYWxpemUgKHsgUnVudGltZSwgUGFnZSB9OiBQcm90b2NvbEFwaSk6IHZvaWQge1xuICAgICAgICBQYWdlLm9uKCdmcmFtZUF0dGFjaGVkJywgKHsgZnJhbWVJZCwgcGFyZW50RnJhbWVJZCB9KSA9PiB7XG4gICAgICAgICAgICBFeGVjdXRpb25Db250ZXh0LnRvcC5maW5kKHBhcmVudEZyYW1lSWQpLl9hZGQoZnJhbWVJZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBQYWdlLm9uKCdmcmFtZURldGFjaGVkJywgKHsgZnJhbWVJZCB9KSA9PiBFeGVjdXRpb25Db250ZXh0LnRvcC5maW5kKGZyYW1lSWQpLl9yZW1vdmUoKSk7XG4gICAgICAgIFJ1bnRpbWUub24oJ2V4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZCcsICgpID0+IEV4ZWN1dGlvbkNvbnRleHQudG9wLl9jbGVhckFsbCgpKTtcbiAgICAgICAgUnVudGltZS5vbignZXhlY3V0aW9uQ29udGV4dERlc3Ryb3llZCcsICh7IGV4ZWN1dGlvbkNvbnRleHRJZCB9KSA9PlxuICAgICAgICAgICAgRXhlY3V0aW9uQ29udGV4dC50b3AuZmluZChleGVjdXRpb25Db250ZXh0SWQpLl9kZWxldGVDb250ZXh0KCkpO1xuXG4gICAgICAgIFJ1bnRpbWUub24oJ2V4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgKHsgY29udGV4dCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuYXV4RGF0YSB8fCAhY29udGV4dC5hdXhEYXRhLmZyYW1lSWQgfHwgIWNvbnRleHQuYXV4RGF0YS5pc0RlZmF1bHQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBpZiAoIUV4ZWN1dGlvbkNvbnRleHQudG9wLmZyYW1lSWQpXG4gICAgICAgICAgICAgICAgRXhlY3V0aW9uQ29udGV4dC50b3AuZnJhbWVJZCA9IGNvbnRleHQuYXV4RGF0YS5mcmFtZUlkO1xuXG4gICAgICAgICAgICBFeGVjdXRpb25Db250ZXh0LnRvcC5maW5kKGNvbnRleHQuYXV4RGF0YS5mcmFtZUlkKS5fc2V0Q29udGV4dChjb250ZXh0LmlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDdXJyZW50Q29udGV4dElkICgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gRXhlY3V0aW9uQ29udGV4dC5jdXJyZW50LmN0eElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoVG9JZnJhbWUgKGZyYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBFeGVjdXRpb25Db250ZXh0LmN1cnJlbnQgPSBFeGVjdXRpb25Db250ZXh0LnRvcC5maW5kKGZyYW1lSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoVG9NYWluV2luZG93ICgpOiB2b2lkIHtcbiAgICAgICAgRXhlY3V0aW9uQ29udGV4dC5jdXJyZW50ID0gRXhlY3V0aW9uQ29udGV4dC50b3A7XG4gICAgfVxufVxuIl19