@getopenpay/openpay-js-react 0.5.4-alpha.745f12a → 0.5.4

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 (22) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-DDwQoNEL-BtNvf3FR.js → Resource-DFFbVGKi-CDOmaO86.js} +3 -3
  3. package/dist/{SimpleSpanProcessor-D70Bwi5r-D_w0jehB.js → SimpleSpanProcessor-C1tmqVnt-UyReHxQn.js} +7 -7
  4. package/dist/{detect-resources-BSC2dzfy-CqmwmncJ.js → detect-resources-D209lY8u-DJsWH2zW.js} +7 -7
  5. package/dist/{diag-api-CJh5gJqT-iEDBm-aJ.js → diag-api-BhqoDu5p-BmIx9NpC.js} +2 -2
  6. package/dist/{index-0h1ED0pR-CE8U7IjL.js → index-B1QyVQwB-usZu6lkL.js} +2 -2
  7. package/dist/{index-CdtBaIbO-BWh23hoK.js → index-Bhpj-r7q-Cewp_xM6.js} +5 -5
  8. package/dist/{index-CJ8rEEUc.js → index-BiD1fl0z.js} +415 -418
  9. package/dist/{index-BjluLWoM-leQUT24R.js → index-BpXWQpIg-BH4pR5_K.js} +6 -6
  10. package/dist/{index-HwXDP3Pe-DS3xj6cm.js → index-CKt2gfO2-bo_31Vp5.js} +2 -2
  11. package/dist/{index-uCjF0nIN-DrG1K2tf.js → index-CM8rSN00-DfVrGDFd.js} +5 -5
  12. package/dist/{index-DRYcQ66s-pGLL3Shc.js → index-D9ZmuU6m-DwqAQIt_.js} +2 -2
  13. package/dist/{index-BO56xLq2-CLRN9cx2.js → index-DKMlZbAT-BaMooIL3.js} +5 -5
  14. package/dist/{index-CAznt40s-Z-7RjgRr.js → index-OfdHd64A-LpjobbwL.js} +6 -6
  15. package/dist/{index-DFMxgGzs-BSA8TU4k.js → index-ndl392gu-837MtCn7.js} +2 -2
  16. package/dist/index.js +1 -1
  17. package/dist/{metrics-api-B7qVLdHx-Du-Yh-45.js → metrics-api-BLdNa3zl-8hRhscDc.js} +2 -2
  18. package/dist/{sdk-info-CYGB4K8l-DimobWle.js → sdk-info-CqA-SXuM-DI-zWj4L.js} +2 -2
  19. package/dist/{url-BPGxzsvj-CkB-P11L.js → url-DeNJTAv_-Dz8hGDTr.js} +2 -2
  20. package/dist/{utils-CULcMFge-CPUURlvX.js → utils-BGeURJ6g-CR7cu0vX.js} +2 -2
  21. package/dist/{utils-VlUhsBAR-Dzra4gYA.js → utils-o5pYuIi6-DBvzMNEE.js} +4 -4
  22. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { r as h } from "./diag-api-CJh5gJqT-iEDBm-aJ.js";
2
- import { i as m, b4 as p, bq as y, b5 as v, b6 as d } from "./sdk-info-CYGB4K8l-DimobWle.js";
1
+ import { r as h } from "./diag-api-BhqoDu5p-BmIx9NpC.js";
2
+ import { i as m, b4 as p, bq as y, b5 as v, b6 as d } from "./sdk-info-CqA-SXuM-DI-zWj4L.js";
3
3
  function g() {
4
4
  return "unknown_service";
5
5
  }
@@ -173,4 +173,4 @@ export {
173
173
  g as E,
174
174
  S as R
175
175
  };
176
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiUmVzb3VyY2UtRER3UW9ORUwtIX57MDBmfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLUNKaDVnSnFULSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGkgYXMgaVMsIGI0IGFzIFRULCBicSBhcyBYQSwgYjUgYXMgX1QsIGI2IGFzIFNUIH0gZnJvbSAnLi9zZGstaW5mby1DWUdCNEs4bC0hfnswMGd9fi5qcyc7XG5cbmZ1bmN0aW9uIEUoKSB7XG4gIHJldHVybiBcInVua25vd25fc2VydmljZVwiO1xufVxudmFyIGYgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGYgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHUpIHtcbiAgICBmb3IgKHZhciBuLCBlID0gMSwgcyA9IGFyZ3VtZW50cy5sZW5ndGg7IGUgPCBzOyBlKyspIHtcbiAgICAgIG4gPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciBpIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCBpKSAmJiAodVtpXSA9IG5baV0pO1xuICAgIH1cbiAgICByZXR1cm4gdTtcbiAgfSwgZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgbSA9IGZ1bmN0aW9uKHUsIG4sIGUsIHMpIHtcbiAgZnVuY3Rpb24gaSh0KSB7XG4gICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBlID8gdCA6IG5ldyBlKGZ1bmN0aW9uKGEpIHtcbiAgICAgIGEodCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5ldyAoZSB8fCAoZSA9IFByb21pc2UpKShmdW5jdGlvbih0LCBhKSB7XG4gICAgZnVuY3Rpb24gbyhjKSB7XG4gICAgICB0cnkge1xuICAgICAgICByKHMubmV4dChjKSk7XG4gICAgICB9IGNhdGNoIChiKSB7XG4gICAgICAgIGEoYik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGwoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcihzLnRocm93KGMpKTtcbiAgICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgICAgYShiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcihjKSB7XG4gICAgICBjLmRvbmUgPyB0KGMudmFsdWUpIDogaShjLnZhbHVlKS50aGVuKG8sIGwpO1xuICAgIH1cbiAgICByKChzID0gcy5hcHBseSh1LCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufSwgUyA9IGZ1bmN0aW9uKHUsIG4pIHtcbiAgdmFyIGUgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAodFswXSAmIDEpIHRocm93IHRbMV07XG4gICAgcmV0dXJuIHRbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIHMsIGksIHQsIGE7XG4gIHJldHVybiBhID0geyBuZXh0OiBvKDApLCB0aHJvdzogbygxKSwgcmV0dXJuOiBvKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIChhW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGE7XG4gIGZ1bmN0aW9uIG8ocikge1xuICAgIHJldHVybiBmdW5jdGlvbihjKSB7XG4gICAgICByZXR1cm4gbChbciwgY10pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gbChyKSB7XG4gICAgaWYgKHMpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgIGZvciAoOyBlOyApIHRyeSB7XG4gICAgICBpZiAocyA9IDEsIGkgJiYgKHQgPSByWzBdICYgMiA/IGkucmV0dXJuIDogclswXSA/IGkudGhyb3cgfHwgKCh0ID0gaS5yZXR1cm4pICYmIHQuY2FsbChpKSwgMCkgOiBpLm5leHQpICYmICEodCA9IHQuY2FsbChpLCByWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICBzd2l0Y2ggKGkgPSAwLCB0ICYmIChyID0gW3JbMF0gJiAyLCB0LnZhbHVlXSksIHJbMF0pIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdCA9IHI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gZS5sYWJlbCsrLCB7IHZhbHVlOiByWzFdLCBkb25lOiAhMSB9O1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgZS5sYWJlbCsrLCBpID0gclsxXSwgciA9IFswXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHIgPSBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmICh0ID0gZS50cnlzLCAhKHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAoclswXSA9PT0gNiB8fCByWzBdID09PSAyKSkge1xuICAgICAgICAgICAgZSA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJbMF0gPT09IDMgJiYgKCF0IHx8IHJbMV0gPiB0WzBdICYmIHJbMV0gPCB0WzNdKSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHJbMV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJbMF0gPT09IDYgJiYgZS5sYWJlbCA8IHRbMV0pIHtcbiAgICAgICAgICAgIGUubGFiZWwgPSB0WzFdLCB0ID0gcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodCAmJiBlLmxhYmVsIDwgdFsyXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMl0sIGUub3BzLnB1c2gocik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdFsyXSAmJiBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgciA9IG4uY2FsbCh1LCBlKTtcbiAgICB9IGNhdGNoIChjKSB7XG4gICAgICByID0gWzYsIGNdLCBpID0gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcyA9IHQgPSAwO1xuICAgIH1cbiAgICBpZiAoclswXSAmIDUpIHRocm93IHJbMV07XG4gICAgcmV0dXJuIHsgdmFsdWU6IHJbMF0gPyByWzFdIDogdm9pZCAwLCBkb25lOiAhMCB9O1xuICB9XG59LCBnID0gZnVuY3Rpb24odSwgbikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gdTtcbiAgdmFyIHMgPSBlLmNhbGwodSksIGksIHQgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKGkgPSBzLm5leHQoKSkuZG9uZTsgKSB0LnB1c2goaS52YWx1ZSk7XG4gIH0gY2F0Y2ggKG8pIHtcbiAgICBhID0geyBlcnJvcjogbyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKGUgPSBzLnJldHVybikgJiYgZS5jYWxsKHMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHQ7XG59LCBSID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHUobiwgZSkge1xuICAgICAgdmFyIHMgPSB0aGlzLCBpO1xuICAgICAgdGhpcy5fYXR0cmlidXRlcyA9IG4sIHRoaXMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyA9IGUgIT0gbnVsbCwgdGhpcy5fc3luY0F0dHJpYnV0ZXMgPSAoaSA9IHRoaXMuX2F0dHJpYnV0ZXMpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiB7fSwgdGhpcy5fYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSA9IGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUudGhlbihmdW5jdGlvbih0KSB7XG4gICAgICAgIHJldHVybiBzLl9hdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgcy5fYXR0cmlidXRlcywgdCksIHMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyA9ICExLCB0O1xuICAgICAgfSwgZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gci5kZWJ1ZyhcImEgcmVzb3VyY2UncyBhc3luYyBhdHRyaWJ1dGVzIHByb21pc2UgcmVqZWN0ZWQ6ICVzXCIsIHQpLCBzLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcgPSAhMSwge307XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB1LkVNUFRZO1xuICAgIH0sIHUuZGVmYXVsdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG47XG4gICAgICByZXR1cm4gbmV3IHUoKG4gPSB7fSwgbltpU10gPSBFKCksIG5bVFRdID0gWEFbVFRdLCBuW19UXSA9IFhBW19UXSwgbltTVF0gPSBYQVtTVF0sIG4pKTtcbiAgICB9LCBPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyAmJiByLmVycm9yKFwiQWNjZXNzaW5nIHJlc291cmNlIGF0dHJpYnV0ZXMgYmVmb3JlIGFzeW5jIGF0dHJpYnV0ZXMgc2V0dGxlZFwiKSwgKG4gPSB0aGlzLl9hdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDoge307XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIHUucHJvdG90eXBlLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBtKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFModGhpcywgZnVuY3Rpb24obikge1xuICAgICAgICAgIHN3aXRjaCAobi5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nID8gWzQsIHRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2VdIDogWzMsIDJdO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBuLnNlbnQoKSwgbi5sYWJlbCA9IDI7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgdS5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbihuKSB7XG4gICAgICB2YXIgZSA9IHRoaXMsIHM7XG4gICAgICBpZiAoIW4pXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgdmFyIGkgPSBmKGYoe30sIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKSwgKHMgPSBuLl9zeW5jQXR0cmlidXRlcykgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IG4uYXR0cmlidXRlcyk7XG4gICAgICBpZiAoIXRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2UgJiYgIW4uX2FzeW5jQXR0cmlidXRlc1Byb21pc2UpXG4gICAgICAgIHJldHVybiBuZXcgdShpKTtcbiAgICAgIHZhciB0ID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLl9hc3luY0F0dHJpYnV0ZXNQcm9taXNlLFxuICAgICAgICBuLl9hc3luY0F0dHJpYnV0ZXNQcm9taXNlXG4gICAgICBdKS50aGVuKGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgdmFyIG8sIGwgPSBnKGEsIDIpLCByID0gbFswXSwgYyA9IGxbMV07XG4gICAgICAgIHJldHVybiBmKGYoZihmKHt9LCBlLl9zeW5jQXR0cmlidXRlcyksIHIpLCAobyA9IG4uX3N5bmNBdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogbi5hdHRyaWJ1dGVzKSwgYyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgdShpLCB0KTtcbiAgICB9LCB1LkVNUFRZID0gbmV3IHUoe30pLCB1O1xuICB9KClcbik7XG5cbmV4cG9ydCB7IEUsIFIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUFBLFNBQVM7QUFDbEIsU0FBUyxLQUFLQyxHQUFJLE1BQU1DLEdBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLE1BQU1DLFNBQVU7QUFFaEUsU0FBU0MsSUFBSTtBQUNYLFNBQU87QUFDVDtBQUNBLElBQUlDLElBQUksV0FBVztBQUNqQixTQUFPQSxJQUFJLE9BQU8sVUFBVSxTQUFTQyxHQUFHO0FBQ3RDLGFBQVMsR0FBRyxJQUFJLEdBQUdDLElBQUksVUFBVSxRQUFRLElBQUlBLEdBQUcsS0FBSztBQUNuRCxVQUFJLFVBQVUsQ0FBQztBQUNmLGVBQVMsS0FBSyxFQUFHLFFBQU8sVUFBVSxlQUFlLEtBQUssR0FBRyxDQUFDLE1BQU1ELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUFBLElBQzVFO0FBQ0EsV0FBT0E7QUFBQSxFQUNULEdBQUdELEVBQUUsTUFBTSxNQUFNLFNBQVM7QUFDNUIsR0FBR0csSUFBSSxTQUFTRixHQUFHLEdBQUcsR0FBR0MsR0FBRztBQUMxQixXQUFTLEVBQUUsR0FBRztBQUNaLFdBQU8sYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLFNBQVNFLEdBQUc7QUFDNUMsTUFBQUEsRUFBRSxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sS0FBSyxN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QU8sS0FBSywwQkFBMEJSLEVBQUUsTUFBTSwrREFBK0QsSUFBSSxJQUFJLEtBQUssaUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksQ0FBQztBQUFBLE1BQ3pLO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHUSxFQUFFLFVBQVUseUJBQXlCLFdBQVc7QUFDbEQsYUFBT0UsRUFBRSxNQUFNLFFBQVEsUUFBUSxXQUFXO0FBQ3hDLGVBQU9LLEVBQUUsTUFBTSxTQUFTLEdBQUc7QUFDekIsa0JBQVEsRUFBRSxPQUFPO0FBQUEsWUFDZixLQUFLO0FBQ0gscUJBQU8sS0FBSyx5QkFBeUIsQ0FBQyxHQUFHLEtBQUssdUJBQXVCLElBQUksQ0FBQyxHQUFHLENBQUM7QUFBQSxZQUNoRixLQUFLO0FBQ0gsZ0JBQUUsS0FBSyxHQUFHLEVBQUUsUUFBUTtBQUFBLFlBQ3RCLEtBQUs7QUFDSCxxQkFBTztBQUFBLGdCQUNMO0FBQUE7QUFBQSxjQUVGO0FBQUEsVUFDSjtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUFBLElBQ0gsR0FBR1AsRUFBRSxVQUFVLFFBQVEsU0FBUyxHQUFHO0FBQ2pDLFVBQUksSUFBSSxNQUFNQztBQUNkLFVBQUksQ0FBQztBQUNILGVBQU87QUFDVCxVQUFJLElBQUlGLEVBQUVBLEVBQUUsQ0FBQyxHQUFHLEtBQUssZUFBZSxJQUFJRSxJQUFJLEVBQUUscUJBQXFCLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxFQUFFLFVBQVU7QUFDMUcsVUFBSSxDQUFDLEtBQUssMkJBQTJCLENBQUMsRUFBRTtBQUN0QyxlQUFPLElBQUlELEVBQUUsQ0FBQztBQUNoQixVQUFJLElBQUksUUFBUSxJQUFJO0FBQUEsUUFDbEIsS0FBSztBQUFBLFFBQ0wsRUFBRTtBQUFBLE1BQ0osQ0FBQyxFQUFFLEtBQUssU0FBU0csR0FBRztBQUNsQixZQUFJQyxHQUFHRSxJQUFJRSxFQUFFTCxHQUFHLENBQUMsR0FBRyxJQUFJRyxFQUFFLENBQUMsR0FBR0QsSUFBSUMsRUFBRSxDQUFDO0FBQ3JDLGVBQU9QLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxHQUFHLENBQUMsSUFBSUssSUFBSSxFQUFFLHFCQUFxQixRQUFRQSxNQUFNLFNBQVNBLElBQUksRUFBRSxVQUFVLEdBQUdDLENBQUM7QUFBQSxNQUNwSCxDQUFDO0FBQ0QsYUFBTyxJQUFJTCxFQUFFLEdBQUcsQ0FBQztBQUFBLElBQ25CLEdBQUdBLEVBQUUsUUFBUSxJQUFJQSxFQUFFLENBQUMsQ0FBQyxHQUFHQTtBQUFBLEVBQzFCLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiciIsICJpUyIsICJUVCIsICJYQSIsICJfVCIsICJTVCIsICJFIiwgImYiLCAidSIsICJzIiwgIm0iLCAiYSIsICJvIiwgImMiLCAibCIsICJTIiwgImciLCAiUiJdCn0K
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiUmVzb3VyY2UtREZGYlZHS2ktIX57MDBmfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLUJocW9EdTVwLSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGkgYXMgaVMsIGI0IGFzIFRULCBicSBhcyBYQSwgYjUgYXMgX1QsIGI2IGFzIFNUIH0gZnJvbSAnLi9zZGstaW5mby1DcUEtU1h1TS0hfnswMGd9fi5qcyc7XG5cbmZ1bmN0aW9uIEUoKSB7XG4gIHJldHVybiBcInVua25vd25fc2VydmljZVwiO1xufVxudmFyIGYgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGYgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHUpIHtcbiAgICBmb3IgKHZhciBuLCBlID0gMSwgcyA9IGFyZ3VtZW50cy5sZW5ndGg7IGUgPCBzOyBlKyspIHtcbiAgICAgIG4gPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciBpIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCBpKSAmJiAodVtpXSA9IG5baV0pO1xuICAgIH1cbiAgICByZXR1cm4gdTtcbiAgfSwgZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgbSA9IGZ1bmN0aW9uKHUsIG4sIGUsIHMpIHtcbiAgZnVuY3Rpb24gaSh0KSB7XG4gICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBlID8gdCA6IG5ldyBlKGZ1bmN0aW9uKGEpIHtcbiAgICAgIGEodCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5ldyAoZSB8fCAoZSA9IFByb21pc2UpKShmdW5jdGlvbih0LCBhKSB7XG4gICAgZnVuY3Rpb24gbyhjKSB7XG4gICAgICB0cnkge1xuICAgICAgICByKHMubmV4dChjKSk7XG4gICAgICB9IGNhdGNoIChiKSB7XG4gICAgICAgIGEoYik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGwoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcihzLnRocm93KGMpKTtcbiAgICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgICAgYShiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcihjKSB7XG4gICAgICBjLmRvbmUgPyB0KGMudmFsdWUpIDogaShjLnZhbHVlKS50aGVuKG8sIGwpO1xuICAgIH1cbiAgICByKChzID0gcy5hcHBseSh1LCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufSwgUyA9IGZ1bmN0aW9uKHUsIG4pIHtcbiAgdmFyIGUgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAodFswXSAmIDEpIHRocm93IHRbMV07XG4gICAgcmV0dXJuIHRbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIHMsIGksIHQsIGE7XG4gIHJldHVybiBhID0geyBuZXh0OiBvKDApLCB0aHJvdzogbygxKSwgcmV0dXJuOiBvKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIChhW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGE7XG4gIGZ1bmN0aW9uIG8ocikge1xuICAgIHJldHVybiBmdW5jdGlvbihjKSB7XG4gICAgICByZXR1cm4gbChbciwgY10pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gbChyKSB7XG4gICAgaWYgKHMpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgIGZvciAoOyBlOyApIHRyeSB7XG4gICAgICBpZiAocyA9IDEsIGkgJiYgKHQgPSByWzBdICYgMiA/IGkucmV0dXJuIDogclswXSA/IGkudGhyb3cgfHwgKCh0ID0gaS5yZXR1cm4pICYmIHQuY2FsbChpKSwgMCkgOiBpLm5leHQpICYmICEodCA9IHQuY2FsbChpLCByWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICBzd2l0Y2ggKGkgPSAwLCB0ICYmIChyID0gW3JbMF0gJiAyLCB0LnZhbHVlXSksIHJbMF0pIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdCA9IHI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gZS5sYWJlbCsrLCB7IHZhbHVlOiByWzFdLCBkb25lOiAhMSB9O1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgZS5sYWJlbCsrLCBpID0gclsxXSwgciA9IFswXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHIgPSBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmICh0ID0gZS50cnlzLCAhKHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAoclswXSA9PT0gNiB8fCByWzBdID09PSAyKSkge1xuICAgICAgICAgICAgZSA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJbMF0gPT09IDMgJiYgKCF0IHx8IHJbMV0gPiB0WzBdICYmIHJbMV0gPCB0WzNdKSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHJbMV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJbMF0gPT09IDYgJiYgZS5sYWJlbCA8IHRbMV0pIHtcbiAgICAgICAgICAgIGUubGFiZWwgPSB0WzFdLCB0ID0gcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodCAmJiBlLmxhYmVsIDwgdFsyXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMl0sIGUub3BzLnB1c2gocik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdFsyXSAmJiBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgciA9IG4uY2FsbCh1LCBlKTtcbiAgICB9IGNhdGNoIChjKSB7XG4gICAgICByID0gWzYsIGNdLCBpID0gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcyA9IHQgPSAwO1xuICAgIH1cbiAgICBpZiAoclswXSAmIDUpIHRocm93IHJbMV07XG4gICAgcmV0dXJuIHsgdmFsdWU6IHJbMF0gPyByWzFdIDogdm9pZCAwLCBkb25lOiAhMCB9O1xuICB9XG59LCBnID0gZnVuY3Rpb24odSwgbikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gdTtcbiAgdmFyIHMgPSBlLmNhbGwodSksIGksIHQgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKGkgPSBzLm5leHQoKSkuZG9uZTsgKSB0LnB1c2goaS52YWx1ZSk7XG4gIH0gY2F0Y2ggKG8pIHtcbiAgICBhID0geyBlcnJvcjogbyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKGUgPSBzLnJldHVybikgJiYgZS5jYWxsKHMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHQ7XG59LCBSID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHUobiwgZSkge1xuICAgICAgdmFyIHMgPSB0aGlzLCBpO1xuICAgICAgdGhpcy5fYXR0cmlidXRlcyA9IG4sIHRoaXMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyA9IGUgIT0gbnVsbCwgdGhpcy5fc3luY0F0dHJpYnV0ZXMgPSAoaSA9IHRoaXMuX2F0dHJpYnV0ZXMpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiB7fSwgdGhpcy5fYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSA9IGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUudGhlbihmdW5jdGlvbih0KSB7XG4gICAgICAgIHJldHVybiBzLl9hdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgcy5fYXR0cmlidXRlcywgdCksIHMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyA9ICExLCB0O1xuICAgICAgfSwgZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gci5kZWJ1ZyhcImEgcmVzb3VyY2UncyBhc3luYyBhdHRyaWJ1dGVzIHByb21pc2UgcmVqZWN0ZWQ6ICVzXCIsIHQpLCBzLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcgPSAhMSwge307XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB1LkVNUFRZO1xuICAgIH0sIHUuZGVmYXVsdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG47XG4gICAgICByZXR1cm4gbmV3IHUoKG4gPSB7fSwgbltpU10gPSBFKCksIG5bVFRdID0gWEFbVFRdLCBuW19UXSA9IFhBW19UXSwgbltTVF0gPSBYQVtTVF0sIG4pKTtcbiAgICB9LCBPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyAmJiByLmVycm9yKFwiQWNjZXNzaW5nIHJlc291cmNlIGF0dHJpYnV0ZXMgYmVmb3JlIGFzeW5jIGF0dHJpYnV0ZXMgc2V0dGxlZFwiKSwgKG4gPSB0aGlzLl9hdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDoge307XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIHUucHJvdG90eXBlLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBtKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFModGhpcywgZnVuY3Rpb24obikge1xuICAgICAgICAgIHN3aXRjaCAobi5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nID8gWzQsIHRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2VdIDogWzMsIDJdO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBuLnNlbnQoKSwgbi5sYWJlbCA9IDI7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgdS5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbihuKSB7XG4gICAgICB2YXIgZSA9IHRoaXMsIHM7XG4gICAgICBpZiAoIW4pXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgdmFyIGkgPSBmKGYoe30sIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKSwgKHMgPSBuLl9zeW5jQXR0cmlidXRlcykgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IG4uYXR0cmlidXRlcyk7XG4gICAgICBpZiAoIXRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2UgJiYgIW4uX2FzeW5jQXR0cmlidXRlc1Byb21pc2UpXG4gICAgICAgIHJldHVybiBuZXcgdShpKTtcbiAgICAgIHZhciB0ID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLl9hc3luY0F0dHJpYnV0ZXNQcm9taXNlLFxuICAgICAgICBuLl9hc3luY0F0dHJpYnV0ZXNQcm9taXNlXG4gICAgICBdKS50aGVuKGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgdmFyIG8sIGwgPSBnKGEsIDIpLCByID0gbFswXSwgYyA9IGxbMV07XG4gICAgICAgIHJldHVybiBmKGYoZihmKHt9LCBlLl9zeW5jQXR0cmlidXRlcyksIHIpLCAobyA9IG4uX3N5bmNBdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogbi5hdHRyaWJ1dGVzKSwgYyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgdShpLCB0KTtcbiAgICB9LCB1LkVNUFRZID0gbmV3IHUoe30pLCB1O1xuICB9KClcbik7XG5cbmV4cG9ydCB7IEUsIFIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUFBLFNBQVM7QUFDbEIsU0FBUyxLQUFLQyxHQUFJLE1BQU1DLEdBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLE1BQU1DLFNBQVU7QUFFaEUsU0FBU0MsSUFBSTtBQUNYLFNBQU87QUFDVDtBQUNBLElBQUlDLElBQUksV0FBVztBQUNqQixTQUFPQSxJQUFJLE9BQU8sVUFBVSxTQUFTQyxHQUFHO0FBQ3RDLGFBQVMsR0FBRyxJQUFJLEdBQUdDLElBQUksVUFBVSxRQUFRLElBQUlBLEdBQUcsS0FBSztBQUNuRCxVQUFJLFVBQVUsQ0FBQztBQUNmLGVBQVMsS0FBSyxFQUFHLFFBQU8sVUFBVSxlQUFlLEtBQUssR0FBRyxDQUFDLE1BQU1ELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUFBLElBQzVFO0FBQ0EsV0FBT0E7QUFBQSxFQUNULEdBQUdELEVBQUUsTUFBTSxNQUFNLFNBQVM7QUFDNUIsR0FBR0csSUFBSSxTQUFTRixHQUFHLEdBQUcsR0FBR0MsR0FBRztBQUMxQixXQUFTLEVBQUUsR0FBRztBQUNaLFdBQU8sYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLFNBQVNFLEdBQUc7QUFDNUMsTUFBQUEsRUFBRSxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sS0FBSyxN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QU8sS0FBSywwQkFBMEJSLEVBQUUsTUFBTSwrREFBK0QsSUFBSSxJQUFJLEtBQUssaUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksQ0FBQztBQUFBLE1BQ3pLO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHUSxFQUFFLFVBQVUseUJBQXlCLFdBQVc7QUFDbEQsYUFBT0UsRUFBRSxNQUFNLFFBQVEsUUFBUSxXQUFXO0FBQ3hDLGVBQU9LLEVBQUUsTUFBTSxTQUFTLEdBQUc7QUFDekIsa0JBQVEsRUFBRSxPQUFPO0FBQUEsWUFDZixLQUFLO0FBQ0gscUJBQU8sS0FBSyx5QkFBeUIsQ0FBQyxHQUFHLEtBQUssdUJBQXVCLElBQUksQ0FBQyxHQUFHLENBQUM7QUFBQSxZQUNoRixLQUFLO0FBQ0gsZ0JBQUUsS0FBSyxHQUFHLEVBQUUsUUFBUTtBQUFBLFlBQ3RCLEtBQUs7QUFDSCxxQkFBTztBQUFBLGdCQUNMO0FBQUE7QUFBQSxjQUVGO0FBQUEsVUFDSjtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0gsQ0FBQztBQUFBLElBQ0gsR0FBR1AsRUFBRSxVQUFVLFFBQVEsU0FBUyxHQUFHO0FBQ2pDLFVBQUksSUFBSSxNQUFNQztBQUNkLFVBQUksQ0FBQztBQUNILGVBQU87QUFDVCxVQUFJLElBQUlGLEVBQUVBLEVBQUUsQ0FBQyxHQUFHLEtBQUssZUFBZSxJQUFJRSxJQUFJLEVBQUUscUJBQXFCLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxFQUFFLFVBQVU7QUFDMUcsVUFBSSxDQUFDLEtBQUssMkJBQTJCLENBQUMsRUFBRTtBQUN0QyxlQUFPLElBQUlELEVBQUUsQ0FBQztBQUNoQixVQUFJLElBQUksUUFBUSxJQUFJO0FBQUEsUUFDbEIsS0FBSztBQUFBLFFBQ0wsRUFBRTtBQUFBLE1BQ0osQ0FBQyxFQUFFLEtBQUssU0FBU0csR0FBRztBQUNsQixZQUFJQyxHQUFHRSxJQUFJRSxFQUFFTCxHQUFHLENBQUMsR0FBRyxJQUFJRyxFQUFFLENBQUMsR0FBR0QsSUFBSUMsRUFBRSxDQUFDO0FBQ3JDLGVBQU9QLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxHQUFHLENBQUMsSUFBSUssSUFBSSxFQUFFLHFCQUFxQixRQUFRQSxNQUFNLFNBQVNBLElBQUksRUFBRSxVQUFVLEdBQUdDLENBQUM7QUFBQSxNQUNwSCxDQUFDO0FBQ0QsYUFBTyxJQUFJTCxFQUFFLEdBQUcsQ0FBQztBQUFBLElBQ25CLEdBQUdBLEVBQUUsUUFBUSxJQUFJQSxFQUFFLENBQUMsQ0FBQyxHQUFHQTtBQUFBLEVBQzFCLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiciIsICJpUyIsICJUVCIsICJYQSIsICJfVCIsICJTVCIsICJFIiwgImYiLCAidSIsICJzIiwgIm0iLCAiYSIsICJvIiwgImMiLCAibCIsICJTIiwgImciLCAiUiJdCn0K
@@ -1,9 +1,9 @@
1
- import { j as _, g as nt, z as b, t as ot, x as E, W as it, s as st, E as at } from "./index-CJ8rEEUc.js";
2
- import { r as l } from "./diag-api-CJh5gJqT-iEDBm-aJ.js";
3
- import { dC as G, dD as ut, dE as M, p as pt, O as A, dF as ct, dG as lt, cy as N, cw as D, y as ht, dH as V, dI as dt, cx as ft } from "./url-BPGxzsvj-CkB-P11L.js";
4
- import { Z as _t, a as R, n as f, w as mt, p as H, b as vt, c as yt, J as St, W as gt, s as Et, k as Tt, d as J, t as bt } from "./index-CdtBaIbO-BWh23hoK.js";
5
- import { bm as v, O as P, bn as Lt, bo as Pt, bp as wt } from "./sdk-info-CYGB4K8l-DimobWle.js";
6
- import { R as Q } from "./Resource-DDwQoNEL-BtNvf3FR.js";
1
+ import { j as _, g as nt, z as b, t as ot, x as E, W as it, s as st, E as at } from "./index-BiD1fl0z.js";
2
+ import { r as l } from "./diag-api-BhqoDu5p-BmIx9NpC.js";
3
+ import { dC as G, dD as ut, dE as M, p as pt, O as A, dF as ct, dG as lt, cy as N, cw as D, y as ht, dH as V, dI as dt, cx as ft } from "./url-DeNJTAv_-Dz8hGDTr.js";
4
+ import { Z as _t, a as R, n as f, w as mt, p as H, b as vt, c as yt, J as St, W as gt, s as Et, k as Tt, d as J, t as bt } from "./index-Bhpj-r7q-Cewp_xM6.js";
5
+ import { bm as v, O as P, bn as Lt, bo as Pt, bp as wt } from "./sdk-info-CqA-SXuM-DI-zWj4L.js";
6
+ import { R as Q } from "./Resource-DFFbVGKi-CDOmaO86.js";
7
7
  import { a as w } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
8
8
  var xt = "exception", U = function() {
9
9
  return U = Object.assign || function(e) {
@@ -954,4 +954,4 @@ export {
954
954
  re as r,
955
955
  zt as z
956
956
  };
957
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiU2ltcGxlU3BhblByb2Nlc3Nvci1ENzBCd2k1ci0hfnswMDJ9fi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaiBhcyBqZSwgZyBhcyBnbiwgeiBhcyB6dCQxLCB0IGFzIHRzLCB4IGFzIHhlLCBXIGFzIFdpLCBzIGFzIHN0LCBFIGFzIEVlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1DSmg1Z0pxVC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBkQyBhcyBxZSwgZEQgYXMgd2UsIGRFIGFzIFIsIHAgYXMgcF8sIE8gYXMgTyQxLCBkRiBhcyBOXywgZEcgYXMgSF8sIGN5IGFzIHJBLCBjdyBhcyBOQSwgeSBhcyB5XywgZEggYXMga2UsIGRJIGFzIHJfLCBjeCBhcyBNQSB9IGZyb20gJy4vdXJsLUJQR3h6c3ZqLSF+ezAwOH1+LmpzJztcbmltcG9ydCB7IFosIGEgYXMgWmUsIG4gYXMgbmUkMSwgdywgcCwgYiBhcyBwciwgYyBhcyBiciwgSiBhcyBKZSwgVyBhcyBXJDEsIHMgYXMgc3IsIGsgYXMga3IsIGQgYXMgWnIsIHQgYXMgdHQgfSBmcm9tICcuL2luZGV4LUNkdEJhSWJPLSF+ezAwan1+LmpzJztcbmltcG9ydCB7IGJtIGFzIHIkMSwgTyBhcyBPVCwgYm4gYXMgTFQsIGJvIGFzIFAkMSwgYnAgYXMgTSB9IGZyb20gJy4vc2RrLWluZm8tQ1lHQjRLOGwtIX57MDBnfX4uanMnO1xuaW1wb3J0IHsgUiBhcyBSJDEgfSBmcm9tICcuL1Jlc291cmNlLUREd1FvTkVMLSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5cbnZhciBidCA9IFwiZXhjZXB0aW9uXCIsIFUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFUgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHtcbiAgICBmb3IgKHZhciB0LCByID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IHIgPCBuOyByKyspIHtcbiAgICAgIHQgPSBhcmd1bWVudHNbcl07XG4gICAgICBmb3IgKHZhciBvIGluIHQpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCBvKSAmJiAoZVtvXSA9IHRbb10pO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSwgVS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgQ3QgPSBmdW5jdGlvbihlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCByID0gdCAmJiBlW3RdLCBuID0gMDtcbiAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgWCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgeHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgT3QgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwKSB7XG4gICAgICBzID09PSB2b2lkIDAgJiYgKHMgPSBbXSksIHRoaXMuYXR0cmlidXRlcyA9IHt9LCB0aGlzLmxpbmtzID0gW10sIHRoaXMuZXZlbnRzID0gW10sIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkTGlua3NDb3VudCA9IDAsIHRoaXMuc3RhdHVzID0ge1xuICAgICAgICBjb2RlOiBFZS5VTlNFVFxuICAgICAgfSwgdGhpcy5lbmRUaW1lID0gWzAsIDBdLCB0aGlzLl9lbmRlZCA9ICExLCB0aGlzLl9kdXJhdGlvbiA9IFstMSwgLTFdLCB0aGlzLm5hbWUgPSBuLCB0aGlzLl9zcGFuQ29udGV4dCA9IG8sIHRoaXMucGFyZW50U3BhbklkID0gYSwgdGhpcy5raW5kID0gaSwgdGhpcy5saW5rcyA9IHM7XG4gICAgICB2YXIgZiA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSA9IFIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0ID0gZiAtICh0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSArIHJfKCkpLCB0aGlzLl9zdGFydFRpbWVQcm92aWRlZCA9IGwgIT0gbnVsbCwgdGhpcy5zdGFydFRpbWUgPSB0aGlzLl9nZXRUaW1lKGwgPz8gZiksIHRoaXMucmVzb3VyY2UgPSB0LnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0Lmluc3RydW1lbnRhdGlvbkxpYnJhcnksIHRoaXMuX3NwYW5MaW1pdHMgPSB0LmdldFNwYW5MaW1pdHMoKSwgdGhpcy5fYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCA9IHRoaXMuX3NwYW5MaW1pdHMuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCB8fCAwLCBwICE9IG51bGwgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHApLCB0aGlzLl9zcGFuUHJvY2Vzc29yID0gdC5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCksIHRoaXMuX3NwYW5Qcm9jZXNzb3Iub25TdGFydCh0aGlzLCByKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgciQxKSB7XG4gICAgICByZXR1cm4gciQxID09IG51bGwgfHwgdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiB0Lmxlbmd0aCA9PT0gMCA/IChyLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdCksIHRoaXMpIDogWihyJDEpID8gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5sZW5ndGggPj0gdGhpcy5fc3BhbkxpbWl0cy5hdHRyaWJ1dGVDb3VudExpbWl0ICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCB0KSA/ICh0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50KyssIHRoaXMpIDogKHRoaXMuYXR0cmlidXRlc1t0XSA9IHRoaXMuX3RydW5jYXRlVG9TaXplKHIkMSksIHRoaXMpIDogKHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHQpLCB0aGlzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVzID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gQ3QoT2JqZWN0LmVudHJpZXModCkpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gWChpLnZhbHVlLCAyKSwgcyA9IGFbMF0sIGwgPSBhWzFdO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKHMsIGwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiB1IH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICBpZiAodGhpcy5faXNTcGFuRW5kZWQoKSlcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICBpZiAodGhpcy5fc3BhbkxpbWl0cy5ldmVudENvdW50TGltaXQgPT09IDApXG4gICAgICAgIHJldHVybiByLndhcm4oXCJObyBldmVudHMgYWxsb3dlZC5cIiksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrLCB0aGlzO1xuICAgICAgdGhpcy5ldmVudHMubGVuZ3RoID49IHRoaXMuX3NwYW5MaW1pdHMuZXZlbnRDb3VudExpbWl0ICYmICh0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIkRyb3BwaW5nIGV4dHJhIGV2ZW50cy5cIiksIHRoaXMuZXZlbnRzLnNoaWZ0KCksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrKSwgcWUociQxKSAmJiAocWUobikgfHwgKG4gPSByJDEpLCByJDEgPSB2b2lkIDApO1xuICAgICAgdmFyIG8gPSBaZShyJDEpO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnB1c2goe1xuICAgICAgICBuYW1lOiB0LFxuICAgICAgICBhdHRyaWJ1dGVzOiBvLFxuICAgICAgICB0aW1lOiB0aGlzLl9nZXRUaW1lKG4pLFxuICAgICAgICBkcm9wcGVkQXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXMubGlua3MucHVzaCh0KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5saW5rcykucHVzaC5hcHBseShyLCB4dChbXSwgWCh0KSwgITEpKSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5zdGF0dXMgPSBVKHt9LCB0KSwgdGhpcy5zdGF0dXMubWVzc2FnZSAhPSBudWxsICYmIHR5cGVvZiB0Lm1lc3NhZ2UgIT0gXCJzdHJpbmdcIiAmJiAoci53YXJuKFwiRHJvcHBpbmcgaW52YWxpZCBzdGF0dXMubWVzc2FnZSBvZiB0eXBlICdcIiArIHR5cGVvZiB0Lm1lc3NhZ2UgKyBcIicsIGV4cGVjdGVkICdzdHJpbmcnXCIpLCBkZWxldGUgdGhpcy5zdGF0dXMubWVzc2FnZSksIHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZU5hbWUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5uYW1lID0gdCwgdGhpcyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHRoaXMuX2lzU3BhbkVuZGVkKCkpIHtcbiAgICAgICAgci5lcnJvcih0aGlzLm5hbWUgKyBcIiBcIiArIHRoaXMuX3NwYW5Db250ZXh0LnRyYWNlSWQgKyBcIi1cIiArIHRoaXMuX3NwYW5Db250ZXh0LnNwYW5JZCArIFwiIC0gWW91IGNhbiBvbmx5IGNhbGwgZW5kKCkgb24gYSBzcGFuIG9uY2UuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9lbmRlZCA9ICEwLCB0aGlzLmVuZFRpbWUgPSB0aGlzLl9nZXRUaW1lKHQpLCB0aGlzLl9kdXJhdGlvbiA9IHdlKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLl9kdXJhdGlvblswXSA8IDAgJiYgKHIud2FybihcIkluY29uc2lzdGVudCBzdGFydCBhbmQgZW5kIHRpbWUsIHN0YXJ0VGltZSA+IGVuZFRpbWUuIFNldHRpbmcgc3BhbiBkdXJhdGlvbiB0byAwbXMuXCIsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLmVuZFRpbWUgPSB0aGlzLnN0YXJ0VGltZS5zbGljZSgpLCB0aGlzLl9kdXJhdGlvbiA9IFswLCAwXSksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA+IDAgJiYgci53YXJuKFwiRHJvcHBlZCBcIiArIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCArIFwiIGV2ZW50cyBiZWNhdXNlIGV2ZW50Q291bnRMaW1pdCByZWFjaGVkXCIpLCB0aGlzLl9zcGFuUHJvY2Vzc29yLm9uRW5kKHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRUaW1lID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHR5cGVvZiB0ID09IFwibnVtYmVyXCIgJiYgdCA8PSBSLm5vdygpKVxuICAgICAgICByZXR1cm4gcF8odCArIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0KTtcbiAgICAgIGlmICh0eXBlb2YgdCA9PSBcIm51bWJlclwiKVxuICAgICAgICByZXR1cm4gTyQxKHQpO1xuICAgICAgaWYgKHQgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gTyQxKHQuZ2V0VGltZSgpKTtcbiAgICAgIGlmIChOXyh0KSlcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICBpZiAodGhpcy5fc3RhcnRUaW1lUHJvdmlkZWQpXG4gICAgICAgIHJldHVybiBPJDEoRGF0ZS5ub3coKSk7XG4gICAgICB2YXIgciA9IFIubm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZTtcbiAgICAgIHJldHVybiBIXyh0aGlzLnN0YXJ0VGltZSwgTyQxKHIpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID09PSAhMTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWNvcmRFeGNlcHRpb24gPSBmdW5jdGlvbih0LCByJDEpIHtcbiAgICAgIHZhciBuID0ge307XG4gICAgICB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gbltOQV0gPSB0IDogdCAmJiAodC5jb2RlID8gbltyQV0gPSB0LmNvZGUudG9TdHJpbmcoKSA6IHQubmFtZSAmJiAobltyQV0gPSB0Lm5hbWUpLCB0Lm1lc3NhZ2UgJiYgKG5bTkFdID0gdC5tZXNzYWdlKSwgdC5zdGFjayAmJiAobltNQV0gPSB0LnN0YWNrKSksIG5bckFdIHx8IG5bTkFdID8gdGhpcy5hZGRFdmVudChidCwgbiwgciQxKSA6IHIud2FybihcIkZhaWxlZCB0byByZWNvcmQgYW4gZXhjZXB0aW9uIFwiICsgdCk7XG4gICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImR1cmF0aW9uXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImVuZGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRBdHRyaWJ1dGVzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJkcm9wcGVkRXZlbnRzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRMaW5rc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkTGlua3NDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUuX2lzU3BhbkVuZGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kZWQgJiYgci53YXJuKFwiQ2FuIG5vdCBleGVjdXRlIHRoZSBvcGVyYXRpb24gb24gZW5kZWQgU3BhbiB7dHJhY2VJZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC50cmFjZUlkICsgXCIsIHNwYW5JZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC5zcGFuSWQgKyBcIn1cIiksIHRoaXMuX2VuZGVkO1xuICAgIH0sIGUucHJvdG90eXBlLl90cnVuY2F0ZVRvTGltaXRVdGlsID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHQubGVuZ3RoIDw9IHIgPyB0IDogdC5zdWJzdHJpbmcoMCwgcik7XG4gICAgfSwgZS5wcm90b3R5cGUuX3RydW5jYXRlVG9TaXplID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIkMSA9IHRoaXMsIG4gPSB0aGlzLl9hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0O1xuICAgICAgcmV0dXJuIG4gPD0gMCA/IChyLndhcm4oXCJBdHRyaWJ1dGUgdmFsdWUgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgZ290IFwiICsgbiksIHQpIDogdHlwZW9mIHQgPT0gXCJzdHJpbmdcIiA/IHRoaXMuX3RydW5jYXRlVG9MaW1pdFV0aWwodCwgbikgOiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IHIkMS5fdHJ1bmNhdGVUb0xpbWl0VXRpbChvLCBuKSA6IG87XG4gICAgICB9KSA6IHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBQO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkoUCB8fCAoUCA9IHt9KSk7XG52YXIgSSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBnID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBQLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIsIG4sIG8sIGk7XG4gICAgICB0aGlzLl9yb290ID0gdC5yb290LCB0aGlzLl9yb290IHx8IChuZSQxKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgZygpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9IChyID0gdC5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogbmV3IGcoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gdC5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEkoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKG8gPSB0LmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgbyAhPT0gdm9pZCAwID8gbyA6IG5ldyBnKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gdC5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgSSgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24odCwgciwgbiwgbywgaSwgYSkge1xuICAgICAgdmFyIHMgPSBqZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIHJldHVybiAhcyB8fCAhZ24ocykgPyB0aGlzLl9yb290LnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMuaXNSZW1vdGUgPyBzLnRyYWNlRmxhZ3MgJiB6dCQxLlNBTVBMRUQgPyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKHQsIHIsIG4sIG8sIGksIGEpIDogcy50cmFjZUZsYWdzICYgenQkMS5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgciwgbiwgbywgaSwgYSk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBXID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCksIHRoaXMuX3JhdGlvID0gdCwgdGhpcy5fcmF0aW8gPSB0aGlzLl9ub3JtYWxpemUodCksIHRoaXMuX3VwcGVyQm91bmQgPSBNYXRoLmZsb29yKHRoaXMuX3JhdGlvICogNDI5NDk2NzI5NSk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogdHMocikgJiYgdGhpcy5fYWNjdW11bGF0ZShyKSA8IHRoaXMuX3VwcGVyQm91bmQgPyBQLlJFQ09SRF9BTkRfU0FNUExFRCA6IFAuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiVHJhY2VJZFJhdGlvQmFzZWR7XCIgKyB0aGlzLl9yYXRpbyArIFwifVwiO1xuICAgIH0sIGUucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHQgIT0gXCJudW1iZXJcIiB8fCBpc05hTih0KSA/IDAgOiB0ID49IDEgPyAxIDogdCA8PSAwID8gMCA6IHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuX2FjY3VtdWxhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgICBmb3IgKHZhciByID0gMCwgbiA9IDA7IG4gPCB0Lmxlbmd0aCAvIDg7IG4rKykge1xuICAgICAgICB2YXIgbyA9IG4gKiA4LCBpID0gcGFyc2VJbnQodC5zbGljZShvLCBvICsgOCksIDE2KTtcbiAgICAgICAgciA9IChyIF4gaSkgPj4+IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9LCBlO1xuICB9KClcbiksIFJ0ID0gciQxLkFsd2F5c09uLCBFID0gMTtcbmZ1bmN0aW9uIEooKSB7XG4gIHZhciBlID0gT1QoKTtcbiAgcmV0dXJuIHtcbiAgICBzYW1wbGVyOiAkKGUpLFxuICAgIGZvcmNlRmx1c2hUaW1lb3V0TWlsbGlzOiAzZTQsXG4gICAgZ2VuZXJhbExpbWl0czoge1xuICAgICAgYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdDogZS5PVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVDb3VudExpbWl0OiBlLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUXG4gICAgfSxcbiAgICBzcGFuTGltaXRzOiB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlULFxuICAgICAgYXR0cmlidXRlQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlULFxuICAgICAgbGlua0NvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVQsXG4gICAgICBldmVudENvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyRXZlbnRDb3VudExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyTGlua0NvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVFxuICAgIH0sXG4gICAgbWVyZ2VSZXNvdXJjZVdpdGhEZWZhdWx0czogITBcbiAgfTtcbn1cbmZ1bmN0aW9uICQoZSkge1xuICBzd2l0Y2ggKGUgPT09IHZvaWQgMCAmJiAoZSA9IE9UKCkpLCBlLk9URUxfVFJBQ0VTX1NBTVBMRVIpIHtcbiAgICBjYXNlIHIkMS5BbHdheXNPbjpcbiAgICAgIHJldHVybiBuZXcgZygpO1xuICAgIGNhc2UgciQxLkFsd2F5c09mZjpcbiAgICAgIHJldHVybiBuZXcgSSgpO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkQWx3YXlzT246XG4gICAgICByZXR1cm4gbmV3IEQoe1xuICAgICAgICByb290OiBuZXcgZygpXG4gICAgICB9KTtcbiAgICBjYXNlIHIkMS5QYXJlbnRCYXNlZEFsd2F5c09mZjpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBJKClcbiAgICAgIH0pO1xuICAgIGNhc2UgciQxLlRyYWNlSWRSYXRpbzpcbiAgICAgIHJldHVybiBuZXcgVyhZKGUpKTtcbiAgICBjYXNlIHIkMS5QYXJlbnRCYXNlZFRyYWNlSWRSYXRpbzpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBXKFkoZSkpXG4gICAgICB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHIuZXJyb3IoJ09URUxfVFJBQ0VTX1NBTVBMRVIgdmFsdWUgXCInICsgZS5PVEVMX1RSQUNFU19TQU1QTEVSICsgXCIgaW52YWxpZCwgZGVmYXVsdGluZyB0byBcIiArIFJ0ICsgJ1wiLicpLCBuZXcgZygpO1xuICB9XG59XG5mdW5jdGlvbiBZKGUpIHtcbiAgaWYgKGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgPT09IHZvaWQgMCB8fCBlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHID09PSBcIlwiKVxuICAgIHJldHVybiByLmVycm9yKFwiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgaXMgYmxhbmssIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFO1xuICB2YXIgdCA9IE51bWJlcihlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHKTtcbiAgcmV0dXJuIGlzTmFOKHQpID8gKHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRz1cIiArIGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgKyBcIiB3YXMgZ2l2ZW4sIGJ1dCBpdCBpcyBpbnZhbGlkLCBkZWZhdWx0aW5nIHRvIFwiICsgRSArIFwiLlwiKSwgRSkgOiB0IDwgMCB8fCB0ID4gMSA/IChyLmVycm9yKFwiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkc9XCIgKyBlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHICsgXCIgd2FzIGdpdmVuLCBidXQgaXQgaXMgb3V0IG9mIHJhbmdlIChbMC4uMV0pLCBkZWZhdWx0aW5nIHRvIFwiICsgRSArIFwiLlwiKSwgRSkgOiB0O1xufVxuZnVuY3Rpb24gSXQoZSkge1xuICB2YXIgdCA9IHtcbiAgICBzYW1wbGVyOiAkKClcbiAgfSwgciA9IEooKSwgbiA9IE9iamVjdC5hc3NpZ24oe30sIHIsIHQsIGUpO1xuICByZXR1cm4gbi5nZW5lcmFsTGltaXRzID0gT2JqZWN0LmFzc2lnbih7fSwgci5nZW5lcmFsTGltaXRzLCBlLmdlbmVyYWxMaW1pdHMgfHwge30pLCBuLnNwYW5MaW1pdHMgPSBPYmplY3QuYXNzaWduKHt9LCByLnNwYW5MaW1pdHMsIGUuc3BhbkxpbWl0cyB8fCB7fSksIG47XG59XG5mdW5jdGlvbiBNdChlKSB7XG4gIHZhciB0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwLCBmLCBjLCB5ID0gT2JqZWN0LmFzc2lnbih7fSwgZS5zcGFuTGltaXRzKSwgbSA9IExUKCk7XG4gIHJldHVybiB5LmF0dHJpYnV0ZUNvdW50TGltaXQgPSAoYSA9IChpID0gKG8gPSAociA9ICh0ID0gZS5zcGFuTGltaXRzKSA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LmF0dHJpYnV0ZUNvdW50TGltaXQpICE9PSBudWxsICYmIHIgIT09IHZvaWQgMCA/IHIgOiAobiA9IGUuZ2VuZXJhbExpbWl0cykgPT09IG51bGwgfHwgbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogbi5hdHRyaWJ1dGVDb3VudExpbWl0KSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogbS5PVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlUKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbS5PVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IFAkMSwgeS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0ID0gKGMgPSAoZiA9IChwID0gKGwgPSAocyA9IGUuc3BhbkxpbWl0cykgPT09IG51bGwgfHwgcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcy5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0KSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogKHUgPSBlLmdlbmVyYWxMaW1pdHMpID09PSBudWxsIHx8IHUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHUuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCkgIT09IG51bGwgJiYgcCAhPT0gdm9pZCAwID8gcCA6IG0uT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQpICE9PSBudWxsICYmIGYgIT09IHZvaWQgMCA/IGYgOiBtLk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCkgIT09IG51bGwgJiYgYyAhPT0gdm9pZCAwID8gYyA6IE0sIE9iamVjdC5hc3NpZ24oe30sIGUsIHsgc3BhbkxpbWl0czogeSB9KTtcbn1cbnZhciBOdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIkMSkge1xuICAgICAgdGhpcy5fZXhwb3J0ZXIgPSB0LCB0aGlzLl9pc0V4cG9ydGluZyA9ICExLCB0aGlzLl9maW5pc2hlZFNwYW5zID0gW10sIHRoaXMuX2Ryb3BwZWRTcGFuc0NvdW50ID0gMDtcbiAgICAgIHZhciBuID0gT1QoKTtcbiAgICAgIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEubWF4RXhwb3J0QmF0Y2hTaXplKSA9PSBcIm51bWJlclwiID8gciQxLm1heEV4cG9ydEJhdGNoU2l6ZSA6IG4uT1RFTF9CU1BfTUFYX0VYUE9SVF9CQVRDSF9TSVpFLCB0aGlzLl9tYXhRdWV1ZVNpemUgPSB0eXBlb2YgKHIkMSA9PSBudWxsID8gdm9pZCAwIDogciQxLm1heFF1ZXVlU2l6ZSkgPT0gXCJudW1iZXJcIiA/IHIkMS5tYXhRdWV1ZVNpemUgOiBuLk9URUxfQlNQX01BWF9RVUVVRV9TSVpFLCB0aGlzLl9zY2hlZHVsZWREZWxheU1pbGxpcyA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEuc2NoZWR1bGVkRGVsYXlNaWxsaXMpID09IFwibnVtYmVyXCIgPyByJDEuc2NoZWR1bGVkRGVsYXlNaWxsaXMgOiBuLk9URUxfQlNQX1NDSEVEVUxFX0RFTEFZLCB0aGlzLl9leHBvcnRUaW1lb3V0TWlsbGlzID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5leHBvcnRUaW1lb3V0TWlsbGlzKSA9PSBcIm51bWJlclwiID8gciQxLmV4cG9ydFRpbWVvdXRNaWxsaXMgOiBuLk9URUxfQlNQX0VYUE9SVF9USU1FT1VULCB0aGlzLl9zaHV0ZG93bk9uY2UgPSBuZXcgWnIodGhpcy5fc2h1dGRvd24sIHRoaXMpLCB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUgPiB0aGlzLl9tYXhRdWV1ZVNpemUgJiYgKHIud2FybihcIkJhdGNoU3BhblByb2Nlc3NvcjogbWF4RXhwb3J0QmF0Y2hTaXplIG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byBtYXhRdWV1ZVNpemUsIHNldHRpbmcgbWF4RXhwb3J0QmF0Y2hTaXplIHRvIG1hdGNoIG1heFF1ZXVlU2l6ZVwiKSwgdGhpcy5fbWF4RXhwb3J0QmF0Y2hTaXplID0gdGhpcy5fbWF4UXVldWVTaXplKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaHV0ZG93bk9uY2UuaXNDYWxsZWQgPyB0aGlzLl9zaHV0ZG93bk9uY2UucHJvbWlzZSA6IHRoaXMuX2ZsdXNoQWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCB8fCB0LnNwYW5Db250ZXh0KCkudHJhY2VGbGFncyAmIHp0JDEuU0FNUExFRCAmJiB0aGlzLl9hZGRUb0J1ZmZlcih0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQub25TaHV0ZG93bigpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQuX2ZsdXNoQWxsKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdC5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9hZGRUb0J1ZmZlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGlmICh0aGlzLl9maW5pc2hlZFNwYW5zLmxlbmd0aCA+PSB0aGlzLl9tYXhRdWV1ZVNpemUpIHtcbiAgICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIm1heFF1ZXVlU2l6ZSByZWFjaGVkLCBkcm9wcGluZyBzcGFuc1wiKSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQrKztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPiAwICYmIChyLndhcm4oXCJEcm9wcGVkIFwiICsgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgKyBcIiBzcGFucyBiZWNhdXNlIG1heFF1ZXVlU2l6ZSByZWFjaGVkXCIpLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9IDApLCB0aGlzLl9maW5pc2hlZFNwYW5zLnB1c2godCksIHRoaXMuX21heWJlU3RhcnRUaW1lcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9mbHVzaEFsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgZm9yICh2YXIgbyA9IFtdLCBpID0gTWF0aC5jZWlsKHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIC8gdC5fbWF4RXhwb3J0QmF0Y2hTaXplKSwgYSA9IDAsIHMgPSBpOyBhIDwgczsgYSsrKVxuICAgICAgICAgIG8ucHVzaCh0Ll9mbHVzaE9uZUJhdGNoKCkpO1xuICAgICAgICBQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHIoKTtcbiAgICAgICAgfSkuY2F0Y2gobik7XG4gICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZmx1c2hPbmVCYXRjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyVGltZXIoKSwgdGhpcy5fZmluaXNoZWRTcGFucy5sZW5ndGggPT09IDAgPyBQcm9taXNlLnJlc29sdmUoKSA6IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIG4obmV3IEVycm9yKFwiVGltZW91dFwiKSk7XG4gICAgICAgIH0sIHQuX2V4cG9ydFRpbWVvdXRNaWxsaXMpO1xuICAgICAgICB4ZS53aXRoKFckMSh4ZS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBpO1xuICAgICAgICAgIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIDw9IHQuX21heEV4cG9ydEJhdGNoU2l6ZSA/IChpID0gdC5fZmluaXNoZWRTcGFucywgdC5fZmluaXNoZWRTcGFucyA9IFtdKSA6IGkgPSB0Ll9maW5pc2hlZFNwYW5zLnNwbGljZSgwLCB0Ll9tYXhFeHBvcnRCYXRjaFNpemUpO1xuICAgICAgICAgIGZvciAodmFyIGEkMSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2V4cG9ydGVyLmV4cG9ydChpLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICAgIHZhciBjO1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIGYuY29kZSA9PT0gYS5TVUNDRVNTID8gcigpIDogbigoYyA9IGYuZXJyb3IpICE9PSBudWxsICYmIGMgIT09IHZvaWQgMCA/IGMgOiBuZXcgRXJyb3IoXCJCYXRjaFNwYW5Qcm9jZXNzb3I6IHNwYW4gZXhwb3J0IGZhaWxlZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBzID0gbnVsbCwgbCA9IDAsIHUgPSBpLmxlbmd0aDsgbCA8IHU7IGwrKykge1xuICAgICAgICAgICAgdmFyIHAgPSBpW2xdO1xuICAgICAgICAgICAgcC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nICYmIHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcyAmJiAocyA/PyAocyA9IFtdKSwgcy5wdXNoKHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcygpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPT09IG51bGwgPyBhJDEoKSA6IFByb21pc2UuYWxsKHMpLnRoZW4oYSQxLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICBuZSQxKGYpLCBuKGYpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9tYXliZVN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgIGlmICghdGhpcy5faXNFeHBvcnRpbmcpIHtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0Ll9pc0V4cG9ydGluZyA9ICEwLCB0Ll9mbHVzaE9uZUJhdGNoKCkuZmluYWxseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHQuX2lzRXhwb3J0aW5nID0gITEsIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID4gMCAmJiAodC5fY2xlYXJUaW1lcigpLCB0Ll9tYXliZVN0YXJ0VGltZXIoKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obikge1xuICAgICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSAhMSwgbmUkMShuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID49IHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSlcbiAgICAgICAgICByZXR1cm4gcigpO1xuICAgICAgICB0aGlzLl90aW1lciA9PT0gdm9pZCAwICYmICh0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHIoKTtcbiAgICAgICAgfSwgdGhpcy5fc2NoZWR1bGVkRGVsYXlNaWxsaXMpLCBzcih0aGlzLl90aW1lcikpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLl9jbGVhclRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90aW1lciAhPT0gdm9pZCAwICYmIChjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLCB0aGlzLl90aW1lciA9IHZvaWQgMCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBCdCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBmb3IgKHZhciBpIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBpKSAmJiAobltpXSA9IG9baV0pO1xuICAgIH0sIGUodCwgcik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcocikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUodCwgcik7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSB0O1xuICAgIH1cbiAgICB0LnByb3RvdHlwZSA9IHIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHIpIDogKG4ucHJvdG90eXBlID0gci5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSgpLCBEdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbihlKSB7XG4gICAgQnQodCwgZSk7XG4gICAgZnVuY3Rpb24gdChyLCBuKSB7XG4gICAgICB2YXIgbyA9IGUuY2FsbCh0aGlzLCByLCBuKSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIG8ub25Jbml0KG4pLCBvO1xuICAgIH1cbiAgICByZXR1cm4gdC5wcm90b3R5cGUub25Jbml0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGlzYWJsZUF1dG9GbHVzaE9uRG9jdW1lbnRIaWRlKSAhPT0gITAgJiYgdHlwZW9mIGRvY3VtZW50IDwgXCJ1XCIgJiYgKHRoaXMuX3Zpc2liaWxpdHlDaGFuZ2VMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCIgJiYgbi5mb3JjZUZsdXNoKCkuY2F0Y2goZnVuY3Rpb24obykge1xuICAgICAgICAgIG5lJDEobyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBuLmZvcmNlRmx1c2goKS5jYXRjaChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgbmUkMShvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCB0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQucHJvdG90eXBlLm9uU2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgdGhpcy5fdmlzaWJpbGl0eUNoYW5nZUxpc3RlbmVyKSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQ7XG4gIH0oTnQpXG4pLCBVdCA9IDgsIEZ0ID0gMTYsIEd0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVRyYWNlSWQgPSBxKEZ0KSwgdGhpcy5nZW5lcmF0ZVNwYW5JZCA9IHEoVXQpO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSgpXG4pLCB4ID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gcShlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUgKiAyOyByKyspXG4gICAgICB4W3JdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIHhbcl0gPj0gNTggJiYgKHhbcl0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHguc2xpY2UoMCwgZSAqIDIpKTtcbiAgfTtcbn1cbnZhciB6dCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIsIG4pIHtcbiAgICAgIHRoaXMuX3RyYWNlclByb3ZpZGVyID0gbjtcbiAgICAgIHZhciBvID0gSXQocik7XG4gICAgICB0aGlzLl9zYW1wbGVyID0gby5zYW1wbGVyLCB0aGlzLl9nZW5lcmFsTGltaXRzID0gby5nZW5lcmFsTGltaXRzLCB0aGlzLl9zcGFuTGltaXRzID0gby5zcGFuTGltaXRzLCB0aGlzLl9pZEdlbmVyYXRvciA9IHIuaWRHZW5lcmF0b3IgfHwgbmV3IEd0KCksIHRoaXMucmVzb3VyY2UgPSBuLnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc3RhcnRTcGFuID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICB2YXIgbywgaSwgYTtcbiAgICAgIHIkMSA9PT0gdm9pZCAwICYmIChyJDEgPSB7fSksIG4gPT09IHZvaWQgMCAmJiAobiA9IHhlLmFjdGl2ZSgpKSwgciQxLnJvb3QgJiYgKG4gPSBqZS5kZWxldGVTcGFuKG4pKTtcbiAgICAgIHZhciBzID0gamUuZ2V0U3BhbihuKTtcbiAgICAgIGlmICh3KG4pKSB7XG4gICAgICAgIHIuZGVidWcoXCJJbnN0cnVtZW50YXRpb24gc3VwcHJlc3NlZCwgcmV0dXJuaW5nIE5vb3AgU3BhblwiKTtcbiAgICAgICAgdmFyIGwgPSBqZS53cmFwU3BhbkNvbnRleHQoV2kpO1xuICAgICAgICByZXR1cm4gbDtcbiAgICAgIH1cbiAgICAgIHZhciB1ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zcGFuQ29udGV4dCgpLCBwJDEgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVNwYW5JZCgpLCBmLCBjLCB5O1xuICAgICAgIXUgfHwgIWplLmlzU3BhbkNvbnRleHRWYWxpZCh1KSA/IGYgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVRyYWNlSWQoKSA6IChmID0gdS50cmFjZUlkLCBjID0gdS50cmFjZVN0YXRlLCB5ID0gdS5zcGFuSWQpO1xuICAgICAgdmFyIG0gPSAobyA9IHIkMS5raW5kKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogc3QuSU5URVJOQUwsIEYgPSAoKGkgPSByJDEubGlua3MpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBbXSkubWFwKGZ1bmN0aW9uKGopIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZXh0OiBqLmNvbnRleHQsXG4gICAgICAgICAgYXR0cmlidXRlczogWmUoai5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuICAgICAgfSksIEcgPSBaZShyJDEuYXR0cmlidXRlcyksIGIgPSB0aGlzLl9zYW1wbGVyLnNob3VsZFNhbXBsZShuLCBmLCB0LCBtLCBHLCBGKTtcbiAgICAgIGMgPSAoYSA9IGIudHJhY2VTdGF0ZSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IGM7XG4gICAgICB2YXIgdHQgPSBiLmRlY2lzaW9uID09PSBwLlJFQ09SRF9BTkRfU0FNUExFRCA/IHp0JDEuU0FNUExFRCA6IHp0JDEuTk9ORSwgeiA9IHsgdHJhY2VJZDogZiwgc3BhbklkOiBwJDEsIHRyYWNlRmxhZ3M6IHR0LCB0cmFjZVN0YXRlOiBjIH07XG4gICAgICBpZiAoYi5kZWNpc2lvbiA9PT0gcC5OT1RfUkVDT1JEKSB7XG4gICAgICAgIHIuZGVidWcoXCJSZWNvcmRpbmcgaXMgb2ZmLCBwcm9wYWdhdGluZyBjb250ZXh0IGluIGEgbm9uLXJlY29yZGluZyBzcGFuXCIpO1xuICAgICAgICB2YXIgbCA9IGplLndyYXBTcGFuQ29udGV4dCh6KTtcbiAgICAgICAgcmV0dXJuIGw7XG4gICAgICB9XG4gICAgICB2YXIgZXQgPSBaZShPYmplY3QuYXNzaWduKEcsIGIuYXR0cmlidXRlcykpLCBydCA9IG5ldyBPdCh0aGlzLCBuLCB0LCB6LCBtLCB5LCBGLCByJDEuc3RhcnRUaW1lLCB2b2lkIDAsIGV0KTtcbiAgICAgIHJldHVybiBydDtcbiAgICB9LCBlLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW4gPSBmdW5jdGlvbih0LCByLCBuLCBvKSB7XG4gICAgICB2YXIgaSwgYSwgcztcbiAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPCAyKSkge1xuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gcyA9IHIgOiBhcmd1bWVudHMubGVuZ3RoID09PSAzID8gKGkgPSByLCBzID0gbikgOiAoaSA9IHIsIGEgPSBuLCBzID0gbyk7XG4gICAgICAgIHZhciBsID0gYSA/PyB4ZS5hY3RpdmUoKSwgdSA9IHRoaXMuc3RhcnRTcGFuKHQsIGksIGwpLCBwID0gamUuc2V0U3BhbihsLCB1KTtcbiAgICAgICAgcmV0dXJuIHhlLndpdGgocCwgcywgdm9pZCAwLCB1KTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5nZXRHZW5lcmFsTGltaXRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2VuZXJhbExpbWl0cztcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRTcGFuTGltaXRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkxpbWl0cztcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2VyUHJvdmlkZXIuZ2V0QWN0aXZlU3BhblByb2Nlc3NvcigpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTyA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHIgPSB0ICYmIGVbdF0sIG4gPSAwO1xuICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHQgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBLID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdGhpcy5fc3BhblByb2Nlc3NvcnMgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQsIHIsIG4gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgaSA9IG8ubmV4dCgpOyAhaS5kb25lOyBpID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgICAgbi5wdXNoKGEuZm9yY2VGbHVzaCgpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0ID0geyBlcnJvcjogcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpICYmICFpLmRvbmUgJiYgKHIgPSBvLnJldHVybikgJiYgci5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocykge1xuICAgICAgICBQcm9taXNlLmFsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHMoKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgIG5lJDEobCB8fCBuZXcgRXJyb3IoXCJNdWx0aVNwYW5Qcm9jZXNzb3I6IGZvcmNlRmx1c2ggZmFpbGVkXCIpKSwgcygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbiwgbztcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgYSA9IGkubmV4dCgpOyAhYS5kb25lOyBhID0gaS5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgcyA9IGEudmFsdWU7XG4gICAgICAgICAgcy5vblN0YXJ0KHQsIHIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIG4gPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEgJiYgIWEuZG9uZSAmJiAobyA9IGkucmV0dXJuKSAmJiBvLmNhbGwoaSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByLCBuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gaS52YWx1ZTtcbiAgICAgICAgICBhLm9uRW5kKHQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiBzIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQsIHIsIG4gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgaSA9IG8ubmV4dCgpOyAhaS5kb25lOyBpID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgICAgbi5wdXNoKGEuc2h1dGRvd24oKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgdCA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChyID0gby5yZXR1cm4pICYmIHIuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodCkgdGhyb3cgdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMsIGwpIHtcbiAgICAgICAgUHJvbWlzZS5hbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBzKCk7XG4gICAgICAgIH0sIGwpO1xuICAgICAgfSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBqdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIFZ0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIG8sIGkgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKG8gPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBhID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBrdCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBvID0gdC5sZW5ndGgsIGk7IG4gPCBvOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCBTO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLnJlc29sdmVkID0gMF0gPSBcInJlc29sdmVkXCIsIGVbZS50aW1lb3V0ID0gMV0gPSBcInRpbWVvdXRcIiwgZVtlLmVycm9yID0gMl0gPSBcImVycm9yXCIsIGVbZS51bnJlc29sdmVkID0gM10gPSBcInVucmVzb2x2ZWRcIjtcbn0pKFMgfHwgKFMgPSB7fSkpO1xudmFyIHJlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0ge30pO1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMgPSBbXSwgdGhpcy5fdHJhY2VycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICB2YXIgbyA9IGtyKHt9LCBKKCksIE10KHQpKTtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlID0gKHIgPSBvLnJlc291cmNlKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogUiQxLmVtcHR5KCksIG8ubWVyZ2VSZXNvdXJjZVdpdGhEZWZhdWx0cyAmJiAodGhpcy5yZXNvdXJjZSA9IFIkMS5kZWZhdWx0KCkubWVyZ2UodGhpcy5yZXNvdXJjZSkpLCB0aGlzLl9jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlXG4gICAgICB9KSwgISgobiA9IHQuc3BhblByb2Nlc3NvcnMpID09PSBudWxsIHx8IG4gPT09IHZvaWQgMCkgJiYgbi5sZW5ndGgpXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyA9IGt0KFtdLCBWdCh0LnNwYW5Qcm9jZXNzb3JzKSwgITEpLCB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBuZXcgSyh0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5fYnVpbGRFeHBvcnRlckZyb21FbnYoKTtcbiAgICAgICAgaWYgKGkgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHZhciBhID0gbmV3IER0KGkpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IGE7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IG5ldyBqdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgdmFyIG8gPSB0ICsgXCJAXCIgKyAociB8fCBcIlwiKSArIFwiOlwiICsgKChuID09IG51bGwgPyB2b2lkIDAgOiBuLnNjaGVtYVVybCkgfHwgXCJcIik7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2Vycy5oYXMobykgfHwgdGhpcy5fdHJhY2Vycy5zZXQobywgbmV3IHp0KHsgbmFtZTogdCwgdmVyc2lvbjogciwgc2NoZW1hVXJsOiBuID09IG51bGwgPyB2b2lkIDAgOiBuLnNjaGVtYVVybCB9LCB0aGlzLl9jb25maWcsIHRoaXMpKSwgdGhpcy5fdHJhY2Vycy5nZXQobyk7XG4gICAgfSwgZS5wcm90b3R5cGUuYWRkU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycy5sZW5ndGggPT09IDAgJiYgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCkuY2F0Y2goZnVuY3Rpb24ociQxKSB7XG4gICAgICAgIHJldHVybiByLmVycm9yKFwiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIHNodXRkb3duIGN1cnJlbnQgc3BhbiBwcm9jZXNzb3JcIiwgciQxKTtcbiAgICAgIH0pLCB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMucHVzaCh0KSwgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gbmV3IEsodGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yO1xuICAgIH0sIGUucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24odCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0ge30pLCBqZS5zZXRHbG9iYWxUcmFjZXJQcm92aWRlcih0aGlzKSwgdC5wcm9wYWdhdG9yID09PSB2b2lkIDAgJiYgKHQucHJvcGFnYXRvciA9IHRoaXMuX2J1aWxkUHJvcGFnYXRvckZyb21FbnYoKSksIHQuY29udGV4dE1hbmFnZXIgJiYgeGUuc2V0R2xvYmFsQ29udGV4dE1hbmFnZXIodC5jb250ZXh0TWFuYWdlciksIHQucHJvcGFnYXRvciAmJiB5Xy5zZXRHbG9iYWxQcm9wYWdhdG9yKHQucHJvcGFnYXRvcik7XG4gICAgfSwgZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jb25maWcuZm9yY2VGbHVzaFRpbWVvdXRNaWxsaXMsIHIgPSB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICB2YXIgaSwgYSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBvKG5ldyBFcnJvcihcIlNwYW4gcHJvY2Vzc29yIGRpZCBub3QgY29tcGxldGVkIHdpdGhpbiB0aW1lb3V0IHBlcmlvZCBvZiBcIiArIHQgKyBcIiBtc1wiKSksIGkgPSBTLnRpbWVvdXQ7XG4gICAgICAgICAgfSwgdCk7XG4gICAgICAgICAgbi5mb3JjZUZsdXNoKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhKSwgaSAhPT0gUy50aW1lb3V0ICYmIChpID0gUy5yZXNvbHZlZCwgbyhpKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGEpLCBpID0gUy5lcnJvciwgbyhzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLCBvKSB7XG4gICAgICAgIFByb21pc2UuYWxsKHIpLnRoZW4oZnVuY3Rpb24oaSkge1xuICAgICAgICAgIHZhciBhID0gaS5maWx0ZXIoZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgcmV0dXJuIHMgIT09IFMucmVzb2x2ZWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYS5sZW5ndGggPiAwID8gbyhhKSA6IG4oKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgIHJldHVybiBvKFtpXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3Iuc2h1dGRvd24oKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0UHJvcGFnYXRvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5jb25zdHJ1Y3Rvci5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzLmdldCh0KSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRTcGFuRXhwb3J0ZXIgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcjtcbiAgICAgIHJldHVybiAociA9IHRoaXMuY29uc3RydWN0b3IuX3JlZ2lzdGVyZWRFeHBvcnRlcnMuZ2V0KHQpKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2J1aWxkUHJvcGFnYXRvckZyb21FbnYgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcywgciQxID0gQXJyYXkuZnJvbShuZXcgU2V0KE9UKCkuT1RFTF9QUk9QQUdBVE9SUykpLCBuID0gciQxLm1hcChmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBhID0gdC5fZ2V0UHJvcGFnYXRvcihpKTtcbiAgICAgICAgcmV0dXJuIGEgfHwgci53YXJuKCdQcm9wYWdhdG9yIFwiJyArIGkgKyAnXCIgcmVxdWVzdGVkIHRocm91Z2ggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgdW5hdmFpbGFibGUuJyksIGE7XG4gICAgICB9KSwgbyA9IG4ucmVkdWNlKGZ1bmN0aW9uKGksIGEpIHtcbiAgICAgICAgcmV0dXJuIGEgJiYgaS5wdXNoKGEpLCBpO1xuICAgICAgfSwgW10pO1xuICAgICAgaWYgKG8ubGVuZ3RoICE9PSAwKVxuICAgICAgICByZXR1cm4gciQxLmxlbmd0aCA9PT0gMSA/IG9bMF0gOiBuZXcgcHIoe1xuICAgICAgICAgIHByb3BhZ2F0b3JzOiBvXG4gICAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9idWlsZEV4cG9ydGVyRnJvbUVudiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSBPVCgpLk9URUxfVFJBQ0VTX0VYUE9SVEVSO1xuICAgICAgaWYgKCEodCA9PT0gXCJub25lXCIgfHwgdCA9PT0gXCJcIikpIHtcbiAgICAgICAgdmFyIHIkMSA9IHRoaXMuX2dldFNwYW5FeHBvcnRlcih0KTtcbiAgICAgICAgcmV0dXJuIHIkMSB8fCByLmVycm9yKCdFeHBvcnRlciBcIicgKyB0ICsgJ1wiIHJlcXVlc3RlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuYXZhaWxhYmxlLicpLCByJDE7XG4gICAgICB9XG4gICAgfSwgZS5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoW1xuICAgICAgW1widHJhY2Vjb250ZXh0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IGJyKCk7XG4gICAgICB9XSxcbiAgICAgIFtcImJhZ2dhZ2VcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgSmUoKTtcbiAgICAgIH1dXG4gICAgXSksIGUuX3JlZ2lzdGVyZWRFeHBvcnRlcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLCBlO1xuICB9KClcbiksIEh0ID0gZnVuY3Rpb24oZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgciA9IHQgJiYgZVt0XSwgbiA9IDA7XG4gIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIG5lID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKHQsIHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKFtdKSwgdGhpcy5mb3JjZUZsdXNoKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9leHBvcnRJbmZvID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHQucmVzb3VyY2UuYXR0cmlidXRlc1xuICAgICAgICB9LFxuICAgICAgICBpbnN0cnVtZW50YXRpb25TY29wZTogdC5pbnN0cnVtZW50YXRpb25MaWJyYXJ5LFxuICAgICAgICB0cmFjZUlkOiB0LnNwYW5Db250ZXh0KCkudHJhY2VJZCxcbiAgICAgICAgcGFyZW50SWQ6IHQucGFyZW50U3BhbklkLFxuICAgICAgICB0cmFjZVN0YXRlOiAociA9IHQuc3BhbkNvbnRleHQoKS50cmFjZVN0YXRlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnNlcmlhbGl6ZSgpLFxuICAgICAgICBuYW1lOiB0Lm5hbWUsXG4gICAgICAgIGlkOiB0LnNwYW5Db250ZXh0KCkuc3BhbklkLFxuICAgICAgICBraW5kOiB0LmtpbmQsXG4gICAgICAgIHRpbWVzdGFtcDoga2UodC5zdGFydFRpbWUpLFxuICAgICAgICBkdXJhdGlvbjoga2UodC5kdXJhdGlvbiksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHQuYXR0cmlidXRlcyxcbiAgICAgICAgc3RhdHVzOiB0LnN0YXR1cyxcbiAgICAgICAgZXZlbnRzOiB0LmV2ZW50cyxcbiAgICAgICAgbGlua3M6IHQubGlua3NcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUuX3NlbmRTcGFucyA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICAgIHZhciBuLCBvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IEh0KHQpLCBhJDEgPSBpLm5leHQoKTsgIWEkMS5kb25lOyBhJDEgPSBpLm5leHQoKSkge1xuICAgICAgICAgIHZhciBzID0gYSQxLnZhbHVlO1xuICAgICAgICAgIGNvbnNvbGUuZGlyKHRoaXMuX2V4cG9ydEluZm8ocyksIHsgZGVwdGg6IDMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgbiA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYSQxICYmICFhJDEuZG9uZSAmJiAobyA9IGkucmV0dXJuKSAmJiBvLmNhbGwoaSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyKVxuICAgICAgICByZXR1cm4gcih7IGNvZGU6IGEuU1VDQ0VTUyB9KTtcbiAgICB9LCBlO1xuICB9KClcbiksIFF0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIG8sIGkgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKG8gPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBhID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBYdCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBvID0gdC5sZW5ndGgsIGk7IG4gPCBvOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCBpZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdLCB0aGlzLl9zdG9wcGVkID0gITE7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbjtcbiAgICAgIGlmICh0aGlzLl9zdG9wcGVkKVxuICAgICAgICByZXR1cm4gcih7XG4gICAgICAgICAgY29kZTogYS5GQUlMRUQsXG4gICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcIkV4cG9ydGVyIGhhcyBiZWVuIHN0b3BwZWRcIilcbiAgICAgICAgfSk7XG4gICAgICAobiA9IHRoaXMuX2ZpbmlzaGVkU3BhbnMpLnB1c2guYXBwbHkobiwgWHQoW10sIFF0KHQpLCAhMSkpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcih7IGNvZGU6IGEuU1VDQ0VTUyB9KTtcbiAgICAgIH0sIDApO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RvcHBlZCA9ICEwLCB0aGlzLl9maW5pc2hlZFNwYW5zID0gW10sIHRoaXMuZm9yY2VGbHVzaCgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdO1xuICAgIH0sIGUucHJvdG90eXBlLmdldEZpbmlzaGVkU3BhbnMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZFNwYW5zO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgV3QgPSBmdW5jdGlvbihlLCB0LCByLCBuKSB7XG4gIGZ1bmN0aW9uIG8oaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgciA/IGkgOiBuZXcgcihmdW5jdGlvbihhKSB7XG4gICAgICBhKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHIgfHwgKHIgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgYSkge1xuICAgIGZ1bmN0aW9uIHMocCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShuLm5leHQocCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBhKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsKHApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi50aHJvdyhwKSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIGEoZik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUocCkge1xuICAgICAgcC5kb25lID8gaShwLnZhbHVlKSA6IG8ocC52YWx1ZSkudGhlbihzLCBsKTtcbiAgICB9XG4gICAgdSgobiA9IG4uYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIFl0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmIChpWzBdICYgMSkgdGhyb3cgaVsxXTtcbiAgICByZXR1cm4gaVsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgbiwgbywgaSwgYTtcbiAgcmV0dXJuIGEgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGFbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgYTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBsKFt1LCBwXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBsKHUpIHtcbiAgICBpZiAobikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IHI7ICkgdHJ5IHtcbiAgICAgIGlmIChuID0gMSwgbyAmJiAoaSA9IHVbMF0gJiAyID8gby5yZXR1cm4gOiB1WzBdID8gby50aHJvdyB8fCAoKGkgPSBvLnJldHVybikgJiYgaS5jYWxsKG8pLCAwKSA6IG8ubmV4dCkgJiYgIShpID0gaS5jYWxsKG8sIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAobyA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByLmxhYmVsKyssIG8gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSByLnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICByID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiByLmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHIubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gaVsyXSwgci5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gdC5jYWxsKGUsIHIpO1xuICAgIH0gY2F0Y2ggKHApIHtcbiAgICAgIHUgPSBbNiwgcF0sIG8gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6ICEwIH07XG4gIH1cbn0sIG9lID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdGhpcy5fZXhwb3J0ZXIgPSB0LCB0aGlzLl9zaHV0ZG93bk9uY2UgPSBuZXcgWnIodGhpcy5fc2h1dGRvd24sIHRoaXMpLCB0aGlzLl91bnJlc29sdmVkRXhwb3J0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gV3QodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gWXQodGhpcywgZnVuY3Rpb24odCkge1xuICAgICAgICAgIHN3aXRjaCAodC5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICByZXR1cm4gWzQsIFByb21pc2UuYWxsKEFycmF5LmZyb20odGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMpKV07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiB0LnNlbnQoKSwgdGhpcy5fZXhwb3J0ZXIuZm9yY2VGbHVzaCA/IFs0LCB0aGlzLl9leHBvcnRlci5mb3JjZUZsdXNoKCldIDogWzMsIDNdO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICB0LnNlbnQoKSwgdC5sYWJlbCA9IDM7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByID0gdGhpcywgbiwgbztcbiAgICAgIGlmICghdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkICYmIHQuc3BhbkNvbnRleHQoKS50cmFjZUZsYWdzICYgenQkMS5TQU1QTEVEKSB7XG4gICAgICAgIHZhciBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHR0Ll9leHBvcnQoci5fZXhwb3J0ZXIsIFt0XSkudGhlbihmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICB2YXIgbDtcbiAgICAgICAgICAgIHMuY29kZSAhPT0gYS5TVUNDRVNTICYmIG5lJDEoKGwgPSBzLmVycm9yKSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogbmV3IEVycm9yKFwiU2ltcGxlU3BhblByb2Nlc3Nvcjogc3BhbiBleHBvcnQgZmFpbGVkIChzdGF0dXMgXCIgKyBzICsgXCIpXCIpKTtcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICBuZSQxKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nKSB7XG4gICAgICAgICAgdmFyIGEkMSA9IChvID0gKG4gPSB0LnJlc291cmNlKS53YWl0Rm9yQXN5bmNBdHRyaWJ1dGVzKSA9PT0gbnVsbCB8fCBvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvLmNhbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBhJDEgIT0gbnVsbCAmJiByLl91bnJlc29sdmVkRXhwb3J0cy5kZWxldGUoYSQxKSwgaSgpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZSQxKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGEkMSAhPSBudWxsICYmIHRoaXMuX3VucmVzb2x2ZWRFeHBvcnRzLmFkZChhJDEpO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICBpKCk7XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaHV0ZG93bk9uY2UuY2FsbCgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2V4cG9ydGVyLnNodXRkb3duKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pO1xuXG5leHBvcnQgeyBEdCBhcyBELCBHdCBhcyBHLCBJLCBPdCBhcyBPLCBQLCBTLCBXLCBEIGFzIGEsIGcsIGllIGFzIGksIGp0IGFzIGosIG5lIGFzIG4sIG9lIGFzIG8sIHJlIGFzIHIsIHp0IGFzIHogfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxLQUFLQyxHQUFNLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxJQUFJLEtBQUssSUFBSSxLQUFLQyxVQUFVO0FBQ3pGLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLE1BQU1DLEdBQUksTUFBTUMsSUFBSSxNQUFNQyxHQUFHLEtBQUtDLElBQUksS0FBS0MsR0FBSyxNQUFNQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLEtBQUtDLElBQUksTUFBTUMsR0FBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDOUksU0FBUyxLQUFBQyxJQUFHLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFBQyxJQUFHLEtBQUFDLEdBQUcsS0FBS0MsSUFBSSxLQUFLQyxJQUFJ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R0FBRyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU2EsR0FBRztBQUNuRCxnQkFBSUc7QUFDSixZQUFBSCxFQUFFLFNBQVNOLEVBQUUsV0FBV2pCLEdBQU0wQixJQUFJSCxFQUFFLFdBQVcsUUFBUUcsTUFBTSxTQUFTQSxJQUFJLElBQUksTUFBTSxxREFBcURILElBQUksR0FBRyxDQUFDO0FBQUEsVUFDbkosQ0FBQyxFQUFFLE1BQU0sU0FBU0EsR0FBRztBQUNuQixZQUFBdkIsRUFBS3VCLENBQUM7QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQ0EsWUFBSSxFQUFFLFNBQVMsd0JBQXdCO0FBQ3JDLGNBQUljLEtBQU9sQixLQUFLLElBQUksRUFBRSxVQUFVLDRCQUE0QixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDcEgsbUJBQU9rQixLQUFPLFFBQVEsRUFBRSxtQkFBbUIsT0FBT0EsQ0FBRyxHQUFHZixFQUFFO0FBQUEsVUFDNUQsR0FBRyxTQUFTQyxHQUFHO0FBQ2IsbUJBQU92QixFQUFLdUIsQ0FBQztBQUFBLFVBQ2YsQ0FBQztBQUNELFVBQUFjLEtBQU8sUUFBUSxLQUFLLG1CQUFtQixJQUFJQSxDQUFHO0FBQUEsUUFDaEQ7QUFDRSxVQUFBZixFQUFFO0FBQUEsTUFDTjtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sS0FBSyxjQUFjLEtBQUs7QUFBQSxJQUNqQyxHQUFHLEVBQUUsVUFBVSxZQUFZLFdBQVc7QUFDcEMsYUFBTyxLQUFLLFVBQVUsU0FBUztBQUFBLElBQ2pDLEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiamUiLCAiZ24iLCAienQkMSIsICJ0cyIsICJ4ZSIsICJXaSIsICJFZSIsICJyIiwgInFlIiwgIndlIiwgIlIiLCAicF8iLCAiTyQxIiwgIk5fIiwgIkhfIiwgInJBIiwgIk5BIiwgInlfIiwgImtlIiwgInJfIiwgIk1BIiwgIloiLCAiWmUiLCAibmUkMSIsICJ3IiwgInAiLCAicHIiLCAiYnIiLCAiSmUiLCAiVyQxIiwgInNyIiwgImtyIiwgIlpyIiwgInR0IiwgInIkMSIsICJPVCIsICJMVCIsICJQJDEiLCAiTSIsICJSJDEiLCAiYSIsICJidCIsICJvIiwgIkN0IiwgIlgiLCAiaSIsICJzIiwgInh0IiwgIk90IiwgImwiLCAiZiIsICJQIiwgImciLCAiRCIsICJXIiwgIkUiLCAiSiIsICJZIiwgImMiLCAieSIsICJhJDEiLCAiQnQiLCAiRHQiLCAiR3QiLCAicSIsICJ4IiwgInAkMSIsICJHIiwgImIiLCAiTyIsICJLIiwgIlZ0IiwgImt0IiwgIlMiLCAiWHQiLCAiaWUiLCAiV3QiLCAiWXQiLCAib2UiXQp9Cg==
957
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiU2ltcGxlU3BhblByb2Nlc3Nvci1DMXRtcVZudC0hfnswMDJ9fi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaiBhcyBqZSwgZyBhcyBnbiwgeiBhcyB6dCQxLCB0IGFzIHRzLCB4IGFzIHhlLCBXIGFzIFdpLCBzIGFzIHN0LCBFIGFzIEVlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1CaHFvRHU1cC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBkQyBhcyBxZSwgZEQgYXMgd2UsIGRFIGFzIFIsIHAgYXMgcF8sIE8gYXMgTyQxLCBkRiBhcyBOXywgZEcgYXMgSF8sIGN5IGFzIHJBLCBjdyBhcyBOQSwgeSBhcyB5XywgZEggYXMga2UsIGRJIGFzIHJfLCBjeCBhcyBNQSB9IGZyb20gJy4vdXJsLURlTkpUQXZfLSF+ezAwOH1+LmpzJztcbmltcG9ydCB7IFosIGEgYXMgWmUsIG4gYXMgbmUkMSwgdywgcCwgYiBhcyBwciwgYyBhcyBiciwgSiBhcyBKZSwgVyBhcyBXJDEsIHMgYXMgc3IsIGsgYXMga3IsIGQgYXMgWnIsIHQgYXMgdHQgfSBmcm9tICcuL2luZGV4LUJocGotcjdxLSF+ezAwan1+LmpzJztcbmltcG9ydCB7IGJtIGFzIHIkMSwgTyBhcyBPVCwgYm4gYXMgTFQsIGJvIGFzIFAkMSwgYnAgYXMgTSB9IGZyb20gJy4vc2RrLWluZm8tQ3FBLVNYdU0tIX57MDBnfX4uanMnO1xuaW1wb3J0IHsgUiBhcyBSJDEgfSBmcm9tICcuL1Jlc291cmNlLURGRmJWR0tpLSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5cbnZhciBidCA9IFwiZXhjZXB0aW9uXCIsIFUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFUgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHtcbiAgICBmb3IgKHZhciB0LCByID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IHIgPCBuOyByKyspIHtcbiAgICAgIHQgPSBhcmd1bWVudHNbcl07XG4gICAgICBmb3IgKHZhciBvIGluIHQpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCBvKSAmJiAoZVtvXSA9IHRbb10pO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSwgVS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgQ3QgPSBmdW5jdGlvbihlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCByID0gdCAmJiBlW3RdLCBuID0gMDtcbiAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgWCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgeHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgT3QgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwKSB7XG4gICAgICBzID09PSB2b2lkIDAgJiYgKHMgPSBbXSksIHRoaXMuYXR0cmlidXRlcyA9IHt9LCB0aGlzLmxpbmtzID0gW10sIHRoaXMuZXZlbnRzID0gW10sIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkTGlua3NDb3VudCA9IDAsIHRoaXMuc3RhdHVzID0ge1xuICAgICAgICBjb2RlOiBFZS5VTlNFVFxuICAgICAgfSwgdGhpcy5lbmRUaW1lID0gWzAsIDBdLCB0aGlzLl9lbmRlZCA9ICExLCB0aGlzLl9kdXJhdGlvbiA9IFstMSwgLTFdLCB0aGlzLm5hbWUgPSBuLCB0aGlzLl9zcGFuQ29udGV4dCA9IG8sIHRoaXMucGFyZW50U3BhbklkID0gYSwgdGhpcy5raW5kID0gaSwgdGhpcy5saW5rcyA9IHM7XG4gICAgICB2YXIgZiA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSA9IFIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0ID0gZiAtICh0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSArIHJfKCkpLCB0aGlzLl9zdGFydFRpbWVQcm92aWRlZCA9IGwgIT0gbnVsbCwgdGhpcy5zdGFydFRpbWUgPSB0aGlzLl9nZXRUaW1lKGwgPz8gZiksIHRoaXMucmVzb3VyY2UgPSB0LnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0Lmluc3RydW1lbnRhdGlvbkxpYnJhcnksIHRoaXMuX3NwYW5MaW1pdHMgPSB0LmdldFNwYW5MaW1pdHMoKSwgdGhpcy5fYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCA9IHRoaXMuX3NwYW5MaW1pdHMuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCB8fCAwLCBwICE9IG51bGwgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHApLCB0aGlzLl9zcGFuUHJvY2Vzc29yID0gdC5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCksIHRoaXMuX3NwYW5Qcm9jZXNzb3Iub25TdGFydCh0aGlzLCByKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgciQxKSB7XG4gICAgICByZXR1cm4gciQxID09IG51bGwgfHwgdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiB0Lmxlbmd0aCA9PT0gMCA/IChyLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdCksIHRoaXMpIDogWihyJDEpID8gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5sZW5ndGggPj0gdGhpcy5fc3BhbkxpbWl0cy5hdHRyaWJ1dGVDb3VudExpbWl0ICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCB0KSA/ICh0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50KyssIHRoaXMpIDogKHRoaXMuYXR0cmlidXRlc1t0XSA9IHRoaXMuX3RydW5jYXRlVG9TaXplKHIkMSksIHRoaXMpIDogKHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHQpLCB0aGlzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVzID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gQ3QoT2JqZWN0LmVudHJpZXModCkpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gWChpLnZhbHVlLCAyKSwgcyA9IGFbMF0sIGwgPSBhWzFdO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKHMsIGwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiB1IH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICBpZiAodGhpcy5faXNTcGFuRW5kZWQoKSlcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICBpZiAodGhpcy5fc3BhbkxpbWl0cy5ldmVudENvdW50TGltaXQgPT09IDApXG4gICAgICAgIHJldHVybiByLndhcm4oXCJObyBldmVudHMgYWxsb3dlZC5cIiksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrLCB0aGlzO1xuICAgICAgdGhpcy5ldmVudHMubGVuZ3RoID49IHRoaXMuX3NwYW5MaW1pdHMuZXZlbnRDb3VudExpbWl0ICYmICh0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIkRyb3BwaW5nIGV4dHJhIGV2ZW50cy5cIiksIHRoaXMuZXZlbnRzLnNoaWZ0KCksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrKSwgcWUociQxKSAmJiAocWUobikgfHwgKG4gPSByJDEpLCByJDEgPSB2b2lkIDApO1xuICAgICAgdmFyIG8gPSBaZShyJDEpO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnB1c2goe1xuICAgICAgICBuYW1lOiB0LFxuICAgICAgICBhdHRyaWJ1dGVzOiBvLFxuICAgICAgICB0aW1lOiB0aGlzLl9nZXRUaW1lKG4pLFxuICAgICAgICBkcm9wcGVkQXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXMubGlua3MucHVzaCh0KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5saW5rcykucHVzaC5hcHBseShyLCB4dChbXSwgWCh0KSwgITEpKSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5zdGF0dXMgPSBVKHt9LCB0KSwgdGhpcy5zdGF0dXMubWVzc2FnZSAhPSBudWxsICYmIHR5cGVvZiB0Lm1lc3NhZ2UgIT0gXCJzdHJpbmdcIiAmJiAoci53YXJuKFwiRHJvcHBpbmcgaW52YWxpZCBzdGF0dXMubWVzc2FnZSBvZiB0eXBlICdcIiArIHR5cGVvZiB0Lm1lc3NhZ2UgKyBcIicsIGV4cGVjdGVkICdzdHJpbmcnXCIpLCBkZWxldGUgdGhpcy5zdGF0dXMubWVzc2FnZSksIHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZU5hbWUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5uYW1lID0gdCwgdGhpcyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHRoaXMuX2lzU3BhbkVuZGVkKCkpIHtcbiAgICAgICAgci5lcnJvcih0aGlzLm5hbWUgKyBcIiBcIiArIHRoaXMuX3NwYW5Db250ZXh0LnRyYWNlSWQgKyBcIi1cIiArIHRoaXMuX3NwYW5Db250ZXh0LnNwYW5JZCArIFwiIC0gWW91IGNhbiBvbmx5IGNhbGwgZW5kKCkgb24gYSBzcGFuIG9uY2UuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9lbmRlZCA9ICEwLCB0aGlzLmVuZFRpbWUgPSB0aGlzLl9nZXRUaW1lKHQpLCB0aGlzLl9kdXJhdGlvbiA9IHdlKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLl9kdXJhdGlvblswXSA8IDAgJiYgKHIud2FybihcIkluY29uc2lzdGVudCBzdGFydCBhbmQgZW5kIHRpbWUsIHN0YXJ0VGltZSA+IGVuZFRpbWUuIFNldHRpbmcgc3BhbiBkdXJhdGlvbiB0byAwbXMuXCIsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLmVuZFRpbWUgPSB0aGlzLnN0YXJ0VGltZS5zbGljZSgpLCB0aGlzLl9kdXJhdGlvbiA9IFswLCAwXSksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA+IDAgJiYgci53YXJuKFwiRHJvcHBlZCBcIiArIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCArIFwiIGV2ZW50cyBiZWNhdXNlIGV2ZW50Q291bnRMaW1pdCByZWFjaGVkXCIpLCB0aGlzLl9zcGFuUHJvY2Vzc29yLm9uRW5kKHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRUaW1lID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHR5cGVvZiB0ID09IFwibnVtYmVyXCIgJiYgdCA8PSBSLm5vdygpKVxuICAgICAgICByZXR1cm4gcF8odCArIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0KTtcbiAgICAgIGlmICh0eXBlb2YgdCA9PSBcIm51bWJlclwiKVxuICAgICAgICByZXR1cm4gTyQxKHQpO1xuICAgICAgaWYgKHQgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gTyQxKHQuZ2V0VGltZSgpKTtcbiAgICAgIGlmIChOXyh0KSlcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICBpZiAodGhpcy5fc3RhcnRUaW1lUHJvdmlkZWQpXG4gICAgICAgIHJldHVybiBPJDEoRGF0ZS5ub3coKSk7XG4gICAgICB2YXIgciA9IFIubm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZTtcbiAgICAgIHJldHVybiBIXyh0aGlzLnN0YXJ0VGltZSwgTyQxKHIpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID09PSAhMTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWNvcmRFeGNlcHRpb24gPSBmdW5jdGlvbih0LCByJDEpIHtcbiAgICAgIHZhciBuID0ge307XG4gICAgICB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gbltOQV0gPSB0IDogdCAmJiAodC5jb2RlID8gbltyQV0gPSB0LmNvZGUudG9TdHJpbmcoKSA6IHQubmFtZSAmJiAobltyQV0gPSB0Lm5hbWUpLCB0Lm1lc3NhZ2UgJiYgKG5bTkFdID0gdC5tZXNzYWdlKSwgdC5zdGFjayAmJiAobltNQV0gPSB0LnN0YWNrKSksIG5bckFdIHx8IG5bTkFdID8gdGhpcy5hZGRFdmVudChidCwgbiwgciQxKSA6IHIud2FybihcIkZhaWxlZCB0byByZWNvcmQgYW4gZXhjZXB0aW9uIFwiICsgdCk7XG4gICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImR1cmF0aW9uXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImVuZGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRBdHRyaWJ1dGVzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJkcm9wcGVkRXZlbnRzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRMaW5rc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkTGlua3NDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUuX2lzU3BhbkVuZGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kZWQgJiYgci53YXJuKFwiQ2FuIG5vdCBleGVjdXRlIHRoZSBvcGVyYXRpb24gb24gZW5kZWQgU3BhbiB7dHJhY2VJZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC50cmFjZUlkICsgXCIsIHNwYW5JZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC5zcGFuSWQgKyBcIn1cIiksIHRoaXMuX2VuZGVkO1xuICAgIH0sIGUucHJvdG90eXBlLl90cnVuY2F0ZVRvTGltaXRVdGlsID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHQubGVuZ3RoIDw9IHIgPyB0IDogdC5zdWJzdHJpbmcoMCwgcik7XG4gICAgfSwgZS5wcm90b3R5cGUuX3RydW5jYXRlVG9TaXplID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIkMSA9IHRoaXMsIG4gPSB0aGlzLl9hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0O1xuICAgICAgcmV0dXJuIG4gPD0gMCA/IChyLndhcm4oXCJBdHRyaWJ1dGUgdmFsdWUgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgZ290IFwiICsgbiksIHQpIDogdHlwZW9mIHQgPT0gXCJzdHJpbmdcIiA/IHRoaXMuX3RydW5jYXRlVG9MaW1pdFV0aWwodCwgbikgOiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IHIkMS5fdHJ1bmNhdGVUb0xpbWl0VXRpbChvLCBuKSA6IG87XG4gICAgICB9KSA6IHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBQO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkoUCB8fCAoUCA9IHt9KSk7XG52YXIgSSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBnID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBQLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIsIG4sIG8sIGk7XG4gICAgICB0aGlzLl9yb290ID0gdC5yb290LCB0aGlzLl9yb290IHx8IChuZSQxKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgZygpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9IChyID0gdC5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogbmV3IGcoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gdC5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEkoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKG8gPSB0LmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgbyAhPT0gdm9pZCAwID8gbyA6IG5ldyBnKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gdC5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgSSgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24odCwgciwgbiwgbywgaSwgYSkge1xuICAgICAgdmFyIHMgPSBqZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIHJldHVybiAhcyB8fCAhZ24ocykgPyB0aGlzLl9yb290LnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMuaXNSZW1vdGUgPyBzLnRyYWNlRmxhZ3MgJiB6dCQxLlNBTVBMRUQgPyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKHQsIHIsIG4sIG8sIGksIGEpIDogcy50cmFjZUZsYWdzICYgenQkMS5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgciwgbiwgbywgaSwgYSk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBXID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCksIHRoaXMuX3JhdGlvID0gdCwgdGhpcy5fcmF0aW8gPSB0aGlzLl9ub3JtYWxpemUodCksIHRoaXMuX3VwcGVyQm91bmQgPSBNYXRoLmZsb29yKHRoaXMuX3JhdGlvICogNDI5NDk2NzI5NSk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogdHMocikgJiYgdGhpcy5fYWNjdW11bGF0ZShyKSA8IHRoaXMuX3VwcGVyQm91bmQgPyBQLlJFQ09SRF9BTkRfU0FNUExFRCA6IFAuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiVHJhY2VJZFJhdGlvQmFzZWR7XCIgKyB0aGlzLl9yYXRpbyArIFwifVwiO1xuICAgIH0sIGUucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHQgIT0gXCJudW1iZXJcIiB8fCBpc05hTih0KSA/IDAgOiB0ID49IDEgPyAxIDogdCA8PSAwID8gMCA6IHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuX2FjY3VtdWxhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgICBmb3IgKHZhciByID0gMCwgbiA9IDA7IG4gPCB0Lmxlbmd0aCAvIDg7IG4rKykge1xuICAgICAgICB2YXIgbyA9IG4gKiA4LCBpID0gcGFyc2VJbnQodC5zbGljZShvLCBvICsgOCksIDE2KTtcbiAgICAgICAgciA9IChyIF4gaSkgPj4+IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9LCBlO1xuICB9KClcbiksIFJ0ID0gciQxLkFsd2F5c09uLCBFID0gMTtcbmZ1bmN0aW9uIEooKSB7XG4gIHZhciBlID0gT1QoKTtcbiAgcmV0dXJuIHtcbiAgICBzYW1wbGVyOiAkKGUpLFxuICAgIGZvcmNlRmx1c2hUaW1lb3V0TWlsbGlzOiAzZTQsXG4gICAgZ2VuZXJhbExpbWl0czoge1xuICAgICAgYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdDogZS5PVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVDb3VudExpbWl0OiBlLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUXG4gICAgfSxcbiAgICBzcGFuTGltaXRzOiB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlULFxuICAgICAgYXR0cmlidXRlQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlULFxuICAgICAgbGlua0NvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVQsXG4gICAgICBldmVudENvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyRXZlbnRDb3VudExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlULFxuICAgICAgYXR0cmlidXRlUGVyTGlua0NvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVFxuICAgIH0sXG4gICAgbWVyZ2VSZXNvdXJjZVdpdGhEZWZhdWx0czogITBcbiAgfTtcbn1cbmZ1bmN0aW9uICQoZSkge1xuICBzd2l0Y2ggKGUgPT09IHZvaWQgMCAmJiAoZSA9IE9UKCkpLCBlLk9URUxfVFJBQ0VTX1NBTVBMRVIpIHtcbiAgICBjYXNlIHIkMS5BbHdheXNPbjpcbiAgICAgIHJldHVybiBuZXcgZygpO1xuICAgIGNhc2UgciQxLkFsd2F5c09mZjpcbiAgICAgIHJldHVybiBuZXcgSSgpO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkQWx3YXlzT246XG4gICAgICByZXR1cm4gbmV3IEQoe1xuICAgICAgICByb290OiBuZXcgZygpXG4gICAgICB9KTtcbiAgICBjYXNlIHIkMS5QYXJlbnRCYXNlZEFsd2F5c09mZjpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBJKClcbiAgICAgIH0pO1xuICAgIGNhc2UgciQxLlRyYWNlSWRSYXRpbzpcbiAgICAgIHJldHVybiBuZXcgVyhZKGUpKTtcbiAgICBjYXNlIHIkMS5QYXJlbnRCYXNlZFRyYWNlSWRSYXRpbzpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBXKFkoZSkpXG4gICAgICB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHIuZXJyb3IoJ09URUxfVFJBQ0VTX1NBTVBMRVIgdmFsdWUgXCInICsgZS5PVEVMX1RSQUNFU19TQU1QTEVSICsgXCIgaW52YWxpZCwgZGVmYXVsdGluZyB0byBcIiArIFJ0ICsgJ1wiLicpLCBuZXcgZygpO1xuICB9XG59XG5mdW5jdGlvbiBZKGUpIHtcbiAgaWYgKGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgPT09IHZvaWQgMCB8fCBlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHID09PSBcIlwiKVxuICAgIHJldHVybiByLmVycm9yKFwiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgaXMgYmxhbmssIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFO1xuICB2YXIgdCA9IE51bWJlcihlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHKTtcbiAgcmV0dXJuIGlzTmFOKHQpID8gKHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRz1cIiArIGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgKyBcIiB3YXMgZ2l2ZW4sIGJ1dCBpdCBpcyBpbnZhbGlkLCBkZWZhdWx0aW5nIHRvIFwiICsgRSArIFwiLlwiKSwgRSkgOiB0IDwgMCB8fCB0ID4gMSA/IChyLmVycm9yKFwiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkc9XCIgKyBlLk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHICsgXCIgd2FzIGdpdmVuLCBidXQgaXQgaXMgb3V0IG9mIHJhbmdlIChbMC4uMV0pLCBkZWZhdWx0aW5nIHRvIFwiICsgRSArIFwiLlwiKSwgRSkgOiB0O1xufVxuZnVuY3Rpb24gSXQoZSkge1xuICB2YXIgdCA9IHtcbiAgICBzYW1wbGVyOiAkKClcbiAgfSwgciA9IEooKSwgbiA9IE9iamVjdC5hc3NpZ24oe30sIHIsIHQsIGUpO1xuICByZXR1cm4gbi5nZW5lcmFsTGltaXRzID0gT2JqZWN0LmFzc2lnbih7fSwgci5nZW5lcmFsTGltaXRzLCBlLmdlbmVyYWxMaW1pdHMgfHwge30pLCBuLnNwYW5MaW1pdHMgPSBPYmplY3QuYXNzaWduKHt9LCByLnNwYW5MaW1pdHMsIGUuc3BhbkxpbWl0cyB8fCB7fSksIG47XG59XG5mdW5jdGlvbiBNdChlKSB7XG4gIHZhciB0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwLCBmLCBjLCB5ID0gT2JqZWN0LmFzc2lnbih7fSwgZS5zcGFuTGltaXRzKSwgbSA9IExUKCk7XG4gIHJldHVybiB5LmF0dHJpYnV0ZUNvdW50TGltaXQgPSAoYSA9IChpID0gKG8gPSAociA9ICh0ID0gZS5zcGFuTGltaXRzKSA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LmF0dHJpYnV0ZUNvdW50TGltaXQpICE9PSBudWxsICYmIHIgIT09IHZvaWQgMCA/IHIgOiAobiA9IGUuZ2VuZXJhbExpbWl0cykgPT09IG51bGwgfHwgbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogbi5hdHRyaWJ1dGVDb3VudExpbWl0KSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogbS5PVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlUKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbS5PVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IFAkMSwgeS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0ID0gKGMgPSAoZiA9IChwID0gKGwgPSAocyA9IGUuc3BhbkxpbWl0cykgPT09IG51bGwgfHwgcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcy5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0KSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogKHUgPSBlLmdlbmVyYWxMaW1pdHMpID09PSBudWxsIHx8IHUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHUuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCkgIT09IG51bGwgJiYgcCAhPT0gdm9pZCAwID8gcCA6IG0uT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQpICE9PSBudWxsICYmIGYgIT09IHZvaWQgMCA/IGYgOiBtLk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCkgIT09IG51bGwgJiYgYyAhPT0gdm9pZCAwID8gYyA6IE0sIE9iamVjdC5hc3NpZ24oe30sIGUsIHsgc3BhbkxpbWl0czogeSB9KTtcbn1cbnZhciBOdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIkMSkge1xuICAgICAgdGhpcy5fZXhwb3J0ZXIgPSB0LCB0aGlzLl9pc0V4cG9ydGluZyA9ICExLCB0aGlzLl9maW5pc2hlZFNwYW5zID0gW10sIHRoaXMuX2Ryb3BwZWRTcGFuc0NvdW50ID0gMDtcbiAgICAgIHZhciBuID0gT1QoKTtcbiAgICAgIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEubWF4RXhwb3J0QmF0Y2hTaXplKSA9PSBcIm51bWJlclwiID8gciQxLm1heEV4cG9ydEJhdGNoU2l6ZSA6IG4uT1RFTF9CU1BfTUFYX0VYUE9SVF9CQVRDSF9TSVpFLCB0aGlzLl9tYXhRdWV1ZVNpemUgPSB0eXBlb2YgKHIkMSA9PSBudWxsID8gdm9pZCAwIDogciQxLm1heFF1ZXVlU2l6ZSkgPT0gXCJudW1iZXJcIiA/IHIkMS5tYXhRdWV1ZVNpemUgOiBuLk9URUxfQlNQX01BWF9RVUVVRV9TSVpFLCB0aGlzLl9zY2hlZHVsZWREZWxheU1pbGxpcyA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEuc2NoZWR1bGVkRGVsYXlNaWxsaXMpID09IFwibnVtYmVyXCIgPyByJDEuc2NoZWR1bGVkRGVsYXlNaWxsaXMgOiBuLk9URUxfQlNQX1NDSEVEVUxFX0RFTEFZLCB0aGlzLl9leHBvcnRUaW1lb3V0TWlsbGlzID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5leHBvcnRUaW1lb3V0TWlsbGlzKSA9PSBcIm51bWJlclwiID8gciQxLmV4cG9ydFRpbWVvdXRNaWxsaXMgOiBuLk9URUxfQlNQX0VYUE9SVF9USU1FT1VULCB0aGlzLl9zaHV0ZG93bk9uY2UgPSBuZXcgWnIodGhpcy5fc2h1dGRvd24sIHRoaXMpLCB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUgPiB0aGlzLl9tYXhRdWV1ZVNpemUgJiYgKHIud2FybihcIkJhdGNoU3BhblByb2Nlc3NvcjogbWF4RXhwb3J0QmF0Y2hTaXplIG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byBtYXhRdWV1ZVNpemUsIHNldHRpbmcgbWF4RXhwb3J0QmF0Y2hTaXplIHRvIG1hdGNoIG1heFF1ZXVlU2l6ZVwiKSwgdGhpcy5fbWF4RXhwb3J0QmF0Y2hTaXplID0gdGhpcy5fbWF4UXVldWVTaXplKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaHV0ZG93bk9uY2UuaXNDYWxsZWQgPyB0aGlzLl9zaHV0ZG93bk9uY2UucHJvbWlzZSA6IHRoaXMuX2ZsdXNoQWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCB8fCB0LnNwYW5Db250ZXh0KCkudHJhY2VGbGFncyAmIHp0JDEuU0FNUExFRCAmJiB0aGlzLl9hZGRUb0J1ZmZlcih0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQub25TaHV0ZG93bigpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQuX2ZsdXNoQWxsKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdC5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9hZGRUb0J1ZmZlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGlmICh0aGlzLl9maW5pc2hlZFNwYW5zLmxlbmd0aCA+PSB0aGlzLl9tYXhRdWV1ZVNpemUpIHtcbiAgICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIm1heFF1ZXVlU2l6ZSByZWFjaGVkLCBkcm9wcGluZyBzcGFuc1wiKSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQrKztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPiAwICYmIChyLndhcm4oXCJEcm9wcGVkIFwiICsgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgKyBcIiBzcGFucyBiZWNhdXNlIG1heFF1ZXVlU2l6ZSByZWFjaGVkXCIpLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9IDApLCB0aGlzLl9maW5pc2hlZFNwYW5zLnB1c2godCksIHRoaXMuX21heWJlU3RhcnRUaW1lcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9mbHVzaEFsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgZm9yICh2YXIgbyA9IFtdLCBpID0gTWF0aC5jZWlsKHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIC8gdC5fbWF4RXhwb3J0QmF0Y2hTaXplKSwgYSA9IDAsIHMgPSBpOyBhIDwgczsgYSsrKVxuICAgICAgICAgIG8ucHVzaCh0Ll9mbHVzaE9uZUJhdGNoKCkpO1xuICAgICAgICBQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHIoKTtcbiAgICAgICAgfSkuY2F0Y2gobik7XG4gICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZmx1c2hPbmVCYXRjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyVGltZXIoKSwgdGhpcy5fZmluaXNoZWRTcGFucy5sZW5ndGggPT09IDAgPyBQcm9taXNlLnJlc29sdmUoKSA6IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIG4obmV3IEVycm9yKFwiVGltZW91dFwiKSk7XG4gICAgICAgIH0sIHQuX2V4cG9ydFRpbWVvdXRNaWxsaXMpO1xuICAgICAgICB4ZS53aXRoKFckMSh4ZS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBpO1xuICAgICAgICAgIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIDw9IHQuX21heEV4cG9ydEJhdGNoU2l6ZSA/IChpID0gdC5fZmluaXNoZWRTcGFucywgdC5fZmluaXNoZWRTcGFucyA9IFtdKSA6IGkgPSB0Ll9maW5pc2hlZFNwYW5zLnNwbGljZSgwLCB0Ll9tYXhFeHBvcnRCYXRjaFNpemUpO1xuICAgICAgICAgIGZvciAodmFyIGEkMSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2V4cG9ydGVyLmV4cG9ydChpLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICAgIHZhciBjO1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIGYuY29kZSA9PT0gYS5TVUNDRVNTID8gcigpIDogbigoYyA9IGYuZXJyb3IpICE9PSBudWxsICYmIGMgIT09IHZvaWQgMCA/IGMgOiBuZXcgRXJyb3IoXCJCYXRjaFNwYW5Qcm9jZXNzb3I6IHNwYW4gZXhwb3J0IGZhaWxlZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBzID0gbnVsbCwgbCA9IDAsIHUgPSBpLmxlbmd0aDsgbCA8IHU7IGwrKykge1xuICAgICAgICAgICAgdmFyIHAgPSBpW2xdO1xuICAgICAgICAgICAgcC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nICYmIHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcyAmJiAocyA/PyAocyA9IFtdKSwgcy5wdXNoKHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcygpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPT09IG51bGwgPyBhJDEoKSA6IFByb21pc2UuYWxsKHMpLnRoZW4oYSQxLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICBuZSQxKGYpLCBuKGYpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9tYXliZVN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgIGlmICghdGhpcy5faXNFeHBvcnRpbmcpIHtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0Ll9pc0V4cG9ydGluZyA9ICEwLCB0Ll9mbHVzaE9uZUJhdGNoKCkuZmluYWxseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHQuX2lzRXhwb3J0aW5nID0gITEsIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID4gMCAmJiAodC5fY2xlYXJUaW1lcigpLCB0Ll9tYXliZVN0YXJ0VGltZXIoKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obikge1xuICAgICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSAhMSwgbmUkMShuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID49IHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSlcbiAgICAgICAgICByZXR1cm4gcigpO1xuICAgICAgICB0aGlzLl90aW1lciA9PT0gdm9pZCAwICYmICh0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHIoKTtcbiAgICAgICAgfSwgdGhpcy5fc2NoZWR1bGVkRGVsYXlNaWxsaXMpLCBzcih0aGlzLl90aW1lcikpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLl9jbGVhclRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90aW1lciAhPT0gdm9pZCAwICYmIChjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLCB0aGlzLl90aW1lciA9IHZvaWQgMCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBCdCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBmb3IgKHZhciBpIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBpKSAmJiAobltpXSA9IG9baV0pO1xuICAgIH0sIGUodCwgcik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcocikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUodCwgcik7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSB0O1xuICAgIH1cbiAgICB0LnByb3RvdHlwZSA9IHIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHIpIDogKG4ucHJvdG90eXBlID0gci5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSgpLCBEdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbihlKSB7XG4gICAgQnQodCwgZSk7XG4gICAgZnVuY3Rpb24gdChyLCBuKSB7XG4gICAgICB2YXIgbyA9IGUuY2FsbCh0aGlzLCByLCBuKSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIG8ub25Jbml0KG4pLCBvO1xuICAgIH1cbiAgICByZXR1cm4gdC5wcm90b3R5cGUub25Jbml0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGlzYWJsZUF1dG9GbHVzaE9uRG9jdW1lbnRIaWRlKSAhPT0gITAgJiYgdHlwZW9mIGRvY3VtZW50IDwgXCJ1XCIgJiYgKHRoaXMuX3Zpc2liaWxpdHlDaGFuZ2VMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCIgJiYgbi5mb3JjZUZsdXNoKCkuY2F0Y2goZnVuY3Rpb24obykge1xuICAgICAgICAgIG5lJDEobyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBuLmZvcmNlRmx1c2goKS5jYXRjaChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgbmUkMShvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCB0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQucHJvdG90eXBlLm9uU2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgdGhpcy5fdmlzaWJpbGl0eUNoYW5nZUxpc3RlbmVyKSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQ7XG4gIH0oTnQpXG4pLCBVdCA9IDgsIEZ0ID0gMTYsIEd0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVRyYWNlSWQgPSBxKEZ0KSwgdGhpcy5nZW5lcmF0ZVNwYW5JZCA9IHEoVXQpO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSgpXG4pLCB4ID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gcShlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUgKiAyOyByKyspXG4gICAgICB4W3JdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIHhbcl0gPj0gNTggJiYgKHhbcl0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHguc2xpY2UoMCwgZSAqIDIpKTtcbiAgfTtcbn1cbnZhciB6dCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIsIG4pIHtcbiAgICAgIHRoaXMuX3RyYWNlclByb3ZpZGVyID0gbjtcbiAgICAgIHZhciBvID0gSXQocik7XG4gICAgICB0aGlzLl9zYW1wbGVyID0gby5zYW1wbGVyLCB0aGlzLl9nZW5lcmFsTGltaXRzID0gby5nZW5lcmFsTGltaXRzLCB0aGlzLl9zcGFuTGltaXRzID0gby5zcGFuTGltaXRzLCB0aGlzLl9pZEdlbmVyYXRvciA9IHIuaWRHZW5lcmF0b3IgfHwgbmV3IEd0KCksIHRoaXMucmVzb3VyY2UgPSBuLnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc3RhcnRTcGFuID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICB2YXIgbywgaSwgYTtcbiAgICAgIHIkMSA9PT0gdm9pZCAwICYmIChyJDEgPSB7fSksIG4gPT09IHZvaWQgMCAmJiAobiA9IHhlLmFjdGl2ZSgpKSwgciQxLnJvb3QgJiYgKG4gPSBqZS5kZWxldGVTcGFuKG4pKTtcbiAgICAgIHZhciBzID0gamUuZ2V0U3BhbihuKTtcbiAgICAgIGlmICh3KG4pKSB7XG4gICAgICAgIHIuZGVidWcoXCJJbnN0cnVtZW50YXRpb24gc3VwcHJlc3NlZCwgcmV0dXJuaW5nIE5vb3AgU3BhblwiKTtcbiAgICAgICAgdmFyIGwgPSBqZS53cmFwU3BhbkNvbnRleHQoV2kpO1xuICAgICAgICByZXR1cm4gbDtcbiAgICAgIH1cbiAgICAgIHZhciB1ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zcGFuQ29udGV4dCgpLCBwJDEgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVNwYW5JZCgpLCBmLCBjLCB5O1xuICAgICAgIXUgfHwgIWplLmlzU3BhbkNvbnRleHRWYWxpZCh1KSA/IGYgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVRyYWNlSWQoKSA6IChmID0gdS50cmFjZUlkLCBjID0gdS50cmFjZVN0YXRlLCB5ID0gdS5zcGFuSWQpO1xuICAgICAgdmFyIG0gPSAobyA9IHIkMS5raW5kKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogc3QuSU5URVJOQUwsIEYgPSAoKGkgPSByJDEubGlua3MpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBbXSkubWFwKGZ1bmN0aW9uKGopIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZXh0OiBqLmNvbnRleHQsXG4gICAgICAgICAgYXR0cmlidXRlczogWmUoai5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuICAgICAgfSksIEcgPSBaZShyJDEuYXR0cmlidXRlcyksIGIgPSB0aGlzLl9zYW1wbGVyLnNob3VsZFNhbXBsZShuLCBmLCB0LCBtLCBHLCBGKTtcbiAgICAgIGMgPSAoYSA9IGIudHJhY2VTdGF0ZSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IGM7XG4gICAgICB2YXIgdHQgPSBiLmRlY2lzaW9uID09PSBwLlJFQ09SRF9BTkRfU0FNUExFRCA/IHp0JDEuU0FNUExFRCA6IHp0JDEuTk9ORSwgeiA9IHsgdHJhY2VJZDogZiwgc3BhbklkOiBwJDEsIHRyYWNlRmxhZ3M6IHR0LCB0cmFjZVN0YXRlOiBjIH07XG4gICAgICBpZiAoYi5kZWNpc2lvbiA9PT0gcC5OT1RfUkVDT1JEKSB7XG4gICAgICAgIHIuZGVidWcoXCJSZWNvcmRpbmcgaXMgb2ZmLCBwcm9wYWdhdGluZyBjb250ZXh0IGluIGEgbm9uLXJlY29yZGluZyBzcGFuXCIpO1xuICAgICAgICB2YXIgbCA9IGplLndyYXBTcGFuQ29udGV4dCh6KTtcbiAgICAgICAgcmV0dXJuIGw7XG4gICAgICB9XG4gICAgICB2YXIgZXQgPSBaZShPYmplY3QuYXNzaWduKEcsIGIuYXR0cmlidXRlcykpLCBydCA9IG5ldyBPdCh0aGlzLCBuLCB0LCB6LCBtLCB5LCBGLCByJDEuc3RhcnRUaW1lLCB2b2lkIDAsIGV0KTtcbiAgICAgIHJldHVybiBydDtcbiAgICB9LCBlLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW4gPSBmdW5jdGlvbih0LCByLCBuLCBvKSB7XG4gICAgICB2YXIgaSwgYSwgcztcbiAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPCAyKSkge1xuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gcyA9IHIgOiBhcmd1bWVudHMubGVuZ3RoID09PSAzID8gKGkgPSByLCBzID0gbikgOiAoaSA9IHIsIGEgPSBuLCBzID0gbyk7XG4gICAgICAgIHZhciBsID0gYSA/PyB4ZS5hY3RpdmUoKSwgdSA9IHRoaXMuc3RhcnRTcGFuKHQsIGksIGwpLCBwID0gamUuc2V0U3BhbihsLCB1KTtcbiAgICAgICAgcmV0dXJuIHhlLndpdGgocCwgcywgdm9pZCAwLCB1KTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5nZXRHZW5lcmFsTGltaXRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2VuZXJhbExpbWl0cztcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRTcGFuTGltaXRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkxpbWl0cztcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2VyUHJvdmlkZXIuZ2V0QWN0aXZlU3BhblByb2Nlc3NvcigpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTyA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHIgPSB0ICYmIGVbdF0sIG4gPSAwO1xuICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHQgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBLID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdGhpcy5fc3BhblByb2Nlc3NvcnMgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQsIHIsIG4gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgaSA9IG8ubmV4dCgpOyAhaS5kb25lOyBpID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgICAgbi5wdXNoKGEuZm9yY2VGbHVzaCgpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0ID0geyBlcnJvcjogcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpICYmICFpLmRvbmUgJiYgKHIgPSBvLnJldHVybikgJiYgci5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocykge1xuICAgICAgICBQcm9taXNlLmFsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHMoKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgIG5lJDEobCB8fCBuZXcgRXJyb3IoXCJNdWx0aVNwYW5Qcm9jZXNzb3I6IGZvcmNlRmx1c2ggZmFpbGVkXCIpKSwgcygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbiwgbztcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgYSA9IGkubmV4dCgpOyAhYS5kb25lOyBhID0gaS5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgcyA9IGEudmFsdWU7XG4gICAgICAgICAgcy5vblN0YXJ0KHQsIHIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIG4gPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEgJiYgIWEuZG9uZSAmJiAobyA9IGkucmV0dXJuKSAmJiBvLmNhbGwoaSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByLCBuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gaS52YWx1ZTtcbiAgICAgICAgICBhLm9uRW5kKHQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiBzIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQsIHIsIG4gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgaSA9IG8ubmV4dCgpOyAhaS5kb25lOyBpID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgICAgbi5wdXNoKGEuc2h1dGRvd24oKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgdCA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChyID0gby5yZXR1cm4pICYmIHIuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodCkgdGhyb3cgdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMsIGwpIHtcbiAgICAgICAgUHJvbWlzZS5hbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBzKCk7XG4gICAgICAgIH0sIGwpO1xuICAgICAgfSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBqdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIFZ0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIG8sIGkgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKG8gPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBhID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBrdCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBvID0gdC5sZW5ndGgsIGk7IG4gPCBvOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCBTO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLnJlc29sdmVkID0gMF0gPSBcInJlc29sdmVkXCIsIGVbZS50aW1lb3V0ID0gMV0gPSBcInRpbWVvdXRcIiwgZVtlLmVycm9yID0gMl0gPSBcImVycm9yXCIsIGVbZS51bnJlc29sdmVkID0gM10gPSBcInVucmVzb2x2ZWRcIjtcbn0pKFMgfHwgKFMgPSB7fSkpO1xudmFyIHJlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0ge30pO1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMgPSBbXSwgdGhpcy5fdHJhY2VycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICB2YXIgbyA9IGtyKHt9LCBKKCksIE10KHQpKTtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlID0gKHIgPSBvLnJlc291cmNlKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogUiQxLmVtcHR5KCksIG8ubWVyZ2VSZXNvdXJjZVdpdGhEZWZhdWx0cyAmJiAodGhpcy5yZXNvdXJjZSA9IFIkMS5kZWZhdWx0KCkubWVyZ2UodGhpcy5yZXNvdXJjZSkpLCB0aGlzLl9jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlXG4gICAgICB9KSwgISgobiA9IHQuc3BhblByb2Nlc3NvcnMpID09PSBudWxsIHx8IG4gPT09IHZvaWQgMCkgJiYgbi5sZW5ndGgpXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyA9IGt0KFtdLCBWdCh0LnNwYW5Qcm9jZXNzb3JzKSwgITEpLCB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBuZXcgSyh0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5fYnVpbGRFeHBvcnRlckZyb21FbnYoKTtcbiAgICAgICAgaWYgKGkgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHZhciBhID0gbmV3IER0KGkpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IGE7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IG5ldyBqdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgdmFyIG8gPSB0ICsgXCJAXCIgKyAociB8fCBcIlwiKSArIFwiOlwiICsgKChuID09IG51bGwgPyB2b2lkIDAgOiBuLnNjaGVtYVVybCkgfHwgXCJcIik7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhY2Vycy5oYXMobykgfHwgdGhpcy5fdHJhY2Vycy5zZXQobywgbmV3IHp0KHsgbmFtZTogdCwgdmVyc2lvbjogciwgc2NoZW1hVXJsOiBuID09IG51bGwgPyB2b2lkIDAgOiBuLnNjaGVtYVVybCB9LCB0aGlzLl9jb25maWcsIHRoaXMpKSwgdGhpcy5fdHJhY2Vycy5nZXQobyk7XG4gICAgfSwgZS5wcm90b3R5cGUuYWRkU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycy5sZW5ndGggPT09IDAgJiYgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCkuY2F0Y2goZnVuY3Rpb24ociQxKSB7XG4gICAgICAgIHJldHVybiByLmVycm9yKFwiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIHNodXRkb3duIGN1cnJlbnQgc3BhbiBwcm9jZXNzb3JcIiwgciQxKTtcbiAgICAgIH0pLCB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMucHVzaCh0KSwgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gbmV3IEsodGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yO1xuICAgIH0sIGUucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24odCkge1xuICAgICAgdCA9PT0gdm9pZCAwICYmICh0ID0ge30pLCBqZS5zZXRHbG9iYWxUcmFjZXJQcm92aWRlcih0aGlzKSwgdC5wcm9wYWdhdG9yID09PSB2b2lkIDAgJiYgKHQucHJvcGFnYXRvciA9IHRoaXMuX2J1aWxkUHJvcGFnYXRvckZyb21FbnYoKSksIHQuY29udGV4dE1hbmFnZXIgJiYgeGUuc2V0R2xvYmFsQ29udGV4dE1hbmFnZXIodC5jb250ZXh0TWFuYWdlciksIHQucHJvcGFnYXRvciAmJiB5Xy5zZXRHbG9iYWxQcm9wYWdhdG9yKHQucHJvcGFnYXRvcik7XG4gICAgfSwgZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jb25maWcuZm9yY2VGbHVzaFRpbWVvdXRNaWxsaXMsIHIgPSB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICB2YXIgaSwgYSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBvKG5ldyBFcnJvcihcIlNwYW4gcHJvY2Vzc29yIGRpZCBub3QgY29tcGxldGVkIHdpdGhpbiB0aW1lb3V0IHBlcmlvZCBvZiBcIiArIHQgKyBcIiBtc1wiKSksIGkgPSBTLnRpbWVvdXQ7XG4gICAgICAgICAgfSwgdCk7XG4gICAgICAgICAgbi5mb3JjZUZsdXNoKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhKSwgaSAhPT0gUy50aW1lb3V0ICYmIChpID0gUy5yZXNvbHZlZCwgbyhpKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGEpLCBpID0gUy5lcnJvciwgbyhzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLCBvKSB7XG4gICAgICAgIFByb21pc2UuYWxsKHIpLnRoZW4oZnVuY3Rpb24oaSkge1xuICAgICAgICAgIHZhciBhID0gaS5maWx0ZXIoZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgcmV0dXJuIHMgIT09IFMucmVzb2x2ZWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYS5sZW5ndGggPiAwID8gbyhhKSA6IG4oKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgIHJldHVybiBvKFtpXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3Iuc2h1dGRvd24oKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0UHJvcGFnYXRvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5jb25zdHJ1Y3Rvci5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzLmdldCh0KSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRTcGFuRXhwb3J0ZXIgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcjtcbiAgICAgIHJldHVybiAociA9IHRoaXMuY29uc3RydWN0b3IuX3JlZ2lzdGVyZWRFeHBvcnRlcnMuZ2V0KHQpKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2J1aWxkUHJvcGFnYXRvckZyb21FbnYgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcywgciQxID0gQXJyYXkuZnJvbShuZXcgU2V0KE9UKCkuT1RFTF9QUk9QQUdBVE9SUykpLCBuID0gciQxLm1hcChmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBhID0gdC5fZ2V0UHJvcGFnYXRvcihpKTtcbiAgICAgICAgcmV0dXJuIGEgfHwgci53YXJuKCdQcm9wYWdhdG9yIFwiJyArIGkgKyAnXCIgcmVxdWVzdGVkIHRocm91Z2ggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgdW5hdmFpbGFibGUuJyksIGE7XG4gICAgICB9KSwgbyA9IG4ucmVkdWNlKGZ1bmN0aW9uKGksIGEpIHtcbiAgICAgICAgcmV0dXJuIGEgJiYgaS5wdXNoKGEpLCBpO1xuICAgICAgfSwgW10pO1xuICAgICAgaWYgKG8ubGVuZ3RoICE9PSAwKVxuICAgICAgICByZXR1cm4gciQxLmxlbmd0aCA9PT0gMSA/IG9bMF0gOiBuZXcgcHIoe1xuICAgICAgICAgIHByb3BhZ2F0b3JzOiBvXG4gICAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9idWlsZEV4cG9ydGVyRnJvbUVudiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSBPVCgpLk9URUxfVFJBQ0VTX0VYUE9SVEVSO1xuICAgICAgaWYgKCEodCA9PT0gXCJub25lXCIgfHwgdCA9PT0gXCJcIikpIHtcbiAgICAgICAgdmFyIHIkMSA9IHRoaXMuX2dldFNwYW5FeHBvcnRlcih0KTtcbiAgICAgICAgcmV0dXJuIHIkMSB8fCByLmVycm9yKCdFeHBvcnRlciBcIicgKyB0ICsgJ1wiIHJlcXVlc3RlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuYXZhaWxhYmxlLicpLCByJDE7XG4gICAgICB9XG4gICAgfSwgZS5fcmVnaXN0ZXJlZFByb3BhZ2F0b3JzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoW1xuICAgICAgW1widHJhY2Vjb250ZXh0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IGJyKCk7XG4gICAgICB9XSxcbiAgICAgIFtcImJhZ2dhZ2VcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgSmUoKTtcbiAgICAgIH1dXG4gICAgXSksIGUuX3JlZ2lzdGVyZWRFeHBvcnRlcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLCBlO1xuICB9KClcbiksIEh0ID0gZnVuY3Rpb24oZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgciA9IHQgJiYgZVt0XSwgbiA9IDA7XG4gIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIG5lID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKHQsIHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VuZFNwYW5zKFtdKSwgdGhpcy5mb3JjZUZsdXNoKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9leHBvcnRJbmZvID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHQucmVzb3VyY2UuYXR0cmlidXRlc1xuICAgICAgICB9LFxuICAgICAgICBpbnN0cnVtZW50YXRpb25TY29wZTogdC5pbnN0cnVtZW50YXRpb25MaWJyYXJ5LFxuICAgICAgICB0cmFjZUlkOiB0LnNwYW5Db250ZXh0KCkudHJhY2VJZCxcbiAgICAgICAgcGFyZW50SWQ6IHQucGFyZW50U3BhbklkLFxuICAgICAgICB0cmFjZVN0YXRlOiAociA9IHQuc3BhbkNvbnRleHQoKS50cmFjZVN0YXRlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnNlcmlhbGl6ZSgpLFxuICAgICAgICBuYW1lOiB0Lm5hbWUsXG4gICAgICAgIGlkOiB0LnNwYW5Db250ZXh0KCkuc3BhbklkLFxuICAgICAgICBraW5kOiB0LmtpbmQsXG4gICAgICAgIHRpbWVzdGFtcDoga2UodC5zdGFydFRpbWUpLFxuICAgICAgICBkdXJhdGlvbjoga2UodC5kdXJhdGlvbiksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHQuYXR0cmlidXRlcyxcbiAgICAgICAgc3RhdHVzOiB0LnN0YXR1cyxcbiAgICAgICAgZXZlbnRzOiB0LmV2ZW50cyxcbiAgICAgICAgbGlua3M6IHQubGlua3NcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUuX3NlbmRTcGFucyA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICAgIHZhciBuLCBvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IEh0KHQpLCBhJDEgPSBpLm5leHQoKTsgIWEkMS5kb25lOyBhJDEgPSBpLm5leHQoKSkge1xuICAgICAgICAgIHZhciBzID0gYSQxLnZhbHVlO1xuICAgICAgICAgIGNvbnNvbGUuZGlyKHRoaXMuX2V4cG9ydEluZm8ocyksIHsgZGVwdGg6IDMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgbiA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYSQxICYmICFhJDEuZG9uZSAmJiAobyA9IGkucmV0dXJuKSAmJiBvLmNhbGwoaSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyKVxuICAgICAgICByZXR1cm4gcih7IGNvZGU6IGEuU1VDQ0VTUyB9KTtcbiAgICB9LCBlO1xuICB9KClcbiksIFF0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIG8sIGkgPSBbXSwgYTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKG8gPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBhID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBYdCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBvID0gdC5sZW5ndGgsIGk7IG4gPCBvOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCBpZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdLCB0aGlzLl9zdG9wcGVkID0gITE7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbjtcbiAgICAgIGlmICh0aGlzLl9zdG9wcGVkKVxuICAgICAgICByZXR1cm4gcih7XG4gICAgICAgICAgY29kZTogYS5GQUlMRUQsXG4gICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcIkV4cG9ydGVyIGhhcyBiZWVuIHN0b3BwZWRcIilcbiAgICAgICAgfSk7XG4gICAgICAobiA9IHRoaXMuX2ZpbmlzaGVkU3BhbnMpLnB1c2guYXBwbHkobiwgWHQoW10sIFF0KHQpLCAhMSkpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcih7IGNvZGU6IGEuU1VDQ0VTUyB9KTtcbiAgICAgIH0sIDApO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RvcHBlZCA9ICEwLCB0aGlzLl9maW5pc2hlZFNwYW5zID0gW10sIHRoaXMuZm9yY2VGbHVzaCgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdO1xuICAgIH0sIGUucHJvdG90eXBlLmdldEZpbmlzaGVkU3BhbnMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZFNwYW5zO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgV3QgPSBmdW5jdGlvbihlLCB0LCByLCBuKSB7XG4gIGZ1bmN0aW9uIG8oaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgciA/IGkgOiBuZXcgcihmdW5jdGlvbihhKSB7XG4gICAgICBhKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHIgfHwgKHIgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgYSkge1xuICAgIGZ1bmN0aW9uIHMocCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShuLm5leHQocCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBhKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsKHApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi50aHJvdyhwKSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIGEoZik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUocCkge1xuICAgICAgcC5kb25lID8gaShwLnZhbHVlKSA6IG8ocC52YWx1ZSkudGhlbihzLCBsKTtcbiAgICB9XG4gICAgdSgobiA9IG4uYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIFl0ID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmIChpWzBdICYgMSkgdGhyb3cgaVsxXTtcbiAgICByZXR1cm4gaVsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgbiwgbywgaSwgYTtcbiAgcmV0dXJuIGEgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGFbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgYTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBsKFt1LCBwXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBsKHUpIHtcbiAgICBpZiAobikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IHI7ICkgdHJ5IHtcbiAgICAgIGlmIChuID0gMSwgbyAmJiAoaSA9IHVbMF0gJiAyID8gby5yZXR1cm4gOiB1WzBdID8gby50aHJvdyB8fCAoKGkgPSBvLnJldHVybikgJiYgaS5jYWxsKG8pLCAwKSA6IG8ubmV4dCkgJiYgIShpID0gaS5jYWxsKG8sIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAobyA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByLmxhYmVsKyssIG8gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSByLnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICByID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiByLmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHIubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gaVsyXSwgci5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gdC5jYWxsKGUsIHIpO1xuICAgIH0gY2F0Y2ggKHApIHtcbiAgICAgIHUgPSBbNiwgcF0sIG8gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6ICEwIH07XG4gIH1cbn0sIG9lID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdGhpcy5fZXhwb3J0ZXIgPSB0LCB0aGlzLl9zaHV0ZG93bk9uY2UgPSBuZXcgWnIodGhpcy5fc2h1dGRvd24sIHRoaXMpLCB0aGlzLl91bnJlc29sdmVkRXhwb3J0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gV3QodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gWXQodGhpcywgZnVuY3Rpb24odCkge1xuICAgICAgICAgIHN3aXRjaCAodC5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICByZXR1cm4gWzQsIFByb21pc2UuYWxsKEFycmF5LmZyb20odGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMpKV07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiB0LnNlbnQoKSwgdGhpcy5fZXhwb3J0ZXIuZm9yY2VGbHVzaCA/IFs0LCB0aGlzLl9leHBvcnRlci5mb3JjZUZsdXNoKCldIDogWzMsIDNdO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICB0LnNlbnQoKSwgdC5sYWJlbCA9IDM7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5vbkVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByID0gdGhpcywgbiwgbztcbiAgICAgIGlmICghdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkICYmIHQuc3BhbkNvbnRleHQoKS50cmFjZUZsYWdzICYgenQkMS5TQU1QTEVEKSB7XG4gICAgICAgIHZhciBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHR0Ll9leHBvcnQoci5fZXhwb3J0ZXIsIFt0XSkudGhlbihmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICB2YXIgbDtcbiAgICAgICAgICAgIHMuY29kZSAhPT0gYS5TVUNDRVNTICYmIG5lJDEoKGwgPSBzLmVycm9yKSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogbmV3IEVycm9yKFwiU2ltcGxlU3BhblByb2Nlc3Nvcjogc3BhbiBleHBvcnQgZmFpbGVkIChzdGF0dXMgXCIgKyBzICsgXCIpXCIpKTtcbiAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihzKSB7XG4gICAgICAgICAgICBuZSQxKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nKSB7XG4gICAgICAgICAgdmFyIGEkMSA9IChvID0gKG4gPSB0LnJlc291cmNlKS53YWl0Rm9yQXN5bmNBdHRyaWJ1dGVzKSA9PT0gbnVsbCB8fCBvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvLmNhbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBhJDEgIT0gbnVsbCAmJiByLl91bnJlc29sdmVkRXhwb3J0cy5kZWxldGUoYSQxKSwgaSgpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZSQxKHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGEkMSAhPSBudWxsICYmIHRoaXMuX3VucmVzb2x2ZWRFeHBvcnRzLmFkZChhJDEpO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICBpKCk7XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaHV0ZG93bk9uY2UuY2FsbCgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2V4cG9ydGVyLnNodXRkb3duKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pO1xuXG5leHBvcnQgeyBEdCBhcyBELCBHdCBhcyBHLCBJLCBPdCBhcyBPLCBQLCBTLCBXLCBEIGFzIGEsIGcsIGllIGFzIGksIGp0IGFzIGosIG5lIGFzIG4sIG9lIGFzIG8sIHJlIGFzIHIsIHp0IGFzIHogfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxLQUFLQyxHQUFNLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxJQUFJLEtBQUssSUFBSSxLQUFLQyxVQUFVO0FBQ3pGLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLE1BQU1DLEdBQUksTUFBTUMsSUFBSSxNQUFNQyxHQUFHLEtBQUtDLElBQUksS0FBS0MsR0FBSyxNQUFNQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLEtBQUtDLElBQUksTUFBTUMsR0FBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDOUksU0FBUyxLQUFBQyxJQUFHLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFBQyxJQUFHLEtBQUFDLEdBQUcsS0FBS0MsSUFBSSxLQUFLQyxJQUFJLEtBQUtDLElBQUksS0FBS0MsSUFBSyxLQUFLQyxJQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxVQUFVO0FBQ3JILFNBQVMsTUFBTUMsR0FBSyxLQUFLQyxHQUFJLE1BQU1DLElBQUksTUFBTUMsSUFBSyxNQUFNQyxVQUFTO0FBQ2pFLFNBQVMsS0FBS0MsU0FBVztBQUN6QixTQUFTLEtBQUFDLFNBQVM7QUFFbEIsSUFBSUMsS0FBSyxhQUFhLElBQUksV0FBVztBQUNuQyxTQUFPLElBQUksT0FBTyxVQUFVLFNBQVMsR0FBRztBQUN0QyxhQUFTLEdBQUcsSUFBSSxHQUFHLElBQUksVUFBVSxRQUFRLElBQUksR0FBRyxLQUFLO0FBQ25ELFVBQUksVUFBVSxDQUFDO0FBQ2YsZUFBU0MsS0FBSyxFQUFHLFFBQU8sVUFBVSxlQUFlLEtBQUssR0FBR0EsQ0FBQyxNQUFNLEVBQUVBLENBQUMsSUFBSSxFQUFFQSxDQUFDO0FBQUEsSUFDNUU7QUFDQSxXQUFPO0FBQUEsRUFDVCxHQUFHLEVBQUUsTUFBTSxNQUFNLFNBQVM7QUFDNUIsR0FBR0MsS0FBSyxTQUFTLEdBQUc7QUFDbEIsTUFBSSxJQUFJLE9BQU8sVUFBVSxjQUFjLE9BQU8sVUFBVSxJQUFJLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSTtBQUMzRSxNQUFJLEVBQUcsUUFBTyxFQUFFLEtBQUssQ0FBQztBQUN0QixNQUFJLEtBQUssT0FBTyxFQUFFLFVBQVUsU0FBVSxRQUFPO0FBQUEsSUFDM0MsTUFBTSxXQUFXO0FBQ2YsYUFBTyxLQUFLLEtBQUssRUFBRSxXQUFXLElBQUksU0FBUyxFQUFFLE9BQU8sS0FBSyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRTtBQUFBLElBQzVFO0FBQUEsRUFDRjtBQUNBLFFBQU0sSUFBSSxVQUFVLElBQUksNEJBQTRCLGlDQUFpQztBQUN2RixHQUFHQyxJQUFJLFNBQVMsR0FBRyxHQUFHO0FBQ3BCLE1BQUksSUFBSSxPQUFPLFVBQVUsY0FBYyxFQUFFLE9BQU8sUUFBUTtBQUN4RCxNQUFJLENBQUMsRUFBRyxRQUFPO0FBQ2YsTUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUdGLEdBQUdHLElBQUksQ0FBQyxHQUFHTDtBQUM5QixNQUFJO0FBQ0YsWUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLEVBQUVFLElBQUksRUFBRSxLQUFLLEdBQUcsT0FBUSxDQUFBRyxFQUFFLEtBQUtILEVBQUUsS0FBSztBQUFBLEVBQzVFLFNBQVNJLEdBQUc7QUFDVixJQUFBTixJQUFJLEVBQUUsT0FBT00sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQUosS0FBSyxDQUFDQSxFQUFFLFNBQVMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSUYsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0s7QUFDVCxHQUFHRSxLQUFLLFNBQVMsR0FBRyxHQUFHLEdBQUc7QUFDeEIsTUFBSSxVQUFVLFdBQVcsRUFBRyxVQUFTLElBQUksR0FBR0wsSUFBSSxFQUFFLFFBQVFHLEdBQUcsSUFBSUgsR0FBRztBQUNsRSxLQUFDRyxLQUFLLEVBQUUsS0FBSyxRQUFRQSxNQUFNQSxJQUFJLE1BQU0sVUFBVSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSUEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2pGLFNBQU8sRUFBRSxPQUFPQSxLQUFLLE1BQU0sVUFBVSxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3BELEdBQUdHO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTLEVBQUUsR0FBRyxHQUFHLEdBQUdOLEdBQUdHLEdBQUdMLEdBQUdNLEdBQUdHLEdBQUcsR0FBR3hCLEdBQUc7QUFDdkMsTUFBQXFCLE1BQU0sV0FBV0EsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLEdBQUcsS0FBSywwQkFBMEIsR0FBRyxLQUFLLHNCQUFzQixHQUFHLEtBQUsscUJBQXFCLEdBQUcsS0FBSyxTQUFTO0FBQUEsUUFDNUwsTUFBTXhDLEdBQUc7QUFBQSxNQUNYLEdBQUcsS0FBSyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxlQUFlb0MsR0FBRyxLQUFLLGVBQWVGLEdBQUcsS0FBSyxPQUFPSyxHQUFHLEtBQUssUUFBUUM7QUFDaEssVUFBSUksSUFBSSxLQUFLLElBQUk7QUFDakIsV0FBSyx3QkFBd0J4QyxFQUFFLElBQUksR0FBRyxLQUFLLHFCQUFxQndDLEtBQUssS0FBSyx3QkFBd0IvQixHQUFHLElBQUksS0FBSyxxQkFBcUI4QixLQUFLLE1BQU0sS0FBSyxZQUFZLEtBQUssU0FBU0EsS0FBS0MsQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFLFVBQVUsS0FBSyx5QkFBeUIsRUFBRSx3QkFBd0IsS0FBSyxjQUFjLEVBQUUsY0FBYyxHQUFHLEtBQUssNkJBQTZCLEtBQUssWUFBWSw2QkFBNkIsR0FBR3pCLEtBQUssUUFBUSxLQUFLLGNBQWNBLENBQUMsR0FBRyxLQUFLLGlCQUFpQixFQUFFLHVCQUF1QixHQUFHLEtBQUssZUFBZSxRQUFRLE1BQU0sQ0FBQztBQUFBLElBQzlmO0FBQ0EsV0FBTyxFQUFFLFVBQVUsY0FBYyxXQUFXO0FBQzFDLGFBQU8sS0FBSztBQUFBLElBQ2QsR0FBRyxFQUFFLFVBQVUsZUFBZSxTQUFTLEdBQUdTLEdBQUs7QUFDN0MsYUFBT0EsS0FBTyxRQUFRLEtBQUssYUFBYSxJQUFJLE9BQU8sRUFBRSxXQUFXLEtBQUszQixFQUFFLEtBQUssNEJBQTRCLENBQUMsR0FBRyxRQUFRYyxHQUFFYSxDQUFHLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLFVBQVUsS0FBSyxZQUFZLHVCQUF1QixDQUFDLE9BQU8sVUFBVSxlQUFlLEtBQUssS0FBSyxZQUFZLENBQUMsS0FBSyxLQUFLLDJCQUEyQixTQUFTLEtBQUssV0FBVyxDQUFDLElBQUksS0FBSyxnQkFBZ0JBLENBQUcsR0FBRyxTQUFTM0IsRUFBRSxLQUFLLDBDQUEwQyxDQUFDLEdBQUc7QUFBQSxJQUNsYSxHQUFHLEVBQUUsVUFBVSxnQkFBZ0IsU0FBUyxHQUFHO0FBQ3pDLFVBQUksR0FBRztBQUNQLFVBQUk7QUFDRixpQkFBU21DLElBQUlDLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQyxHQUFHRSxJQUFJSCxFQUFFLEtBQUssR0FBRyxDQUFDRyxFQUFFLE1BQU1BLElBQUlILEVBQUUsS0FBSyxHQUFHO0FBQ3ZFLGNBQUlGLElBQUlJLEVBQUVDLEVBQUUsT0FBTyxDQUFDLEdBQUdDLElBQUlOLEVBQUUsQ0FBQyxHQUFHUyxJQUFJVCxFQUFFLENBQUM7QUFDeEMsZUFBSyxhQUFhTSxHQUFHRyxDQUFDO0FBQUEsUUFDeEI7QUFBQSxNQUNGLFNBQVMsR0FBRztBQUNWLFlBQUksRUFBRSxPQUFPLEVBQUU7QUFBQSxNQUNqQixVQUFFO0FBQ0EsWUFBSTtBQUNGLFVBQUFKLEtBQUssQ0FBQ0EsRUFBRSxTQUFTLElBQUlILEVBQUUsV0FBVyxFQUFFLEtBQUtBLENBQUM7QUFBQSxRQUM1QyxVQUFFO0FBQ0EsY0FBSSxFQUFHLE9BQU0sRUFBRTtBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUNBLGFBQU87QUFBQSxJQUNULEdBQUcsRUFBRSxVQUFVLFdBQVcsU0FBUyxHQUFHUixHQUFLLEdBQUc7QUFDNUMsVUFBSSxLQUFLLGFBQWE7QUFDcEIsZUFBTztBQUNULFVBQUksS0FBSyxZQUFZLG9CQUFvQjtBQUN2QyxlQUFPM0IsRUFBRSxLQUFLLG9CQUFvQixHQUFHLEtBQUssdUJBQXVCO0FBQ25FLFdBQUssT0FBTyxVQUFVLEtBQUssWUFBWSxvQkFBb0IsS0FBSyx3QkFBd0IsS0FBS0EsRUFBRSxNQUFNLHdCQUF3QixHQUFHLEtBQUssT0FBTyxNQUFNLEdBQUcsS0FBSyx3QkFBd0JDLEVBQUcwQixDQUFHLE1BQU0xQixFQUFHLENBQUMsTUFBTSxJQUFJMEIsSUFBTUEsSUFBTTtBQUN4TixVQUFJUSxJQUFJcEIsRUFBR1ksQ0FBRztBQUNkLGFBQU8sS0FBSyxPQUFPLEtBQUs7QUFBQSxRQUN0QixNQUFNO0FBQUEsUUFDTixZQUFZUTtBQUFBLFFBQ1osTUFBTSxLQUFLLFNBQVMsQ0FBQztBQUFBLFFBQ3JCLHdCQUF3QjtBQUFBLE1BQzFCLENBQUMsR0FBRztBQUFBLElBQ04sR0FBRyxFQUFFLFVBQVUsVUFBVSxTQUFTLEdBQUc7QUFDbkMsYUFBTyxLQUFLLE1BQU0sS0FBSyxDQUFDLEdBQUc7QUFBQSxJQUM3QixHQUFHLEVBQUUsVUFBVSxXQUFXLFNBQVMsR0FBRztBQUNwQyxVQUFJO0FBQ0osY0FBUSxJQUFJLEtBQUssT0FBTyxLQUFLLE1BQU0sR0FBR0ssR0FBRyxDQUFDLEdBQUdILEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQUEsSUFDM0QsR0FBRyxFQUFFLFVBQVUsWUFBWSxTQUFTLEdBQUc7QUFDckMsYUFBTyxLQUFLLGFBQWEsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxPQUFPLFdBQVcsUUFBUSxPQUFPLEVBQUUsV0FBVyxhQUFhckMsRUFBRSxLQUFLLDhDQUE4QyxPQUFPLEVBQUUsVUFBVSxzQkFBc0IsR0FBRyxPQUFPLEtBQUssT0FBTyxVQUFVO0FBQUEsSUFDN1AsR0FBRyxFQUFFLFVBQVUsYUFBYSxTQUFTLEdBQUc7QUFDdEMsYUFBTyxLQUFLLGFBQWEsSUFBSSxRQUFRLEtBQUssT0FBTyxHQUFHO0FBQUEsSUFDdEQsR0FBRyxFQUFFLFVBQVUsTUFBTSxTQUFTLEdBQUc7QUFDL0IsVUFBSSxLQUFLLGFBQWEsR0FBRztBQUN2QixRQUFBQSxFQUFFLE1BQU0sS0FBSyxPQUFPLE1BQU0sS0FBSyxhQUFhLFVBQVUsTUFBTSxLQUFLLGFBQWEsU0FBUyw0Q0FBNEM7QUFDbkk7QUFBQSxNQUNGO0FBQ0EsV0FBSyxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUssU0FBUyxDQUFDLEdBQUcsS0FBSyxZQUFZRSxHQUFHLEtBQUssV0FBVyxLQUFLLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE1BQU1GLEVBQUUsS0FBSyx1RkFBdUYsS0FBSyxXQUFXLEtBQUssT0FBTyxHQUFHLEtBQUssVUFBVSxLQUFLLFVBQVUsTUFBTSxHQUFHLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssc0JBQXNCLEtBQUtBLEVBQUUsS0FBSyxhQUFhLEtBQUssc0JBQXNCLHlDQUF5QyxHQUFHLEtBQUssZUFBZSxNQUFNLElBQUk7QUFBQSxJQUN6ZCxHQUFHLEVBQUUsVUFBVSxXQUFXLFNBQVMsR0FBRztBQUNwQyxVQUFJLE9BQU8sS0FBSyxZQUFZLEtBQUtHLEVBQUUsSUFBSTtBQUNyQyxlQUFPQyxHQUFHLElBQUksS0FBSyxrQkFBa0I7QUFDdkMsVUFBSSxPQUFPLEtBQUs7QUFDZCxlQUFPQyxFQUFJLENBQUM7QUFDZCxVQUFJLGFBQWE7QUFDZixlQUFPQSxFQUFJLEVBQUUsUUFBUSxDQUFDO0FBQ3hCLFVBQUlDLEdBQUcsQ0FBQztBQUNOLGVBQU87QUFDVCxVQUFJLEtBQUs7QUFDUCxlQUFPRCxFQUFJLEtBQUssSUFBSSxDQUFDO0FBQ3ZCLFVBQUksSUFBSUYsRUFBRSxJQUFJLElBQUksS0FBSztBQUN2QixhQUFPSSxHQUFHLEtBQUssV0FBV0YsRUFBSSxDQUFDLENBQUM7QUFBQSxJQUNsQyxHQUFHLEVBQUUsVUFBVSxjQUFjLFdBQVc7QUFDdEMsYUFBTyxLQUFLLFdBQVc7QUFBQSxJQUN6QixHQUFHLEVBQUUsVUFBVSxrQkFBa0IsU0FBUyxHQUFHc0IsR0FBSztBQUNoRCxVQUFJLElBQUksQ0FBQztBQUNULGFBQU8sS0FBSyxXQUFXLEVBQUVsQixDQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFRCxDQUFFLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRUEsQ0FBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRUMsQ0FBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFTCxDQUFFLEtBQUssRUFBRUMsQ0FBRSxJQUFJLEtBQUssU0FBU3lCLElBQUksR0FBR1AsQ0FBRyxJQUFJM0IsRUFBRSxLQUFLLG1DQUFtQyxDQUFDO0FBQUEsSUFDclEsR0FBRyxPQUFPLGVBQWUsRUFBRSxXQUFXLFlBQVk7QUFBQSxNQUNoRCxLQUFLLFdBQVc7QUFDZCxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHLE9BQU8sZUFBZSxFQUFFLFdBQVcsU0FBUztBQUFBLE1BQzlDLEtBQUssV0FBVztBQUNkLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQSxNQUNBLFlBQVk7QUFBQSxNQUNaLGNBQWM7QUFBQSxJQUNoQixDQUFDLEdBQUcsT0FBTyxlQUFlLEVBQUUsV0FBVywwQkFBMEI7QUFBQSxNQUMvRCxLQUFLLFdBQVc7QUFDZCxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHLE9BQU8sZUFBZSxFQUFFLFdBQVcsc0JBQXNCO0FBQUEsTUFDM0QsS0FBSyxXQUFXO0FBQ2QsZUFBTyxLQUFLO0FBQUEsTUFDZDtBQUFBLE1BQ0EsWUFBWTtBQUFBLE1BQ1osY0FBYztBQUFBLElBQ2hCLENBQUMsR0FBRyxPQUFPLGVBQWUsRUFBRSxXQUFXLHFCQUFxQjtBQUFBLE1BQzFELEtBQUssV0FBVztBQUNkLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQSxNQUNBLFlBQVk7QUFBQSxNQUNaLGNBQWM7QUFBQSxJQUNoQixDQUFDLEdBQUcsRUFBRSxVQUFVLGVBQWUsV0FBVztBQUN4QyxhQUFPLEtBQUssVUFBVUEsRUFBRSxLQUFLLDJEQUEyRCxLQUFLLGFBQWEsVUFBVSxlQUFlLEtBQUssYUFBYSxTQUFTLEdBQUcsR0FBRyxLQUFLO0FBQUEsSUFDM0ssR0FBRyxFQUFFLFVBQVUsdUJBQXVCLFNBQVMsR0FBRyxHQUFHO0FBQ25ELGFBQU8sRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLFVBQVUsR0FBRyxDQUFDO0FBQUEsSUFDN0MsR0FBRyxFQUFFLFVBQVUsa0JBQWtCLFNBQVMsR0FBRztBQUMzQyxVQUFJMkIsSUFBTSxNQUFNLElBQUksS0FBSztBQUN6QixhQUFPLEtBQUssS0FBSzNCLEVBQUUsS0FBSyxpREFBaUQsQ0FBQyxHQUFHLEtBQUssT0FBTyxLQUFLLFdBQVcsS0FBSyxxQkFBcUIsR0FBRyxDQUFDLElBQUksTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksU0FBU21DLEdBQUc7QUFDOUssZUFBTyxPQUFPQSxLQUFLLFdBQVdSLEVBQUkscUJBQXFCUSxHQUFHLENBQUMsSUFBSUE7QUFBQSxNQUNqRSxDQUFDLElBQUk7QUFBQSxJQUNQLEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEUztBQUFBLENBQ0YsU0FBUyxHQUFHO0FBQ1gsSUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLGNBQWMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxFQUFFLHFCQUFxQixDQUFDLElBQUk7QUFDaEcsR0FBR0EsTUFBTUEsSUFBSSxDQUFDLEVBQUU7QUFDaEIsSUFBSTtBQUFBO0FBQUEsRUFFRixXQUFXO0FBQ1QsYUFBUyxJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU8sRUFBRSxVQUFVLGVBQWUsV0FBVztBQUMzQyxhQUFPO0FBQUEsUUFDTCxVQUFVQSxFQUFFO0FBQUEsTUFDZDtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU87QUFBQSxJQUNULEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEQztBQUFBO0FBQUEsRUFFRCxXQUFXO0FBQ1QsYUFBUyxJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU8sRUFBRSxVQUFVLGVBQWUsV0FBVztBQUMzQyxhQUFPO0FBQUEsUUFDTCxVQUFVRCxFQUFFO0FBQUEsTUFDZDtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU87QUFBQSxJQUNULEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNERTtBQUFBO0FBQUEsRUFFRCxXQUFXO0FBQ1QsYUFBUyxFQUFFLEdBQUc7QUFDWixVQUFJLEdBQUcsR0FBR1gsR0FBR0c7QUFDYixXQUFLLFFBQVEsRUFBRSxNQUFNLEtBQUssVUFBVXRCLEVBQUssSUFBSSxNQUFNLHdEQUF3RCxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUk2QixFQUFFLElBQUksS0FBSyx3QkFBd0IsSUFBSSxFQUFFLHlCQUF5QixRQUFRLE1BQU0sU0FBUyxJQUFJLElBQUlBLEVBQUUsR0FBRyxLQUFLLDJCQUEyQixJQUFJLEVBQUUsNEJBQTRCLFFBQVEsTUFBTSxTQUFTLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyx1QkFBdUJWLElBQUksRUFBRSx3QkFBd0IsUUFBUUEsTUFBTSxTQUFTQSxJQUFJLElBQUlVLEVBQUUsR0FBRyxLQUFLLDBCQUEwQlAsSUFBSSxFQUFFLDJCQUEyQixRQUFRQSxNQUFNLFNBQVNBLElBQUksSUFBSSxFQUFFO0FBQUEsSUFDN2dCO0FBQ0EsV0FBTyxFQUFFLFVBQVUsZUFBZSxTQUFTLEdBQUcsR0FBRyxHQUFHSCxHQUFHRyxHQUFHTCxHQUFHO0FBQzNELFVBQUlNLElBQUk5QyxFQUFHLGVBQWUsQ0FBQztBQUMzQixhQUFPLENBQUM4QyxLQUFLLENBQUM3QyxHQUFHNkMsQ0FBQyxJQUFJLEtBQUssTUFBTSxhQUFhLEdBQUcsR0FBRyxHQUFHSixHQUFHRyxHQUFHTCxDQUFDLElBQUlNLEVBQUUsV0FBV0EsRUFBRSxhQUFhNUMsRUFBSyxVQUFVLEtBQUsscUJBQXFCLGFBQWEsR0FBRyxHQUFHLEdBQUd3QyxHQUFHRyxHQUFHTCxDQUFDLElBQUksS0FBSyx3QkFBd0IsYUFBYSxHQUFHLEdBQUcsR0FBR0UsR0FBR0csR0FBR0wsQ0FBQyxJQUFJTSxFQUFFLGFBQWE1QyxFQUFLLFVBQVUsS0FBSyxvQkFBb0IsYUFBYSxHQUFHLEdBQUcsR0FBR3dDLEdBQUdHLEdBQUdMLENBQUMsSUFBSSxLQUFLLHVCQUF1QixhQUFhLEdBQUcsR0FBRyxHQUFHRSxHQUFHRyxHQUFHTCxDQUFDO0FBQUEsSUFDelgsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sc0JBQXNCLEtBQUssTUFBTSxTQUFTLElBQUksMkJBQTJCLEtBQUsscUJBQXFCLFNBQVMsSUFBSSw4QkFBOEIsS0FBSyx3QkFBd0IsU0FBUyxJQUFJLDBCQUEwQixLQUFLLG9CQUFvQixTQUFTLElBQUksNkJBQTZCLEtBQUssdUJBQXVCLFNBQVMsSUFBSTtBQUFBLElBQ3ZVLEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEYztBQUFBO0FBQUEsRUFFRCxXQUFXO0FBQ1QsYUFBUyxFQUFFLEdBQUc7QUFDWixZQUFNLFdBQVcsSUFBSSxJQUFJLEtBQUssU0FBUyxHQUFHLEtBQUssU0FBUyxLQUFLLFdBQVcsQ0FBQyxHQUFHLEtBQUssY0FBYyxLQUFLLE1BQU0sS0FBSyxTQUFTLFVBQVU7QUFBQSxJQUNwSTtBQUNBLFdBQU8sRUFBRSxVQUFVLGVBQWUsU0FBUyxHQUFHLEdBQUc7QUFDL0MsYUFBTztBQUFBLFFBQ0wsVUFBVW5ELEdBQUcsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLElBQUksS0FBSyxjQUFjZ0QsRUFBRSxxQkFBcUJBLEVBQUU7QUFBQSxNQUN2RjtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sdUJBQXVCLEtBQUssU0FBUztBQUFBLElBQzlDLEdBQUcsRUFBRSxVQUFVLGFBQWEsU0FBUyxHQUFHO0FBQ3RDLGFBQU8sT0FBTyxLQUFLLFlBQVksTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLElBQUksSUFBSTtBQUFBLElBQzFFLEdBQUcsRUFBRSxVQUFVLGNBQWMsU0FBUyxHQUFHO0FBQ3ZDLGVBQVMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsU0FBUyxHQUFHLEtBQUs7QUFDNUMsWUFBSVQsSUFBSSxJQUFJLEdBQUdHLElBQUksU0FBUyxFQUFFLE1BQU1ILEdBQUdBLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDakQsYUFBSyxJQUFJRyxPQUFPO0FBQUEsTUFDbEI7QUFDQSxhQUFPO0FBQUEsSUFDVCxHQUFHO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRCxLQUFLWCxFQUFJLFVBQVVxQixJQUFJO0FBQzFCLFNBQVNDLElBQUk7QUFDWCxNQUFJLElBQUlyQixFQUFHO0FBQ1gsU0FBTztBQUFBLElBQ0wsU0FBUyxFQUFFLENBQUM7QUFBQSxJQUNaLHlCQUF5QjtBQUFBLElBQ3pCLGVBQWU7QUFBQSxNQUNiLDJCQUEyQixFQUFFO0FBQUEsTUFDN0IscUJBQXFCLEVBQUU7QUFBQSxJQUN6QjtBQUFBLElBQ0EsWUFBWTtBQUFBLE1BQ1YsMkJBQTJCLEVBQUU7QUFBQSxNQUM3QixxQkFBcUIsRUFBRTtBQUFBLE1BQ3ZCLGdCQUFnQixFQUFFO0FBQUEsTUFDbEIsaUJBQWlCLEVBQUU7QUFBQSxNQUNuQiw2QkFBNkIsRUFBRTtBQUFBLE1BQy9CLDRCQUE0QixFQUFFO0FBQUEsSUFDaEM7QUFBQSxJQUNBLDJCQUEyQjtBQUFBLEVBQzdCO0FBQ0Y7QUFDQSxTQUFTLEVBQUUsR0FBRztBQUNaLFVBQVEsTUFBTSxXQUFXLElBQUlBLEVBQUcsSUFBSSxFQUFFLHFCQUFxQjtBQUFBLElBQ3pELEtBQUtELEVBQUk7QUFDUCxhQUFPLElBQUlrQixFQUFFO0FBQUEsSUFDZixLQUFLbEIsRUFBSTtBQUNQLGFBQU8sSUFBSSxFQUFFO0FBQUEsSUFDZixLQUFLQSxFQUFJO0FBQ1AsYUFBTyxJQUFJbUIsRUFBRTtBQUFBLFFBQ1gsTUFBTSxJQUFJRCxFQUFFO0FBQUEsTUFDZCxDQUFDO0FBQUEsSUFDSCxLQUFLbEIsRUFBSTtBQUNQLGFBQU8sSUFBSW1CLEVBQUU7QUFBQSxRQUNYLE1BQU0sSUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDO0FBQUEsSUFDSCxLQUFLbkIsRUFBSTtBQUNQLGFBQU8sSUFBSW9CLEVBQUVHLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFDbkIsS0FBS3ZCLEVBQUk7QUFDUCxhQUFPLElBQUltQixFQUFFO0FBQUEsUUFDWCxNQUFNLElBQUlDLEVBQUVHLEVBQUUsQ0FBQyxDQUFDO0FBQUEsTUFDbEIsQ0FBQztBQUFBLElBQ0g7QUFDRSxhQUFPbEQsRUFBRSxNQUFNLGdDQUFnQyxFQUFFLHNCQUFzQiw2QkFBNkIsS0FBSyxJQUFJLEdBQUcsSUFBSTZDLEVBQUU7QUFBQSxFQUMxSDtBQUNGO0FBQ0EsU0FBU0ssRUFBRSxHQUFHO0FBQ1osTUFBSSxFQUFFLDRCQUE0QixVQUFVLEVBQUUsNEJBQTRCO0FBQ3hFLFdBQU9sRCxFQUFFLE1BQU0scURBQXFEZ0QsSUFBSSxHQUFHLEdBQUdBO0FBQ2hGLE1BQUksSUFBSSxPQUFPLEVBQUUsdUJBQXVCO0FBQ3hDLFNBQU8sTUFBTSxDQUFDLEtBQUtoRCxFQUFFLE1BQU0sNkJBQTZCLEVBQUUsMEJBQTBCLGtEQUFrRGdELElBQUksR0FBRyxHQUFHQSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUtoRCxFQUFFLE1BQU0sNkJBQTZCLEVBQUUsMEJBQTBCLGdFQUFnRWdELElBQUksR0FBRyxHQUFHQSxLQUFLO0FBQ3pUO0FBQ0EsU0FBUyxHQUFHLEdBQUc7QUFDYixNQUFJLElBQUk7QUFBQSxJQUNOLFNBQVMsRUFBRTtBQUFBLEVBQ2IsR0FBRyxJQUFJQyxFQUFFLEdBQUcsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLFNBQU8sRUFBRSxnQkFBZ0IsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxhQUFhLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRztBQUMxSjtBQUNBLFNBQVMsR0FBRyxHQUFHO0FBQ2IsTUFBSSxHQUFHLEdBQUcsR0FBR2QsR0FBR0csR0FBR0wsR0FBR00sR0FBR0csR0FBRyxHQUFHeEIsR0FBR3lCLEdBQUdRLEdBQUdDLElBQUksT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsR0FBRyxJQUFJdkIsR0FBRztBQUNwRixTQUFPdUIsRUFBRSx1QkFBdUJuQixLQUFLSyxLQUFLSCxLQUFLLEtBQUssSUFBSSxFQUFFLGdCQUFnQixRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUseUJBQXlCLFFBQVEsTUFBTSxTQUFTLEtBQUssSUFBSSxFQUFFLG1CQUFtQixRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUseUJBQXlCLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxFQUFFLHFDQUFxQyxRQUFRRyxNQUFNLFNBQVNBLElBQUksRUFBRSxnQ0FBZ0MsUUFBUUwsTUFBTSxTQUFTQSxJQUFJSCxJQUFLc0IsRUFBRSw2QkFBNkJELEtBQUtSLEtBQUt6QixLQUFLd0IsS0FBS0gsSUFBSSxFQUFFLGdCQUFnQixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSwrQkFBK0IsUUFBUUcsTUFBTSxTQUFTQSxLQUFLLElBQUksRUFBRSxtQkFBbUIsUUFBUSxNQUFNLFNBQVMsU0FBUyxFQUFFLCtCQUErQixRQUFReEIsTUFBTSxTQUFTQSxJQUFJLEVBQUUsNENBQTRDLFFBQVF5QixNQUFNLFNBQVNBLElBQUksRUFBRSx1Q0FBdUMsUUFBUVEsTUFBTSxTQUFTQSxJQUFJcEIsSUFBRyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxZQUFZcUIsRUFBRSxDQUFDO0FBQ3YyQjtBQUNBLElBQUk7QUFBQTtBQUFBLEVBRUYsV0FBVztBQUNULGFBQVMsRUFBRSxHQUFHekIsR0FBSztBQUNqQixXQUFLLFlBQVksR0FBRyxLQUFLLGVBQWUsSUFBSSxLQUFLLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxxQkFBcUI7QUFDaEcsVUFBSSxJQUFJQyxFQUFHO0FBQ1gsV0FBSyxzQkFBc0IsUUFBUUQsS0FBTyxPQUFPLFNBQVNBLEVBQUksdUJBQXVCLFdBQVdBLEVBQUkscUJBQXFCLEVBQUUsZ0NBQWdDLEtBQUssZ0JBQWdCLFFBQVFBLEtBQU8sT0FBTyxTQUFTQSxFQUFJLGlCQUFpQixXQUFXQSxFQUFJLGVBQWUsRUFBRSx5QkFBeUIsS0FBSyx3QkFBd0IsUUFBUUEsS0FBTyxPQUFPLFNBQVNBLEVBQUkseUJBQXlCLFdBQVdBLEVBQUksdUJBQXVCLEVBQUUseUJBQXlCLEtBQUssdUJBQXVCLFFBQVFBLEtBQU8sT0FBTyxTQUFTQSxFQUFJLHdCQUF3QixXQUFXQSxFQUFJLHNCQUFzQixFQUFFLHlCQUF5QixLQUFLLGdCQUFnQixJQUFJRixFQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxzQkFBc0IsS0FBSyxrQkFBa0J6QixFQUFFLEtBQUssbUlBQW1JLEdBQUcsS0FBSyxzQkFBc0IsS0FBSztBQUFBLElBQ2wyQjtBQUNBLFdBQU8sRUFBRSxVQUFVLGFBQWEsV0FBVztBQUN6QyxhQUFPLEtBQUssY0FBYyxXQUFXLEtBQUssY0FBYyxVQUFVLEtBQUssVUFBVTtBQUFBLElBQ25GLEdBQUcsRUFBRSxVQUFVLFVBQVUsU0FBUyxHQUFHLEdBQUc7QUFBQSxJQUN4QyxHQUFHLEVBQUUsVUFBVSxRQUFRLFNBQVMsR0FBRztBQUNqQyxXQUFLLGNBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhTCxFQUFLLFdBQVcsS0FBSyxhQUFhLENBQUM7QUFBQSxJQUNqRyxHQUFHLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTyxLQUFLLGNBQWMsS0FBSztBQUFBLElBQ2pDLEdBQUcsRUFBRSxVQUFVLFlBQVksV0FBVztBQUNwQyxVQUFJLElBQUk7QUFDUixhQUFPLFFBQVEsUUFBUSxFQUFFLEtBQUssV0FBVztBQUN2QyxlQUFPLEVBQUUsV0FBVztBQUFBLE1BQ3RCLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDakIsZUFBTyxFQUFFLFVBQVU7QUFBQSxNQUNyQixDQUFDLEVBQUUsS0FBSyxXQUFXO0FBQ2pCLGVBQU8sRUFBRSxVQUFVLFNBQVM7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSCxHQUFHLEVBQUUsVUFBVSxlQUFlLFNBQVMsR0FBRztBQUN4QyxVQUFJLEtBQUssZUFBZSxVQUFVLEtBQUssZUFBZTtBQUNwRCxhQUFLLHVCQUF1QixLQUFLSyxFQUFFLE1BQU0sc0NBQXNDLEdBQUcsS0FBSztBQUN2RjtBQUFBLE1BQ0Y7QUFDQSxXQUFLLHFCQUFxQixNQUFNQSxFQUFFLEtBQUssYUFBYSxLQUFLLHFCQUFxQixxQ0FBcUMsR0FBRyxLQUFLLHFCQUFxQixJQUFJLEtBQUssZUFBZSxLQUFLLENBQUMsR0FBRyxLQUFLLGlCQUFpQjtBQUFBLElBQ3pNLEdBQUcsRUFBRSxVQUFVLFlBQVksV0FBVztBQUNwQyxVQUFJLElBQUk7QUFDUixhQUFPLElBQUksUUFBUSxTQUFTLEdBQUcsR0FBRztBQUNoQyxpQkFBU21DLElBQUksQ0FBQyxHQUFHRyxJQUFJLEtBQUssS0FBSyxFQUFFLGVBQWUsU0FBUyxFQUFFLG1CQUFtQixHQUFHTCxJQUFJLEdBQUdNLElBQUlELEdBQUdMLElBQUlNLEdBQUdOO0FBQ3BHLFVBQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztBQUMzQixnQkFBUSxJQUFJQSxDQUFDLEVBQUUsS0FBSyxXQUFXO0FBQzdCLFlBQUU7QUFBQSxRQUNKLENBQUMsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUNaLENBQUM7QUFBQSxJQUNILEdBQUcsRUFBRSxVQUFVLGlCQUFpQixXQUFXO0FBQ3pDLFVBQUksSUFBSTtBQUNSLGFBQU8sS0FBSyxZQUFZLEdBQUcsS0FBSyxlQUFlLFdBQVcsSUFBSSxRQUFRLFFBQVEsSUFBSSxJQUFJLFFBQVEsU0FBUyxHQUFHLEdBQUc7QUFDM0csWUFBSUEsSUFBSSxXQUFXLFdBQVc7QUFDNUIsWUFBRSxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQUEsUUFDeEIsR0FBRyxFQUFFLG9CQUFvQjtBQUN6QixRQUFBdEMsRUFBRyxLQUFLeUIsR0FBSXpCLEVBQUcsT0FBTyxDQUFDLEdBQUcsV0FBVztBQUNuQyxjQUFJeUM7QUFDSixZQUFFLGVBQWUsVUFBVSxFQUFFLHVCQUF1QkEsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLEtBQUtBLElBQUksRUFBRSxlQUFlLE9BQU8sR0FBRyxFQUFFLG1CQUFtQjtBQUN2SixtQkFBU2UsSUFBTSxXQUFXO0FBQ3hCLG1CQUFPLEVBQUUsVUFBVSxPQUFPZixHQUFHLFNBQVNLLEdBQUc7QUFDdkMsa0JBQUlRO0FBQ0osMkJBQWFoQixDQUFDLEdBQUdRLEVBQUUsU0FBU1YsRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHa0IsSUFBSVIsRUFBRSxXQUFXLFFBQVFRLE1BQU0sU0FBU0EsSUFBSSxJQUFJLE1BQU0sd0NBQXdDLENBQUM7QUFBQSxZQUNsSixDQUFDO0FBQUEsVUFDSCxHQUFHWixJQUFJLE1BQU1HLElBQUksR0FBRyxJQUFJSixFQUFFLFFBQVFJLElBQUksR0FBR0EsS0FBSztBQUM1QyxnQkFBSXhCLElBQUlvQixFQUFFSSxDQUFDO0FBQ1gsWUFBQXhCLEVBQUUsU0FBUywwQkFBMEJBLEVBQUUsU0FBUywyQkFBMkJxQixNQUFNQSxJQUFJLENBQUMsSUFBSUEsRUFBRSxLQUFLckIsRUFBRSxTQUFTLHVCQUF1QixDQUFDO0FBQUEsVUFDdEk7QUFDQSxVQUFBcUIsTUFBTSxPQUFPYyxFQUFJLElBQUksUUFBUSxJQUFJZCxDQUFDLEVBQUUsS0FBS2MsR0FBSyxTQUFTVixHQUFHO0FBQ3hELFlBQUEzQixFQUFLMkIsQ0FBQyxHQUFHLEVBQUVBLENBQUM7QUFBQSxVQUNkLENBQUM7QUFBQSxRQUNILENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxJQUNILEdBQUcsRUFBRSxVQUFVLG1CQUFtQixXQUFXO0FBQzNDLFVBQUksSUFBSTtBQUNSLFVBQUksQ0FBQyxLQUFLLGNBQWM7QUFDdEIsWUFBSSxJQUFJLFdBQVc7QUFDakIsWUFBRSxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsUUFBUSxXQUFXO0FBQ3pELGNBQUUsZUFBZSxJQUFJLEVBQUUsZUFBZSxTQUFTLE1BQU0sRUFBRSxZQUFZLEdBQUcsRUFBRSxpQkFBaUI7QUFBQSxVQUMzRixDQUFDLEVBQUUsTUFBTSxTQUFTLEdBQUc7QUFDbkIsY0FBRSxlQUFlLElBQUkzQixFQUFLLENBQUM7QUFBQSxVQUM3QixDQUFDO0FBQUEsUUFDSDtBQUNBLFlBQUksS0FBSyxlQUFlLFVBQVUsS0FBSztBQUNyQyxpQkFBTyxFQUFFO0FBQ1gsYUFBSyxXQUFXLFdBQVcsS0FBSyxTQUFTLFdBQVcsV0FBVztBQUM3RCxpQkFBTyxFQUFFO0FBQUEsUUFDWCxHQUFHLEtBQUsscUJBQXFCLEdBQUdPLEdBQUcsS0FBSyxNQUFNO0FBQUEsTUFDaEQ7QUFBQSxJQUNGLEdBQUcsRUFBRSxVQUFVLGNBQWMsV0FBVztBQUN0QyxXQUFLLFdBQVcsV0FBVyxhQUFhLEtBQUssTUFBTSxHQUFHLEtBQUssU0FBUztBQUFBLElBQ3RFLEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEK0IsS0FBcUIsMkJBQVc7QUFDakMsTUFBSSxJQUFJLFNBQVMsR0FBRyxHQUFHO0FBQ3JCLFdBQU8sSUFBSSxPQUFPLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxFQUFFLGFBQWEsU0FBUyxTQUFTLEdBQUduQixHQUFHO0FBQ3ZGLFFBQUUsWUFBWUE7QUFBQSxJQUNoQixLQUFLLFNBQVMsR0FBR0EsR0FBRztBQUNsQixlQUFTRyxLQUFLSCxFQUFHLFFBQU8sVUFBVSxlQUFlLEtBQUtBLEdBQUdHLENBQUMsTUFBTSxFQUFFQSxDQUFDLElBQUlILEVBQUVHLENBQUM7QUFBQSxJQUM1RSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU8sU0FBUyxHQUFHLEdBQUc7QUFDcEIsUUFBSSxPQUFPLEtBQUssY0FBYyxNQUFNO0FBQ2xDLFlBQU0sSUFBSSxVQUFVLHlCQUF5QixPQUFPLENBQUMsSUFBSSwrQkFBK0I7QUFDMUYsTUFBRSxHQUFHLENBQUM7QUFDTixhQUFTLElBQUk7QUFDWCxXQUFLLGNBQWM7QUFBQSxJQUNyQjtBQUNBLE1BQUUsWUFBWSxNQUFNLE9BQU8sT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUksRUFBRTtBQUFBLEVBQ2xGO0FBQ0YsRUFBRSxHQUFHaUI7QUFBQTtBQUFBLEVBRUgsU0FBUyxHQUFHO0FBQ1YsSUFBQUQsR0FBRyxHQUFHLENBQUM7QUFDUCxhQUFTLEVBQUUsR0FBRyxHQUFHO0FBQ2YsVUFBSW5CLElBQUksRUFBRSxLQUFLLE1BQU0sR0FBRyxDQUFDLEtBQUs7QUFDOUIsYUFBT0EsRUFBRSxPQUFPLENBQUMsR0FBR0E7QUFBQSxJQUN0QjtBQUNBLFdBQU8sRUFBRSxVQUFVLFNBQVMsU0FBUyxHQUFHO0FBQ3RDLFVBQUksSUFBSTtBQUNSLE9BQUMsS0FBSyxPQUFPLFNBQVMsRUFBRSxvQ0FBb0MsTUFBTSxPQUFPLFdBQVcsUUFBUSxLQUFLLDRCQUE0QixXQUFXO0FBQ3RJLGlCQUFTLG9CQUFvQixZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBU0EsR0FBRztBQUN4RSxVQUFBbkIsRUFBS21CLENBQUM7QUFBQSxRQUNSLENBQUM7QUFBQSxNQUNILEdBQUcsS0FBSyxvQkFBb0IsV0FBVztBQUNyQyxVQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVNBLEdBQUc7QUFDL0IsVUFBQW5CLEVBQUttQixDQUFDO0FBQUEsUUFDUixDQUFDO0FBQUEsTUFDSCxHQUFHLFNBQVMsaUJBQWlCLG9CQUFvQixLQUFLLHlCQUF5QixHQUFHLFNBQVMsaUJBQWlCLFlBQVksS0FBSyxpQkFBaUI7QUFBQSxJQUNoSixHQUFHLEVBQUUsVUFBVSxhQUFhLFdBQVc7QUFDckMsYUFBTyxXQUFXLFFBQVEsS0FBSyw2QkFBNkIsU0FBUyxvQkFBb0Isb0JBQW9CLEtBQUsseUJBQXlCLEdBQUcsS0FBSyxxQkFBcUIsU0FBUyxvQkFBb0IsWUFBWSxLQUFLLGlCQUFpQjtBQUFBLElBQ3pPLEdBQUc7QUFBQSxFQUNMLEVBQUUsRUFBRTtBQUFBLEdBQ0gsS0FBSyxHQUFHLEtBQUssSUFBSXFCO0FBQUE7QUFBQSxFQUVGLDJCQUFXO0FBQ3pCLGFBQVMsSUFBSTtBQUNYLFdBQUssa0JBQWtCQyxFQUFFLEVBQUUsR0FBRyxLQUFLLGlCQUFpQkEsRUFBRSxFQUFFO0FBQUEsSUFDMUQ7QUFDQSxXQUFPO0FBQUEsRUFDVCxFQUFFO0FBQUEsR0FDREMsSUFBSSxNQUFNLEVBQUU7QUFDZixTQUFTRCxFQUFFLEdBQUc7QUFDWixTQUFPLFdBQVc7QUFDaEIsYUFBU3pELElBQUksR0FBR0EsSUFBSSxJQUFJLEdBQUdBO0FBQ3pCLE1BQUEwRCxFQUFFMUQsQ0FBQyxJQUFJLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFBSSxFQUFFLElBQUksSUFBSTBELEVBQUUxRCxDQUFDLEtBQUssT0FBTzBELEVBQUUxRCxDQUFDLEtBQUs7QUFDckUsV0FBTyxPQUFPLGFBQWEsTUFBTSxNQUFNMEQsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFBQSxFQUMxRDtBQUNGO0FBQ0EsSUFBSTtBQUFBO0FBQUEsRUFFRixXQUFXO0FBQ1QsYUFBUyxFQUFFLEdBQUcsR0FBRyxHQUFHO0FBQ2xCLFdBQUssa0JBQWtCO0FBQ3ZCLFVBQUl2QixJQUFJLEdBQUcsQ0FBQztBQUNaLFdBQUssV0FBV0EsRUFBRSxTQUFTLEtBQUssaUJBQWlCQSxFQUFFLGVBQWUsS0FBSyxjQUFjQSxFQUFFLFlBQVksS0FBSyxlQUFlLEVBQUUsZUFBZSxJQUFJcUIsR0FBRyxHQUFHLEtBQUssV0FBVyxFQUFFLFVBQVUsS0FBSyx5QkFBeUI7QUFBQSxJQUM5TTtBQUNBLFdBQU8sRUFBRSxVQUFVLFlBQVksU0FBUyxHQUFHN0IsR0FBSyxHQUFHO0FBQ2pELFVBQUlRLEdBQUdHLEdBQUdMO0FBQ1YsTUFBQU4sTUFBUSxXQUFXQSxJQUFNLENBQUMsSUFBSSxNQUFNLFdBQVcsSUFBSTlCLEVBQUcsT0FBTyxJQUFJOEIsRUFBSSxTQUFTLElBQUlsQyxFQUFHLFdBQVcsQ0FBQztBQUNqRyxVQUFJOEMsSUFBSTlDLEVBQUcsUUFBUSxDQUFDO0FBQ3BCLFVBQUl3QixHQUFFLENBQUMsR0FBRztBQUNSLFFBQUFqQixFQUFFLE1BQU0saURBQWlEO0FBQ3pELFlBQUkwQyxJQUFJakQsRUFBRyxnQkFBZ0JLLEVBQUU7QUFDN0IsZUFBTzRDO0FBQUEsTUFDVDtBQUNBLFVBQUksSUFBSUgsS0FBSyxPQUFPLFNBQVNBLEVBQUUsWUFBWSxHQUFHb0IsSUFBTSxLQUFLLGFBQWEsZUFBZSxHQUFHaEIsR0FBR1EsR0FBR0M7QUFDOUYsT0FBQyxLQUFLLENBQUMzRCxFQUFHLG1CQUFtQixDQUFDLElBQUlrRCxJQUFJLEtBQUssYUFBYSxnQkFBZ0IsS0FBS0EsSUFBSSxFQUFFLFNBQVNRLElBQUksRUFBRSxZQUFZQyxJQUFJLEVBQUU7QUFDcEgsVUFBSSxLQUFLakIsSUFBSVIsRUFBSSxVQUFVLFFBQVFRLE1BQU0sU0FBU0EsSUFBSSxHQUFHLFVBQVUsTUFBTUcsSUFBSVgsRUFBSSxXQUFXLFFBQVFXLE1BQU0sU0FBU0EsSUFBSSxDQUFDLEdBQUcsSUFBSSxTQUFTLEdBQUc7QUFDekksZUFBTztBQUFBLFVBQ0wsU0FBUyxFQUFFO0FBQUEsVUFDWCxZQUFZdkIsRUFBRyxFQUFFLFVBQVU7QUFBQSxRQUM3QjtBQUFBLE1BQ0YsQ0FBQyxHQUFHNkMsSUFBSTdDLEVBQUdZLEVBQUksVUFBVSxHQUFHa0MsSUFBSSxLQUFLLFNBQVMsYUFBYSxHQUFHbEIsR0FBRyxHQUFHLEdBQUdpQixHQUFHLENBQUM7QUFDM0UsTUFBQVQsS0FBS2xCLElBQUk0QixFQUFFLGdCQUFnQixRQUFRNUIsTUFBTSxTQUFTQSxJQUFJa0I7QUFDdEQsVUFBSSxLQUFLVSxFQUFFLGFBQWEzQyxFQUFFLHFCQUFxQnZCLEVBQUssVUFBVUEsRUFBSyxNQUFNLElBQUksRUFBRSxTQUFTZ0QsR0FBRyxRQUFRZ0IsR0FBSyxZQUFZLElBQUksWUFBWVIsRUFBRTtBQUN0SSxVQUFJVSxFQUFFLGFBQWEzQyxFQUFFLFlBQVk7QUFDL0IsUUFBQWxCLEVBQUUsTUFBTSwrREFBK0Q7QUFDdkUsWUFBSTBDLElBQUlqRCxFQUFHLGdCQUFnQixDQUFDO0FBQzVCLGVBQU9pRDtBQUFBLE1BQ1Q7QUFDQSxVQUFJLEtBQUszQixFQUFHLE9BQU8sT0FBTzZDLEdBQUdDLEVBQUUsVUFBVSxDQUFDLEdBQUcsS0FBSyxJQUFJcEIsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUdXLEdBQUcsR0FBR3pCLEVBQUksV0FBVyxRQUFRLEVBQUU7QUFDMUcsYUFBTztBQUFBLElBQ1QsR0FBRyxFQUFFLFVBQVUsa0JBQWtCLFNBQVMsR0FBRyxHQUFHLEdBQUdRLEdBQUc7QUFDcEQsVUFBSUcsR0FBR0wsR0FBR007QUFDVixVQUFJLEVBQUUsVUFBVSxTQUFTLElBQUk7QUFDM0Isa0JBQVUsV0FBVyxJQUFJQSxJQUFJLElBQUksVUFBVSxXQUFXLEtBQUtELElBQUksR0FBR0MsSUFBSSxNQUFNRCxJQUFJLEdBQUdMLElBQUksR0FBR00sSUFBSUo7QUFDOUYsWUFBSU8sSUFBSVQsS0FBS3BDLEVBQUcsT0FBTyxHQUFHLElBQUksS0FBSyxVQUFVLEdBQUd5QyxHQUFHSSxDQUFDLEdBQUd4QixJQUFJekIsRUFBRyxRQUFRaUQsR0FBRyxDQUFDO0FBQzFFLGVBQU83QyxFQUFHLEtBQUtxQixHQUFHcUIsR0FBRyxRQUFRLENBQUM7QUFBQSxNQUNoQztBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsbUJBQW1CLFdBQVc7QUFDM0MsYUFBTyxLQUFLO0FBQUEsSUFDZCxHQUFHLEVBQUUsVUFBVSxnQkFBZ0IsV0FBVztBQUN4QyxhQUFPLEtBQUs7QUFBQSxJQUNkLEdBQUcsRUFBRSxVQUFVLHlCQUF5QixXQUFXO0FBQ2pELGFBQU8sS0FBSyxnQkFBZ0IsdUJBQXVCO0FBQUEsSUFDckQsR0FBRztBQUFBLEVBQ0wsRUFBRTtBQUFBLEdBQ0R1QixJQUFJLFNBQVMsR0FBRztBQUNqQixNQUFJLElBQUksT0FBTyxVQUFVLGNBQWMsT0FBTyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJO0FBQzNFLE1BQUksRUFBRyxRQUFPLEVBQUUsS0FBSyxDQUFDO0FBQ3RCLE1BQUksS0FBSyxPQUFPLEVBQUUsVUFBVSxTQUFVLFFBQU87QUFBQSxJQUMzQyxNQUFNLFdBQVc7QUFDZixhQUFPLEtBQUssS0FBSyxFQUFFLFdBQVcsSUFBSSxTQUFTLEVBQUUsT0FBTyxLQUFLLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFO0FBQUEsSUFDNUU7QUFBQSxFQUNGO0FBQ0EsUUFBTSxJQUFJLFVBQVUsSUFBSSw0QkFBNEIsaUNBQWlDO0FBQ3ZGLEdBQUdDO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTLEVBQUUsR0FBRztBQUNaLFdBQUssa0JBQWtCO0FBQUEsSUFDekI7QUFDQSxXQUFPLEVBQUUsVUFBVSxhQUFhLFdBQVc7QUFDekMsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2YsVUFBSTtBQUNGLGlCQUFTNUIsSUFBSTJCLEVBQUUsS0FBSyxlQUFlLEdBQUd4QixJQUFJSCxFQUFFLEtBQUssR0FBRyxDQUFDRyxFQUFFLE1BQU1BLElBQUlILEVBQUUsS0FBSyxHQUFHO0FBQ3pFLGNBQUlGLElBQUlLLEVBQUU7QUFDVixZQUFFLEtBQUtMLEVBQUUsV0FBVyxDQUFDO0FBQUEsUUFDdkI7QUFBQSxNQUNGLFNBQVNNLEdBQUc7QUFDVixZQUFJLEVBQUUsT0FBT0EsRUFBRTtBQUFBLE1BQ2pCLFVBQUU7QUFDQSxZQUFJO0FBQ0YsVUFBQUQsS0FBSyxDQUFDQSxFQUFFLFNBQVMsSUFBSUgsRUFBRSxXQUFXLEVBQUUsS0FBS0EsQ0FBQztBQUFBLFFBQzVDLFVBQUU7QUFDQSxjQUFJLEVBQUcsT0FBTSxFQUFFO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQ0EsYUFBTyxJQUFJLFFBQVEsU0FBU0ksR0FBRztBQUM3QixnQkFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDN0IsVUFBQUEsRUFBRTtBQUFBLFFBQ0osQ0FBQyxFQUFFLE1BQU0sU0FBU0csR0FBRztBQUNuQixVQUFBMUIsRUFBSzBCLEtBQUssSUFBSSxNQUFNLHVDQUF1QyxDQUFDLEdBQUdILEVBQUU7QUFBQSxRQUNuRSxDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQUEsSUFDSCxHQUFHLEVBQUUsVUFBVSxVQUFVLFNBQVMsR0FBRyxHQUFHO0FBQ3RDLFVBQUksR0FBR0o7QUFDUCxVQUFJO0FBQ0YsaUJBQVNHLElBQUl3QixFQUFFLEtBQUssZUFBZSxHQUFHN0IsSUFBSUssRUFBRSxLQUFLLEdBQUcsQ0FBQ0wsRUFBRSxNQUFNQSxJQUFJSyxFQUFFLEtBQUssR0FBRztBQUN6RSxjQUFJQyxJQUFJTixFQUFFO0FBQ1YsVUFBQU0sRUFBRSxRQUFRLEdBQUcsQ0FBQztBQUFBLFFBQ2hCO0FBQUEsTUFDRixTQUFTRyxHQUFHO0FBQ1YsWUFBSSxFQUFFLE9BQU9BLEVBQUU7QUFBQSxNQUNqQixVQUFFO0FBQ0EsWUFBSTtBQUNGLFVBQUFULEtBQUssQ0FBQ0EsRUFBRSxTQUFTRSxJQUFJRyxFQUFFLFdBQVdILEVBQUUsS0FBS0csQ0FBQztBQUFBLFFBQzVDLFVBQUU7QUFDQSxjQUFJLEVBQUcsT0FBTSxFQUFFO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQUEsSUFDRixHQUFHLEVBQUUsVUFBVSxRQUFRLFNBQVMsR0FBRztBQUNqQyxVQUFJLEdBQUc7QUFDUCxVQUFJO0FBQ0YsaUJBQVNILElBQUkyQixFQUFFLEtBQUssZUFBZSxHQUFHeEIsSUFBSUgsRUFBRSxLQUFLLEdBQUcsQ0FBQ0csRUFBRSxNQUFNQSxJQUFJSCxFQUFFLEtBQUssR0FBRztBQUN6RSxjQUFJRixJQUFJSyxFQUFFO0FBQ1YsVUFBQUwsRUFBRSxNQUFNLENBQUM7QUFBQSxRQUNYO0FBQUEsTUFDRixTQUFTTSxHQUFHO0FBQ1YsWUFBSSxFQUFFLE9BQU9BLEVBQUU7QUFBQSxNQUNqQixVQUFFO0FBQ0EsWUFBSTtBQUNGLFVBQUFELEtBQUssQ0FBQ0EsRUFBRSxTQUFTLElBQUlILEVBQUUsV0FBVyxFQUFFLEtBQUtBLENBQUM7QUFBQSxRQUM1QyxVQUFFO0FBQ0EsY0FBSSxFQUFHLE9BQU0sRUFBRTtBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLFVBQUksR0FBRyxHQUFHLElBQUksQ0FBQztBQUNmLFVBQUk7QUFDRixpQkFBU0EsSUFBSTJCLEVBQUUsS0FBSyxlQUFlLEdBQUd4QixJQUFJSCxFQUFFLEtBQUssR0FBRyxDQUFDRyxFQUFFLE1BQU1BLElBQUlILEVBQUUsS0FBSyxHQUFHO0FBQ3pFLGNBQUlGLElBQUlLLEVBQUU7QUFDVixZQUFFLEtBQUtMLEVBQUUsU0FBUyxDQUFDO0FBQUEsUUFDckI7QUFBQSxNQUNGLFNBQVNNLEdBQUc7QUFDVixZQUFJLEVBQUUsT0FBT0EsRUFBRTtBQUFBLE1BQ2pCLFVBQUU7QUFDQSxZQUFJO0FBQ0YsVUFBQUQsS0FBSyxDQUFDQSxFQUFFLFNBQVMsSUFBSUgsRUFBRSxXQUFXLEVBQUUsS0FBS0EsQ0FBQztBQUFBLFFBQzVDLFVBQUU7QUFDQSxjQUFJLEVBQUcsT0FBTSxFQUFFO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQ0EsYUFBTyxJQUFJLFFBQVEsU0FBU0ksR0FBR0csR0FBRztBQUNoQyxnQkFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDN0IsVUFBQUgsRUFBRTtBQUFBLFFBQ0osR0FBR0csQ0FBQztBQUFBLE1BQ04sQ0FBQztBQUFBLElBQ0gsR0FBRztBQUFBLEVBQ0wsRUFBRTtBQUFBLEdBQ0Q7QUFBQTtBQUFBLEVBRUQsV0FBVztBQUNULGFBQVMsSUFBSTtBQUFBLElBQ2I7QUFDQSxXQUFPLEVBQUUsVUFBVSxVQUFVLFNBQVMsR0FBRyxHQUFHO0FBQUEsSUFDNUMsR0FBRyxFQUFFLFVBQVUsUUFBUSxTQUFTLEdBQUc7QUFBQSxJQUNuQyxHQUFHLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTyxRQUFRLFFBQVE7QUFBQSxJQUN6QixHQUFHLEVBQUUsVUFBVSxhQUFhLFdBQVc7QUFDckMsYUFBTyxRQUFRLFFBQVE7QUFBQSxJQUN6QixHQUFHO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRHNCLEtBQUssU0FBUyxHQUFHLEdBQUc7QUFDckIsTUFBSSxJQUFJLE9BQU8sVUFBVSxjQUFjLEVBQUUsT0FBTyxRQUFRO0FBQ3hELE1BQUksQ0FBQyxFQUFHLFFBQU87QUFDZixNQUFJLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRzdCLEdBQUdHLElBQUksQ0FBQyxHQUFHTDtBQUM5QixNQUFJO0FBQ0YsWUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLEVBQUVFLElBQUksRUFBRSxLQUFLLEdBQUcsT0FBUSxDQUFBRyxFQUFFLEtBQUtILEVBQUUsS0FBSztBQUFBLEVBQzVFLFNBQVNJLEdBQUc7QUFDVixJQUFBTixJQUFJLEVBQUUsT0FBT00sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQUosS0FBSyxDQUFDQSxFQUFFLFNBQVMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSUYsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0s7QUFDVCxHQUFHMkIsS0FBSyxTQUFTLEdBQUcsR0FBRyxHQUFHO0FBQ3hCLE1BQUksVUFBVSxXQUFXLEVBQUcsVUFBUyxJQUFJLEdBQUc5QixJQUFJLEVBQUUsUUFBUUcsR0FBRyxJQUFJSCxHQUFHO0FBQ2xFLEtBQUNHLEtBQUssRUFBRSxLQUFLLFFBQVFBLE1BQU1BLElBQUksTUFBTSxVQUFVLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJQSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakYsU0FBTyxFQUFFLE9BQU9BLEtBQUssTUFBTSxVQUFVLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDcEQsR0FBRzRCO0FBQUEsQ0FDRixTQUFTLEdBQUc7QUFDWCxJQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksWUFBWSxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDLElBQUk7QUFDaEgsR0FBR0EsTUFBTUEsSUFBSSxDQUFDLEVBQUU7QUFDaEIsSUFBSTtBQUFBO0FBQUEsRUFFRixXQUFXO0FBQ1QsYUFBUyxFQUFFLEdBQUc7QUFDWixZQUFNLFdBQVcsSUFBSSxDQUFDO0FBQ3RCLFVBQUksR0FBRztBQUNQLFdBQUssNEJBQTRCLENBQUMsR0FBRyxLQUFLLFdBQTJCLG9CQUFJLElBQUk7QUFDN0UsVUFBSS9CLElBQUlYLEdBQUcsQ0FBQyxHQUFHeUIsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLFVBQUksS0FBSyxZQUFZLElBQUlkLEVBQUUsY0FBYyxRQUFRLE1BQU0sU0FBUyxJQUFJSCxFQUFJLE1BQU0sR0FBR0csRUFBRSw4QkFBOEIsS0FBSyxXQUFXSCxFQUFJLFFBQVEsRUFBRSxNQUFNLEtBQUssUUFBUSxJQUFJLEtBQUssVUFBVSxPQUFPLE9BQU8sQ0FBQyxHQUFHRyxHQUFHO0FBQUEsUUFDeE0sVUFBVSxLQUFLO0FBQUEsTUFDakIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLG9CQUFvQixRQUFRLE1BQU0sV0FBVyxFQUFFO0FBQzFELGFBQUssNEJBQTRCOEIsR0FBRyxDQUFDLEdBQUdELEdBQUcsRUFBRSxjQUFjLEdBQUcsRUFBRSxHQUFHLEtBQUssc0JBQXNCLElBQUlELEVBQUUsS0FBSyx5QkFBeUI7QUFBQSxXQUMvSDtBQUNILFlBQUl6QixJQUFJLEtBQUssc0JBQXNCO0FBQ25DLFlBQUlBLE1BQU0sUUFBUTtBQUNoQixjQUFJTCxJQUFJLElBQUlzQixHQUFHakIsQ0FBQztBQUNoQixlQUFLLHNCQUFzQkw7QUFBQSxRQUM3QjtBQUNFLGVBQUssc0JBQXNCLElBQUksR0FBRztBQUFBLE1BQ3RDO0FBQUEsSUFDRjtBQUNBLFdBQU8sRUFBRSxVQUFVLFlBQVksU0FBUyxHQUFHLEdBQUcsR0FBRztBQUMvQyxVQUFJRSxJQUFJLElBQUksT0FBTyxLQUFLLE1BQU0sUUFBUSxLQUFLLE9BQU8sU0FBUyxFQUFFLGNBQWM7QUFDM0UsYUFBTyxLQUFLLFNBQVMsSUFBSUEsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJQSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxTQUFTLEdBQUcsV0FBVyxLQUFLLE9BQU8sU0FBUyxFQUFFLFVBQVUsR0FBRyxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUlBLENBQUM7QUFBQSxJQUM1SyxHQUFHLEVBQUUsVUFBVSxtQkFBbUIsU0FBUyxHQUFHO0FBQzVDLFdBQUssMEJBQTBCLFdBQVcsS0FBSyxLQUFLLG9CQUFvQixTQUFTLEVBQUUsTUFBTSxTQUFTUixHQUFLO0FBQ3JHLGVBQU8zQixFQUFFLE1BQU0seURBQXlEMkIsQ0FBRztBQUFBLE1BQzdFLENBQUMsR0FBRyxLQUFLLDBCQUEwQixLQUFLLENBQUMsR0FBRyxLQUFLLHNCQUFzQixJQUFJb0MsRUFBRSxLQUFLLHlCQUF5QjtBQUFBLElBQzdHLEdBQUcsRUFBRSxVQUFVLHlCQUF5QixXQUFXO0FBQ2pELGFBQU8sS0FBSztBQUFBLElBQ2QsR0FBRyxFQUFFLFVBQVUsV0FBVyxTQUFTLEdBQUc7QUFDcEMsWUFBTSxXQUFXLElBQUksQ0FBQyxJQUFJdEUsRUFBRyx3QkFBd0IsSUFBSSxHQUFHLEVBQUUsZUFBZSxXQUFXLEVBQUUsYUFBYSxLQUFLLHdCQUF3QixJQUFJLEVBQUUsa0JBQWtCSSxFQUFHLHdCQUF3QixFQUFFLGNBQWMsR0FBRyxFQUFFLGNBQWNhLEdBQUcsb0JBQW9CLEVBQUUsVUFBVTtBQUFBLElBQy9QLEdBQUcsRUFBRSxVQUFVLGFBQWEsV0FBVztBQUNyQyxVQUFJLElBQUksS0FBSyxRQUFRLHlCQUF5QixJQUFJLEtBQUssMEJBQTBCLElBQUksU0FBUyxHQUFHO0FBQy9GLGVBQU8sSUFBSSxRQUFRLFNBQVN5QixHQUFHO0FBQzdCLGNBQUlHLEdBQUdMLElBQUksV0FBVyxXQUFXO0FBQy9CLFlBQUFFLEVBQUUsSUFBSSxNQUFNLCtEQUErRCxJQUFJLEtBQUssQ0FBQyxHQUFHRyxJQUFJNEIsRUFBRTtBQUFBLFVBQ2hHLEdBQUcsQ0FBQztBQUNKLFlBQUUsV0FBVyxFQUFFLEtBQUssV0FBVztBQUM3Qix5QkFBYWpDLENBQUMsR0FBR0ssTUFBTTRCLEVBQUUsWUFBWTVCLElBQUk0QixFQUFFLFVBQVUvQixFQUFFRyxDQUFDO0FBQUEsVUFDMUQsQ0FBQyxFQUFFLE1BQU0sU0FBU0MsR0FBRztBQUNuQix5QkFBYU4sQ0FBQyxHQUFHSyxJQUFJNEIsRUFBRSxPQUFPL0IsRUFBRUksQ0FBQztBQUFBLFVBQ25DLENBQUM7QUFBQSxRQUNILENBQUM7QUFBQSxNQUNILENBQUM7QUFDRCxhQUFPLElBQUksUUFBUSxTQUFTLEdBQUdKLEdBQUc7QUFDaEMsZ0JBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTRyxHQUFHO0FBQzlCLGNBQUlMLElBQUlLLEVBQUUsT0FBTyxTQUFTQyxHQUFHO0FBQzNCLG1CQUFPQSxNQUFNMkIsRUFBRTtBQUFBLFVBQ2pCLENBQUM7QUFDRCxVQUFBakMsRUFBRSxTQUFTLElBQUlFLEVBQUVGLENBQUMsSUFBSSxFQUFFO0FBQUEsUUFDMUIsQ0FBQyxFQUFFLE1BQU0sU0FBU0ssR0FBRztBQUNuQixpQkFBT0gsRUFBRSxDQUFDRyxDQUFDLENBQUM7QUFBQSxRQUNkLENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxJQUNILEdBQUcsRUFBRSxVQUFVLFdBQVcsV0FBVztBQUNuQyxhQUFPLEtBQUssb0JBQW9CLFNBQVM7QUFBQSxJQUMzQyxHQUFHLEVBQUUsVUFBVSxpQkFBaUIsU0FBUyxHQUFHO0FBQzFDLFVBQUk7QUFDSixjQUFRLElBQUksS0FBSyxZQUFZLHVCQUF1QixJQUFJLENBQUMsT0FBTyxRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUU7QUFBQSxJQUNwRyxHQUFHLEVBQUUsVUFBVSxtQkFBbUIsU0FBUyxHQUFHO0FBQzVDLFVBQUk7QUFDSixjQUFRLElBQUksS0FBSyxZQUFZLHFCQUFxQixJQUFJLENBQUMsT0FBTyxRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUU7QUFBQSxJQUNsRyxHQUFHLEVBQUUsVUFBVSwwQkFBMEIsV0FBVztBQUNsRCxVQUFJLElBQUksTUFBTVgsSUFBTSxNQUFNLEtBQUssSUFBSSxJQUFJQyxFQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxJQUFJRCxFQUFJLElBQUksU0FBU1csR0FBRztBQUN0RixZQUFJTCxJQUFJLEVBQUUsZUFBZUssQ0FBQztBQUMxQixlQUFPTCxLQUFLakMsRUFBRSxLQUFLLGlCQUFpQnNDLElBQUksMERBQTBELEdBQUdMO0FBQUEsTUFDdkcsQ0FBQyxHQUFHRSxJQUFJLEVBQUUsT0FBTyxTQUFTRyxHQUFHTCxHQUFHO0FBQzlCLGVBQU9BLEtBQUtLLEVBQUUsS0FBS0wsQ0FBQyxHQUFHSztBQUFBLE1BQ3pCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsVUFBSUgsRUFBRSxXQUFXO0FBQ2YsZUFBT1IsRUFBSSxXQUFXLElBQUlRLEVBQUUsQ0FBQyxJQUFJLElBQUloQixHQUFHO0FBQUEsVUFDdEMsYUFBYWdCO0FBQUEsUUFDZixDQUFDO0FBQUEsSUFDTCxHQUFHLEVBQUUsVUFBVSx3QkFBd0IsV0FBVztBQUNoRCxVQUFJLElBQUlQLEVBQUcsRUFBRTtBQUNiLFVBQUksRUFBRSxNQUFNLFVBQVUsTUFBTSxLQUFLO0FBQy9CLFlBQUlELElBQU0sS0FBSyxpQkFBaUIsQ0FBQztBQUNqQyxlQUFPQSxLQUFPM0IsRUFBRSxNQUFNLGVBQWUsSUFBSSwwREFBMEQsR0FBRzJCO0FBQUEsTUFDeEc7QUFBQSxJQUNGLEdBQUcsRUFBRSx5QkFBeUMsb0JBQUksSUFBSTtBQUFBLE1BQ3BELENBQUMsZ0JBQWdCLFdBQVc7QUFDMUIsZUFBTyxJQUFJUCxHQUFHO0FBQUEsTUFDaEIsQ0FBQztBQUFBLE1BQ0QsQ0FBQyxXQUFXLFdBQVc7QUFDckIsZUFBTyxJQUFJQyxHQUFHO0FBQUEsTUFDaEIsQ0FBQztBQUFBLElBQ0gsQ0FBQyxHQUFHLEVBQUUsdUJBQXVDLG9CQUFJLElBQUksR0FBRztBQUFBLEVBQzFELEVBQUU7QUFBQSxHQUNELEtBQUssU0FBUyxHQUFHO0FBQ2xCLE1BQUksSUFBSSxPQUFPLFVBQVUsY0FBYyxPQUFPLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUk7QUFDM0UsTUFBSSxFQUFHLFFBQU8sRUFBRSxLQUFLLENBQUM7QUFDdEIsTUFBSSxLQUFLLE9BQU8sRUFBRSxVQUFVLFNBQVUsUUFBTztBQUFBLElBQzNDLE1BQU0sV0FBVztBQUNmLGFBQU8sS0FBSyxLQUFLLEVBQUUsV0FBVyxJQUFJLFNBQVMsRUFBRSxPQUFPLEtBQUssRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUU7QUFBQSxJQUM1RTtBQUFBLEVBQ0Y7QUFDQSxRQUFNLElBQUksVUFBVSxJQUFJLDRCQUE0QixpQ0FBaUM7QUFDdkYsR0FBRztBQUFBO0FBQUEsRUFFRCxXQUFXO0FBQ1QsYUFBUyxJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU8sRUFBRSxVQUFVLFNBQVMsU0FBUyxHQUFHLEdBQUc7QUFDekMsYUFBTyxLQUFLLFdBQVcsR0FBRyxDQUFDO0FBQUEsSUFDN0IsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxHQUFHLEtBQUssV0FBVztBQUFBLElBQzlDLEdBQUcsRUFBRSxVQUFVLGFBQWEsV0FBVztBQUNyQyxhQUFPLFFBQVEsUUFBUTtBQUFBLElBQ3pCLEdBQUcsRUFBRSxVQUFVLGNBQWMsU0FBUyxHQUFHO0FBQ3ZDLFVBQUk7QUFDSixhQUFPO0FBQUEsUUFDTCxVQUFVO0FBQUEsVUFDUixZQUFZLEVBQUUsU0FBUztBQUFBLFFBQ3pCO0FBQUEsUUFDQSxzQkFBc0IsRUFBRTtBQUFBLFFBQ3hCLFNBQVMsRUFBRSxZQUFZLEVBQUU7QUFBQSxRQUN6QixVQUFVLEVBQUU7QUFBQSxRQUNaLGFBQWEsSUFBSSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsUUFBUSxNQUFNLFNBQVMsU0FBUyxFQUFFLFVBQVU7QUFBQSxRQUM3RixNQUFNLEVBQUU7QUFBQSxRQUNSLElBQUksRUFBRSxZQUFZLEVBQUU7QUFBQSxRQUNwQixNQUFNLEVBQUU7QUFBQSxRQUNSLFdBQVdWLEVBQUcsRUFBRSxTQUFTO0FBQUEsUUFDekIsVUFBVUEsRUFBRyxFQUFFLFFBQVE7QUFBQSxRQUN2QixZQUFZLEVBQUU7QUFBQSxRQUNkLFFBQVEsRUFBRTtBQUFBLFFBQ1YsUUFBUSxFQUFFO0FBQUEsUUFDVixPQUFPLEVBQUU7QUFBQSxNQUNYO0FBQUEsSUFDRixHQUFHLEVBQUUsVUFBVSxhQUFhLFNBQVMsR0FBRyxHQUFHO0FBQ3pDLFVBQUksR0FBR3dCO0FBQ1AsVUFBSTtBQUNGLGlCQUFTRyxJQUFJLEdBQUcsQ0FBQyxHQUFHZSxJQUFNZixFQUFFLEtBQUssR0FBRyxDQUFDZSxFQUFJLE1BQU1BLElBQU1mLEVBQUUsS0FBSyxHQUFHO0FBQzdELGNBQUlDLElBQUljLEVBQUk7QUFDWixrQkFBUSxJQUFJLEtBQUssWUFBWWQsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBQSxRQUMvQztBQUFBLE1BQ0YsU0FBU0csR0FBRztBQUNWLFlBQUksRUFBRSxPQUFPQSxFQUFFO0FBQUEsTUFDakIsVUFBRTtBQUNBLFlBQUk7QUFDRixVQUFBVyxLQUFPLENBQUNBLEVBQUksU0FBU2xCLElBQUlHLEVBQUUsV0FBV0gsRUFBRSxLQUFLRyxDQUFDO0FBQUEsUUFDaEQsVUFBRTtBQUNBLGNBQUksRUFBRyxPQUFNLEVBQUU7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFDQSxVQUFJO0FBQ0YsZUFBTyxFQUFFLEVBQUUsTUFBTUwsRUFBRSxRQUFRLENBQUM7QUFBQSxJQUNoQyxHQUFHO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRCxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQ3JCLE1BQUksSUFBSSxPQUFPLFVBQVUsY0FBYyxFQUFFLE9BQU8sUUFBUTtBQUN4RCxNQUFJLENBQUMsRUFBRyxRQUFPO0FBQ2YsTUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUdFLEdBQUdHLElBQUksQ0FBQyxHQUFHTDtBQUM5QixNQUFJO0FBQ0YsWUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLEVBQUVFLElBQUksRUFBRSxLQUFLLEdBQUcsT0FBUSxDQUFBRyxFQUFFLEtBQUtILEVBQUUsS0FBSztBQUFBLEVBQzVFLFNBQVNJLEdBQUc7QUFDVixJQUFBTixJQUFJLEVBQUUsT0FBT00sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQUosS0FBSyxDQUFDQSxFQUFFLFNBQVMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSUYsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0s7QUFDVCxHQUFHNkIsS0FBSyxTQUFTLEdBQUcsR0FBRyxHQUFHO0FBQ3hCLE1BQUksVUFBVSxXQUFXLEVBQUcsVUFBUyxJQUFJLEdBQUdoQyxJQUFJLEVBQUUsUUFBUUcsR0FBRyxJQUFJSCxHQUFHO0FBQ2xFLEtBQUNHLEtBQUssRUFBRSxLQUFLLFFBQVFBLE1BQU1BLElBQUksTUFBTSxVQUFVLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJQSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakYsU0FBTyxFQUFFLE9BQU9BLEtBQUssTUFBTSxVQUFVLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDcEQsR0FBRzhCO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTLElBQUk7QUFDWCxXQUFLLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxXQUFXO0FBQUEsSUFDNUM7QUFDQSxXQUFPLEVBQUUsVUFBVSxTQUFTLFNBQVMsR0FBRyxHQUFHO0FBQ3pDLFVBQUk7QUFDSixVQUFJLEtBQUs7QUFDUCxlQUFPLEVBQUU7QUFBQSxVQUNQLE1BQU1uQyxFQUFFO0FBQUEsVUFDUixPQUFPLElBQUksTUFBTSwyQkFBMkI7QUFBQSxRQUM5QyxDQUFDO0FBQ0gsT0FBQyxJQUFJLEtBQUssZ0JBQWdCLEtBQUssTUFBTSxHQUFHa0MsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxXQUFXO0FBQ2hGLGVBQU8sRUFBRSxFQUFFLE1BQU1sQyxFQUFFLFFBQVEsQ0FBQztBQUFBLE1BQzlCLEdBQUcsQ0FBQztBQUFBLElBQ04sR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sS0FBSyxXQUFXLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssV0FBVztBQUFBLElBQ3ZFLEdBQUcsRUFBRSxVQUFVLGFBQWEsV0FBVztBQUNyQyxhQUFPLFFBQVEsUUFBUTtBQUFBLElBQ3pCLEdBQUcsRUFBRSxVQUFVLFFBQVEsV0FBVztBQUNoQyxXQUFLLGlCQUFpQixDQUFDO0FBQUEsSUFDekIsR0FBRyxFQUFFLFVBQVUsbUJBQW1CLFdBQVc7QUFDM0MsYUFBTyxLQUFLO0FBQUEsSUFDZCxHQUFHO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRG9DLEtBQUssU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHO0FBQzNCLFdBQVNsQyxFQUFFRyxHQUFHO0FBQ1osV0FBT0EsYUFBYSxJQUFJQSxJQUFJLElBQUksRUFBRSxTQUFTTCxHQUFHO0FBQzVDLE1BQUFBLEVBQUVLLENBQUM7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNIO0FBQ0EsU0FBTyxLQUFLLE1BQU0sSUFBSSxVQUFVLFNBQVNBLEdBQUdMLEdBQUc7QUFDN0MsYUFBU00sRUFBRXJCLEdBQUc7QUFDWixVQUFJO0FBQ0YsVUFBRSxFQUFFLEtBQUtBLENBQUMsQ0FBQztBQUFBLE1BQ2IsU0FBU3lCLEdBQUc7QUFDVixRQUFBVixFQUFFVSxDQUFDO0FBQUEsTUFDTDtBQUFBLElBQ0Y7QUFDQSxhQUFTRCxFQUFFeEIsR0FBRztBQUNaLFVBQUk7QUFDRixVQUFFLEVBQUUsTUFBTUEsQ0FBQyxDQUFDO0FBQUEsTUFDZCxTQUFTeUIsR0FBRztBQUNWLFFBQUFWLEVBQUVVLENBQUM7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUNBLGFBQVMsRUFBRXpCLEdBQUc7QUFDWixNQUFBQSxFQUFFLE9BQU9vQixFQUFFcEIsRUFBRSxLQUFLLElBQUlpQixFQUFFakIsRUFBRSxLQUFLLEVBQUUsS0FBS3FCLEdBQUdHLENBQUM7QUFBQSxJQUM1QztBQUNBLE9BQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFBQSxFQUMvQixDQUFDO0FBQ0gsR0FBRzRCLEtBQUssU0FBUyxHQUFHLEdBQUc7QUFDckIsTUFBSSxJQUFJLEVBQUUsT0FBTyxHQUFHLE1BQU0sV0FBVztBQUNuQyxRQUFJaEMsRUFBRSxDQUFDLElBQUksRUFBRyxPQUFNQSxFQUFFLENBQUM7QUFDdkIsV0FBT0EsRUFBRSxDQUFDO0FBQUEsRUFDWixHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsR0FBR0gsR0FBR0csR0FBR0w7QUFDakMsU0FBT0EsSUFBSSxFQUFFLE1BQU1NLEVBQUUsQ0FBQyxHQUFHLE9BQU9BLEVBQUUsQ0FBQyxHQUFHLFFBQVFBLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxVQUFVLGVBQWVOLEVBQUUsT0FBTyxRQUFRLElBQUksV0FBVztBQUNwSCxXQUFPO0FBQUEsRUFDVCxJQUFJQTtBQUNKLFdBQVNNLEVBQUUsR0FBRztBQUNaLFdBQU8sU0FBU3JCLEdBQUc7QUFDakIsYUFBT3dCLEVBQUUsQ0FBQyxHQUFHeEIsQ0FBQyxDQUFDO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsV0FBU3dCLEVBQUUsR0FBRztBQUNaLFFBQUksRUFBRyxPQUFNLElBQUksVUFBVSxpQ0FBaUM7QUFDNUQsV0FBTyxJQUFLLEtBQUk7QUFDZCxVQUFJLElBQUksR0FBR1AsTUFBTUcsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJSCxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQUlBLEVBQUUsV0FBV0csSUFBSUgsRUFBRSxXQUFXRyxFQUFFLEtBQUtILENBQUMsR0FBRyxLQUFLQSxFQUFFLFNBQVMsRUFBRUcsSUFBSUEsRUFBRSxLQUFLSCxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBTSxRQUFPRztBQUMvSSxjQUFRSCxJQUFJLEdBQUdHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDbkQsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILFVBQUFBLElBQUk7QUFDSjtBQUFBLFFBQ0YsS0FBSztBQUNILGlCQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHO0FBQUEsUUFDNUMsS0FBSztBQUNILFlBQUUsU0FBU0gsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQjtBQUFBLFFBQ0YsS0FBSztBQUNILGNBQUksRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSTtBQUM1QjtBQUFBLFFBQ0Y7QUFDRSxjQUFJRyxJQUFJLEVBQUUsTUFBTSxFQUFFQSxJQUFJQSxFQUFFLFNBQVMsS0FBS0EsRUFBRUEsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxNQUFNLElBQUk7QUFDcEYsZ0JBQUk7QUFDSjtBQUFBLFVBQ0Y7QUFDQSxjQUFJLEVBQUUsQ0FBQyxNQUFNLE1BQU0sQ0FBQ0EsS0FBSyxFQUFFLENBQUMsSUFBSUEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUlBLEVBQUUsQ0FBQyxJQUFJO0FBQ3BELGNBQUUsUUFBUSxFQUFFLENBQUM7QUFDYjtBQUFBLFVBQ0Y7QUFDQSxjQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxRQUFRQSxFQUFFLENBQUMsR0FBRztBQUNoQyxjQUFFLFFBQVFBLEVBQUUsQ0FBQyxHQUFHQSxJQUFJO0FBQ3BCO0FBQUEsVUFDRjtBQUNBLGNBQUlBLEtBQUssRUFBRSxRQUFRQSxFQUFFLENBQUMsR0FBRztBQUN2QixjQUFFLFFBQVFBLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUM7QUFDNUI7QUFBQSxVQUNGO0FBQ0EsVUFBQUEsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSTtBQUNoQztBQUFBLE1BQ0o7QUFDQSxVQUFJLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxJQUNqQixTQUFTcEIsR0FBRztBQUNWLFVBQUksQ0FBQyxHQUFHQSxDQUFDLEdBQUdpQixJQUFJO0FBQUEsSUFDbEIsVUFBRTtBQUNBLFVBQUlHLElBQUk7QUFBQSxJQUNWO0FBQ0EsUUFBSSxFQUFFLENBQUMsSUFBSSxFQUFHLE9BQU0sRUFBRSxDQUFDO0FBQ3ZCLFdBQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLFFBQVEsTUFBTSxHQUFHO0FBQUEsRUFDakQ7QUFDRixHQUFHaUM7QUFBQTtBQUFBLEVBRUQsV0FBVztBQUNULGFBQVMsRUFBRSxHQUFHO0FBQ1osV0FBSyxZQUFZLEdBQUcsS0FBSyxnQkFBZ0IsSUFBSTlDLEVBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxLQUFLLHFCQUFxQyxvQkFBSSxJQUFJO0FBQUEsSUFDM0g7QUFDQSxXQUFPLEVBQUUsVUFBVSxhQUFhLFdBQVc7QUFDekMsYUFBTzRDLEdBQUcsTUFBTSxRQUFRLFFBQVEsV0FBVztBQUN6QyxlQUFPQyxHQUFHLE1BQU0sU0FBUyxHQUFHO0FBQzFCLGtCQUFRLEVBQUUsT0FBTztBQUFBLFlBQ2YsS0FBSztBQUNILHFCQUFPLENBQUMsR0FBRyxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssa0JBQWtCLENBQUMsQ0FBQztBQUFBLFlBQzdELEtBQUs7QUFDSCxxQkFBTyxFQUFFLEtBQUssR0FBRyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQUcsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUEsWUFDdkYsS0FBSztBQUNILGdCQUFFLEtBQUssR0FBRyxFQUFFLFFBQVE7QUFBQSxZQUN0QixLQUFLO0FBQ0gscUJBQU87QUFBQSxnQkFDTDtBQUFBO0FBQUEsY0FFRjtBQUFBLFVBQ0o7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxJQUNILEdBQUcsRUFBRSxVQUFVLFVBQVUsU0FBUyxHQUFHLEdBQUc7QUFBQSxJQUN4QyxHQUFHLEVBQUUsVUFBVSxRQUFRLFNBQVMsR0FBRztBQUNqQyxVQUFJLElBQUksTUFBTSxHQUFHbkM7QUFDakIsVUFBSSxDQUFDLEtBQUssY0FBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWF4QyxFQUFLLFNBQVM7QUFDN0UsWUFBSTJDLElBQUksV0FBVztBQUNqQixpQkFBT1osR0FBRyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU2EsR0FBRztBQUNuRCxnQkFBSUc7QUFDSixZQUFBSCxFQUFFLFNBQVNOLEVBQUUsV0FBV2pCLEdBQU0wQixJQUFJSCxFQUFFLFdBQVcsUUFBUUcsTUFBTSxTQUFTQSxJQUFJLElBQUksTUFBTSxxREFBcURILElBQUksR0FBRyxDQUFDO0FBQUEsVUFDbkosQ0FBQyxFQUFFLE1BQU0sU0FBU0EsR0FBRztBQUNuQixZQUFBdkIsRUFBS3VCLENBQUM7QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQ0EsWUFBSSxFQUFFLFNBQVMsd0JBQXdCO0FBQ3JDLGNBQUljLEtBQU9sQixLQUFLLElBQUksRUFBRSxVQUFVLDRCQUE0QixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDcEgsbUJBQU9rQixLQUFPLFFBQVEsRUFBRSxtQkFBbUIsT0FBT0EsQ0FBRyxHQUFHZixFQUFFO0FBQUEsVUFDNUQsR0FBRyxTQUFTQyxHQUFHO0FBQ2IsbUJBQU92QixFQUFLdUIsQ0FBQztBQUFBLFVBQ2YsQ0FBQztBQUNELFVBQUFjLEtBQU8sUUFBUSxLQUFLLG1CQUFtQixJQUFJQSxDQUFHO0FBQUEsUUFDaEQ7QUFDRSxVQUFBZixFQUFFO0FBQUEsTUFDTjtBQUFBLElBQ0YsR0FBRyxFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sS0FBSyxjQUFjLEtBQUs7QUFBQSxJQUNqQyxHQUFHLEVBQUUsVUFBVSxZQUFZLFdBQVc7QUFDcEMsYUFBTyxLQUFLLFVBQVUsU0FBUztBQUFBLElBQ2pDLEdBQUc7QUFBQSxFQUNMLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiamUiLCAiZ24iLCAienQkMSIsICJ0cyIsICJ4ZSIsICJXaSIsICJFZSIsICJyIiwgInFlIiwgIndlIiwgIlIiLCAicF8iLCAiTyQxIiwgIk5fIiwgIkhfIiwgInJBIiwgIk5BIiwgInlfIiwgImtlIiwgInJfIiwgIk1BIiwgIloiLCAiWmUiLCAibmUkMSIsICJ3IiwgInAiLCAicHIiLCAiYnIiLCAiSmUiLCAiVyQxIiwgInNyIiwgImtyIiwgIlpyIiwgInR0IiwgInIkMSIsICJPVCIsICJMVCIsICJQJDEiLCAiTSIsICJSJDEiLCAiYSIsICJidCIsICJvIiwgIkN0IiwgIlgiLCAiaSIsICJzIiwgInh0IiwgIk90IiwgImwiLCAiZiIsICJQIiwgImciLCAiRCIsICJXIiwgIkUiLCAiSiIsICJZIiwgImMiLCAieSIsICJhJDEiLCAiQnQiLCAiRHQiLCAiR3QiLCAicSIsICJ4IiwgInAkMSIsICJHIiwgImIiLCAiTyIsICJLIiwgIlZ0IiwgImt0IiwgIlMiLCAiWHQiLCAiaWUiLCAiV3QiLCAiWXQiLCAib2UiXQp9Cg==