@phenixrts/sdk 2024.2.1 → 2024.2.2-beta.289

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 (44) hide show
  1. package/channels/debug/channels.js +62 -58
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  4. package/channels/debug.private/channels.js +60 -56
  5. package/channels/debug.private/package.json +1 -1
  6. package/channels/debug.private/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  7. package/channels/es5.debug.private/channels.js +56 -52
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/378.js.map +1 -1
  10. package/channels/min/channels.js +1 -1
  11. package/channels/min/channels.js.map +1 -1
  12. package/channels/min/package.json +1 -1
  13. package/channels/min.private/378.js.map +1 -1
  14. package/channels/min.private/channels.js +1 -1
  15. package/channels/min.private/channels.js.map +1 -1
  16. package/channels/min.private/package.json +1 -1
  17. package/channels/package.json +1 -1
  18. package/full/debug/full.js +69 -65
  19. package/full/debug/package.json +1 -1
  20. package/full/debug/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  21. package/full/debug.private/full.js +67 -63
  22. package/full/debug.private/package.json +1 -1
  23. package/full/debug.private/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  24. package/full/min/378.js.map +1 -1
  25. package/full/min/full.js +1 -1
  26. package/full/min/full.js.map +1 -1
  27. package/full/min/package.json +1 -1
  28. package/full/min.private/378.js.map +1 -1
  29. package/full/min.private/full.js +1 -1
  30. package/full/min.private/full.js.map +1 -1
  31. package/full/min.private/package.json +1 -1
  32. package/full/package.json +1 -1
  33. package/package.json +1 -1
  34. package/publish/debug/package.json +1 -1
  35. package/publish/debug/publish.js +45 -45
  36. package/publish/debug.private/package.json +1 -1
  37. package/publish/debug.private/publish.js +45 -45
  38. package/publish/min/package.json +1 -1
  39. package/publish/min/publish.js +1 -1
  40. package/publish/min/publish.js.map +1 -1
  41. package/publish/min.private/package.json +1 -1
  42. package/publish/min.private/publish.js +1 -1
  43. package/publish/min.private/publish.js.map +1 -1
  44. package/publish/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phenixrts/sdk/channels/debug",
3
- "version": "2024.2.1",
3
+ "version": "2024.2.2-beta.289",
4
4
  "files": [
5
5
  "*"
6
6
  ],
@@ -650,11 +650,11 @@ module.exports = toPropertyKey, module.exports.__esModule = true, module.exports
650
650
  function _typeof(o) {
651
651
  "@babel/helpers - typeof";
652
652
 
653
- return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
653
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
654
654
  return typeof o;
655
655
  } : function (o) {
656
656
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
657
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
657
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
658
658
  }
659
659
  module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
660
660
 
@@ -679,4 +679,4 @@ module.exports = _unsupportedIterableToArray, module.exports.__esModule = true,
679
679
  /***/ })
680
680
 
681
681
  }]);
682
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjX3Nka190cmFuc2Zvcm1hdGlvbl9Xb3JrZXJUcmFuc2Zvcm1TdHJlYW1fdHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUZBLElBR3FCQSxlQUFlO0VBQUEsU0FBQUEsZ0JBQUE7SUFBQUMsMklBQUEsT0FBQUQsZUFBQTtFQUFBO0VBQUEsT0FBQUUsd0lBQUEsQ0FBQUYsZUFBQTtJQUFBRyxHQUFBO0lBQUFDLEdBQUEsRUFrQmxDLFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBT0osZUFBZSxDQUFDSyxzQkFBc0I7SUFDL0M7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU8sSUFBSSxDQUFDRSxZQUFZO0lBQzFCO0VBQUM7SUFBQUgsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5QztNQUN2QyxPQUFPLElBQUksQ0FBQ0csb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQUosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnQztNQUM5QixPQUFPSixlQUFlLENBQUNRLFVBQVU7SUFDbkM7RUFBQztJQUFBTCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9KLGVBQWUsQ0FBQ1MsV0FBVztJQUNwQztFQUFDO0lBQUFOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT0osZUFBZSxDQUFDVSxXQUFXO0lBQ3BDO0VBQUM7SUFBQVAsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPSixlQUFlLENBQUNXLFdBQVc7SUFDcEM7RUFBQztJQUFBUixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9KLGVBQWUsQ0FBQ1ksV0FBVztJQUNwQztFQUFDO0lBQUFULEdBQUE7SUFBQUMsR0FB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LENBTHZSUSx5QkFBeUIsa0NBTVc7RUFDckRrQixJQUFJLEVBQUUsSUFBSXdCLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDeEssSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQzVEO0VBQU0sSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQUU7RUFDeEx2QixHQUFHLEVBQUUsSUFBSXVCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3pTdEIsR0FBRyxFQUFFLElBQUlzQixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BNLENBQUM7QUFBQWxELDJJQUFBLENBZGtCUSx5QkFBeUIsa0NBZVc7RUFDckRrQixJQUFJLEVBQUUsSUFBSXdCLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFBRTtFQUMxR3ZCLEdBQUcsRUFBRSxJQUFJdUIsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDdlJ0QixHQUFHLEVBQUUsSUFBSXNCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hILENBQUM7QUFBQWxELDJJQUFBLENBckJrQlEseUJBQXlCLHFCQXNCRjtFQUN4Q2dCLE1BQU0sRUFBRSxJQUFJMEIsVUFBVSxFQUNwQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNsSyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQ2hELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFBeEQsTUFBQSxDQUFBeUQsOElBQUEsQ0FBSyxJQUFJRCxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRSxJQUFJLEdBQUFELDhJQUFBLENBQUssSUFBSUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUUsSUFBSTtFQUFFO0VBQ3ZILElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUFELDhJQUFBLENBQUssSUFBSUQsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJ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Q0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMseUJBQXlCLFNBQVMseUJBQXlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Ccm93c2VyRGV0ZWN0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vV29ya2VyVHJhbnNmb3JtU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4ZjQsIDB4MDAsIDB4MGEsIDB4OTEsIDB4OWIsIDB4MmIsIDB4ZjEsIDB4ZjEsIDB4ZjgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDcsIDB4ODksIDB4MTIsIDB4Y2IsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4OWEsIDB4NjgsIDB4NDksIDB4YTgsIDB4NDEsIDB4NjgsIDB4OTksIDB4NGMsIDB4MGYsIDB4ZmYsIDB4OTIsIDB4ODFdKSwgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4MzEsIDB4MDMsIDB4MDAsIDB4ZTQsIDB4ZTAsIDB4YTgsIDB4OWIsIDB4MzcsIDB4YWYsIDB4MTAsIDB4NGYsIDB4NGYsIDB4YjEsIDB4MGEsIDB4MmYsIDB4ZTQsIDB4OTIsIDB4YzAsIDB4MWYsIDB4ZTcsIDB4NGYsIDB4NDYsIDB4ZmYsIDB4ZWUsIDB4NTEsIDB4YzEsIDB4NWQsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDg2LCAweDAwLCAweDQwLCAweDkyLCAweDljLCAweDI0LCAweDQ4LCAweDAwLCAweDAwLCAweDAzLCAweDcwLCAweDAwLCAweDAwLCAweDRiLCAweDQwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0ID0ge1xuICAgIElGcmFtZTogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NywgMHg0MiwgMHhjMCwgMHgwZCwgMHhkYSwgMHgxOCwgMHhkZSwgMHgyMiwgMHgyMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMywgMHhjOCwgMHhmMSwgMHg0MiwgMHhhYSwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhjZSwgMHgwZiwgMHhjOCwgLy8gUGljdHVyZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHg1ZiwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAyOTUpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiAoU0VJKVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4NCwgMHgwNSwgLi4ubmV3IFVpbnQ4QXJyYXkoMykuZmlsbCgweGZmKSwgMHgwZiwgMHg0NSwgMHgwMCwgMHgwMSwgMHg1NywgMHg5ZiwgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3OF0pLCAvLyBTbGljZSBsYXllcjogSWRyIGRhdGFcbiAgICBQRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDMsIC4uLm5ldyBVaW50OEFycmF5KDQwKS5maWxsKDB4ZmYpLCAweGE0LCAuLi5uZXcgVWludDhBcnJheSgxMDM2NCkuZmlsbCgweGZmKSwgMHg4MCwgLy8gU0VJXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDIwLCAweDE1LCAweGYwLCAweDRiXSkgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4ID0gMTA0MTg7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzTW9iaWxlQ2hyb21lIHx8IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnT1BVUyc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NC5JRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnSDI2NCc6IHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDgnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA5Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKGNvZGVjOiBzdHJpbmcpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMudG9VcHBlckNhc2UoKSA9PT0gJ0gyNjQnKSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICBjb25zdCBzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcjtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpO1xuXG4gICAgICBpZiAoc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA+IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCkge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYml0TWFzazEgPSAweDBlO1xuICAgIGNvbnN0IGJpdE1hc2syID0gMHgwMTtcbiAgICBjb25zdCBiaXRTaGlmdFJpZ2h0QnkxID0gMTtcbiAgICBjb25zdCBiaXRTaGlmdExlZnRCeTcgPSA3O1xuICAgIGNvbnN0IGJ5dGUxID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazEpID4+IGJpdFNoaWZ0UmlnaHRCeTEpO1xuICAgIGNvbnN0IGJ5dGUyID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazIpIDw8IGJpdFNoaWZ0TGVmdEJ5Nyk7XG4gICAgY29uc3QgY29weU9mRHVtbXlQRnJhbWVzID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuUEZyYW1lLnNsaWNlKCk7XG4gICAgY29uc3QgYnVmZmVyID0gY29weU9mRHVtbXlQRnJhbWVzLmJ1ZmZlcjtcbiAgICBjb25zdCBidWZmZXJJbmRleCA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleDtcblxuICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gfD0gYnl0ZTE7XG4gICAgYnVmZmVyW2J1ZmZlckluZGV4ICsgMV0gfD0gYnl0ZTI7XG4gICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcisrO1xuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcblxudHlwZSBUcmFuc2Zvcm1TdHJlYW1Qb3N0TWVzc2FnZSA9IHtcbiAgb3B0aW9uczoge1xuICAgIGtpbmQ6IHN0cmluZztcbiAgICBjb2RlYzogc3RyaW5nO1xuICB9O1xuICByZWFkYWJsZTogUmVhZGFibGVTdHJlYW07XG4gIHdyaXRhYmxlOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbnR5cGUgRm9yY2VJbnZhbGlkRnJhbWVQb3N0TWVzc2FnZSA9IHtcbiAgZm9yY2VJbnZhbGlkRnJhbWU6IGJvb2xlYW47XG59O1xuXG5pbnRlcmZhY2UgSVJlc3BvbnNlV29ya2VyIHtcbiAgb25tZXNzYWdlOiAobWVzc2FnZTogTWVzc2FnZUV2ZW50PEZvcmNlSW52YWxpZEZyYW1lUG9zdE1lc3NhZ2U+KSA9PiB2b2lkO1xufVxuXG5jb25zdCB3b3JrZXI6IElSZXNwb25zZVdvcmtlciA9IHNlbGYgYXMgSVJlc3BvbnNlV29ya2VyO1xuXG53b3JrZXIub25tZXNzYWdlID0gZXZlbnQgPT4ge1xuICBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uZm9yY2VJbnZhbGlkRnJhbWUgPSBldmVudC5kYXRhLmZvcmNlSW52YWxpZEZyYW1lO1xufTtcblxuaWYgKHNlbGYuUlRDVHJhbnNmb3JtRXZlbnQpIHtcbiAgc2VsZi5vbnJ0Y3RyYW5zZm9ybSA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyIGFzIFRyYW5zZm9ybVN0cmVhbVBvc3RNZXNzYWdlO1xuXG4gICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjID0gdHJhbnNmb3JtZXIub3B0aW9ucy5jb2RlYztcbiAgICBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udHJhbnNmb3JtRnVuY3Rpb24gPSB0cmFuc2Zvcm1lci5vcHRpb25zLmtpbmQgPT09ICd2aWRlbycgPyBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udmlkZW9UcmFuc2Zvcm1GdW5jdGlvbiA6IFdvcmtlclRyYW5zZm9ybVN0cmVhbS5hdWRpb1RyYW5zZm9ybUZ1bmN0aW9uO1xuICAgIFdvcmtlclRyYW5zZm9ybVN0cmVhbS5mb3JjZUludmFsaWRGcmFtZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtU3RyZWFtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udHJhbnNmb3JtRnVuY3Rpb259KTtcbiAgICBjb25zdCBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcbiAgICBjb25zdCBzaW5rID0gdHJhbnNmb3JtZXIud3JpdGFibGU7XG5cbiAgICBzb3VyY2VcbiAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1TdHJlYW0pXG4gICAgICAucGlwZVRvKHNpbmspO1xuICB9O1xufVxuXG5jbGFzcyBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0ge1xuICBzdGF0aWMgY29kZWM6IHN0cmluZztcbiAgc3RhdGljIHRyYW5zZm9ybUZ1bmN0aW9uOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWUsIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPiB8IHVuZGVmaW5lZDtcbiAgc3RhdGljIGZvcmNlSW52YWxpZEZyYW1lOiBib29sZWFuO1xuXG4gIHN0YXRpYyB2aWRlb1RyYW5zZm9ybUZ1bmN0aW9uKGNodW5rLCBjb250cm9sbGVyKTogdm9pZCB7XG4gICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgY2h1bms6IHtcbiAgICAgICAgdHlwZTogY2h1bmsudHlwZSxcbiAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXG4gICAgICAgIGRhdGE6IGNodW5rLmRhdGFcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uZm9yY2VJbnZhbGlkRnJhbWUpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmZvcmNlSW52YWxpZEZyYW1lID0gZmFsc2U7XG5cbiAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uY29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyhXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uY29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKFdvcmtlclRyYW5zZm9ybVN0cmVhbS5jb2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICB9XG5cbiAgc3RhdGljIGF1ZGlvVHJhbnNmb3JtRnVuY3Rpb24oY2h1bmssIGNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBwb3N0TWVzc2FnZSh7XG4gICAgICBjaHVuazoge1xuICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcbiAgICAgICAgZGF0YTogY2h1bmsuZGF0YVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKFdvcmtlclRyYW5zZm9ybVN0cmVhbS5mb3JjZUludmFsaWRGcmFtZSkge1xuICAgICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmZvcmNlSW52YWxpZEZyYW1lID0gZmFsc2U7XG4gICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignV29ya2VyVHJhbnNmb3JtU3RyZWFtIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQge307IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJuYW1lcyI6WyJCcm93c2VyRGV0ZWN0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsInZhbHVlIiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsIl9kZWZpbmVQcm9wZXJ0eSIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsImRlZmF1bHQiLCJTa2lwRnJhbWUiLCJTeW1ib2wiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiRXJyb3IiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiY29kZWMiLCJ0b1VwcGVyQ2FzZSIsIl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJPUFVTIiwiYnVmZmVyIiwidW5kZWZpbmVkIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSIsIl9zaW5nbGVaZXJvQnl0ZSIsImdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMiLCJfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9kdW1teTgyeDgySDI2NCIsIklGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJIMjY0IiwiVlA4IiwiVlA5IiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiX2lzQW5kcm9pZENocm9tZSIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJnZXRTdXJyb2dhdGU4Mng4MlBGcmFtZUFuZFVwZGF0ZUZyYW1lTnVtYmVyIiwiX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyIsImdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSIsInNhdmVkU3Vycm9nYXRlRnJhbWVOdW1iZXIiLCJiaXRNYXNrMSIsImJpdE1hc2syIiwiYml0U2hpZnRSaWdodEJ5MSIsImJpdFNoaWZ0TGVmdEJ5NyIsImJ5dGUxIiwiYnl0ZTIiLCJjb3B5T2ZEdW1teVBGcmFtZXMiLCJQRnJhbWUiLCJzbGljZSIsImJ1ZmZlckluZGV4IiwiX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleCIsIl9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiYnJvd3Nlck5hbWUiLCJpc0FuZHJvaWQiLCJVaW50OEFycmF5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmlsbCIsIl9pc01vYmlsZUNocm9tZSIsIl9pc1NhZmFyaSIsIndvcmtlciIsInNlbGYiLCJvbm1lc3NhZ2UiLCJldmVudCIsIldvcmtlclRyYW5zZm9ybVN0cmVhbSIsImZvcmNlSW52YWxpZEZyYW1lIiwiZGF0YSIsIlJUQ1RyYW5zZm9ybUV2ZW50Iiwib25ydGN0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1lciIsIm9wdGlvbnMiLCJ0cmFuc2Zvcm1GdW5jdGlvbiIsImtpbmQiLCJ2aWRlb1RyYW5zZm9ybUZ1bmN0aW9uIiwiYXVkaW9UcmFuc2Zvcm1GdW5jdGlvbiIsInRyYW5zZm9ybVN0cmVhbSIsIlRyYW5zZm9ybVN0cmVhbSIsInRyYW5zZm9ybSIsInNvdXJjZSIsInJlYWRhYmxlIiwic2luayIsIndyaXRhYmxlIiwicGlwZVRocm91Z2giLCJwaXBlVG8iLCJjaHVuayIsImNvbnRyb2xsZXIiLCJwb3N0TWVzc2FnZSIsInR5cGUiLCJ0aW1lc3RhbXAiLCJzdXJyb2dhdGUiLCJlbnF1ZXVlIl0sInNvdXJjZVJvb3QiOiIifQ==
682
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjX3Nka190cmFuc2Zvcm1hdGlvbl9Xb3JrZXJUcmFuc2Zvcm1TdHJlYW1fdHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUZBLElBR3FCQSxlQUFlO0VBQUEsU0FBQUEsZ0JBQUE7SUFBQUMsMklBQUEsT0FBQUQsZUFBQTtFQUFBO0VBQUEsT0FBQUUsd0lBQUEsQ0FBQUYsZUFBQTtJQUFBRyxHQUFBO0lBQUFDLEdBQUEsRUFrQmxDLFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBT0osZUFBZSxDQUFDSyxzQkFBc0I7SUFDL0M7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU8sSUFBSSxDQUFDRSxZQUFZO0lBQzFCO0VBQUM7SUFBQUgsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5QztNQUN2QyxPQUFPLElBQUksQ0FBQ0csb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQUosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnQztNQUM5QixPQUFPSixlQUFlLENBQUNRLFVBQVU7SUFDbkM7RUFBQztJQUFBTCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9KLGVBQWUsQ0FBQ1MsV0FBVztJQUNwQztFQUFDO0lBQUFOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT0osZUFBZSxDQUFDVSxXQUFXO0lBQ3BDO0VBQUM7SUFBQVAsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPSixlQUFlLENBQUNXLFdBQVc7SUFDcEM7RUFBQztJQUFBUixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9KLGVBQWUsQ0FBQ1ksV0FBVztJQUNwQztFQUFDO0lBQUFULEdBQUE7SUFBQUMsR0FB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LENBTHZSUSx5QkFBeUIsa0NBTVc7RUFDckRrQixJQUFJLEVBQUUsSUFBSXdCLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDeEssSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQzVEO0VBQU0sSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQUU7RUFDeEx2QixHQUFHLEVBQUUsSUFBSXVCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3pTdEIsR0FBRyxFQUFFLElBQUlzQixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BNLENBQUM7QUFBQWxELDJJQUFBLENBZGtCUSx5QkFBeUIsa0NBZVc7RUFDckRrQixJQUFJLEVBQUUsSUFBSXdCLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFBRTtFQUMxR3ZCLEdBQUcsRUFBRSxJQUFJdUIsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDdlJ0QixHQUFHLEVBQUUsSUFBSXNCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hILENBQUM7QUFBQWxELDJJQUFBLENBckJrQlEseUJBQXlCLHFCQXNCRjtFQUN4Q2dCLE1BQU0sRUFBRSxJQUFJMEIsVUFBVSxFQUNwQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNsSyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQ2hELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFBeEQsTUFBQSxDQUFBeUQsOElBQUEsQ0FBSyxJQUFJRCxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRSxJQUFJLEdBQUFELDhJQUFBLENBQUssSUFBSUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUUsSUFBSTtFQUFFO0VBQ3ZILElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUFELDhJQUFBLENBQUssSUFBSUQsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7RUFBRTtFQUNqU1QsTUFBTSxFQUFFLElBQUlPLFVBQVUsRUFDcEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUF4RCxNQUFBLENBQUF5RCw4SUFBQSxDQUFLLElBQUlELFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFFLElBQUksR0FBQUQsOElBQUEsQ0FBSyxJQUFJRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRSxJQUFJO0VBQUU7RUFDdkgsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBQUFwRCwySUFBQSxDQS9Ca0JRLHlCQUF5QiwyQ0FnQ29CLEtBQUs7QUFBQVIsMklBQUEsQ0FoQ2xEUSx5QkFBeUIsMkNBaUNvQixDQUFDO0FBQUFSLDJJQUFBLENBakM5Q1EseUJBQXlCLCtDQWtDd0JBLDBCQUF5QixDQUFDNkMsZUFBZSxJQUFJN0MsMEJBQXlCLENBQUM4QyxTQUFTO0FBQUF0RCwySUFBQSxDQWxDaklRLHlCQUF5QixzQ0FtQ01BLDBCQUF5QixDQUFDYyxxQ0FBcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3Q25IO0FBQ0E7QUFDQTtBQUNxRztBQW1CckcsSUFBTWlDLE1BQXVCLEdBQUdDLElBQXVCO0FBRXZERCxNQUFNLENBQUNFLFNBQVMsR0FBRyxVQUFBQyxLQUFLLEVBQUk7RUFDMUJDLHFCQUFxQixDQUFDQyxpQkFBaUIsR0FBR0YsS0FBSyxDQUFDRyxJQUFJLENBQUNELGlCQUFpQjtBQUN4RSxDQUFDO0FBRUQsSUFBSUosSUFBSSxDQUFDTSxpQkFBaUIsRUFBRTtFQUMxQk4sSUFBSSxDQUFDTyxjQUFjLEdBQUcsVUFBQUwsS0FBSyxFQUFJO0lBQzdCLElBQU1NLFdBQVcsR0FBR04sS0FBSyxDQUFDTSxXQUF5QztJQUVuRUwscUJBQXFCLENBQUNoRCxLQUFLLEdBQUdxRCxXQUFXLENBQUNDLE9BQU8sQ0FBQ3RELEtBQUs7SUFDdkRnRCxxQkFBcUIsQ0FBQ08saUJBQWlCLEdBQUdGLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDRSxJQUFJLEtBQUssT0FBTyxHQUFHUixxQkFBcUIsQ0FBQ1Msc0JBQXNCLEdBQUdULHFCQUFxQixDQUFDVSxzQkFBc0I7SUFDNUtWLHFCQUFxQixDQUFDQyxpQkFBaUIsR0FBRyxLQUFLO0lBRS9DLElBQU1VLGVBQWUsR0FBRyxJQUFJQyxlQUFlLENBQUM7TUFBQ0MsU0FBUyxFQUFFYixxQkFBcUIsQ0FBQ087SUFBaUIsQ0FBQyxDQUFDO0lBQ2pHLElBQU1PLE1BQU0sR0FBR1QsV0FBVyxDQUFDVSxRQUFRO0lBQ25DLElBQU1DLElBQUksR0FBR1gsV0FBVyxDQUFDWSxRQUFRO0lBRWpDSCxNQUFNLENBQ0hJLFdBQVcsQ0FBQ1AsZUFBZSxDQUFDLENBQzVCUSxNQUFNLENBQUNILElBQUksQ0FBQztFQUNqQixDQUFDO0FBQ0g7QUFBQyxJQUVLaEIscUJBQXFCO0VBMkR6QixTQUFBQSxzQkFBQSxFQUFzQjtJQUFBcEcsMklBQUEsT0FBQW9HLHFCQUFBO0lBQ3BCLE1BQU0sSUFBSWxELEtBQUssQ0FBQyxzRUFBc0UsQ0FBQztFQUN6RjtFQUFDLE9BQUFqRCx3SUFBQSxDQUFBbUcscUJBQUE7SUFBQWxHLEdBQUE7SUFBQWMsS0FBQSxFQXhERCxTQUFPNkYsc0JBQXNCQSxDQUFDVyxLQUFLLEVBQUVDLFVBQVUsRUFBUTtNQUNyREMsV0FBVyxDQUFDO1FBQ1ZGLEtBQUssRUFBRTtVQUNMRyxJQUFJLEVBQUVILEtBQUssQ0FBQ0csSUFBSTtVQUNoQkMsU0FBUyxFQUFFSixLQUFLLENBQUNJLFNBQVM7VUFDMUJ0QixJQUFJLEVBQUVrQixLQUFLLENBQUNsQjtRQUNkO01BQ0YsQ0FBQyxDQUFDO01BRUYsSUFBSUYscUJBQXFCLENBQUNDLGlCQUFpQixFQUFFO1FBQzNDLElBQUl3QixTQUE2QjtRQUVqQ3pCLHFCQUFxQixDQUFDQyxpQkFBaUIsR0FBRyxLQUFLO1FBRS9DLElBQUltQixLQUFLLENBQUNHLElBQUksS0FBSyxLQUFLLEVBQUU7VUFDeEJFLFNBQVMsR0FBRzVFLGtFQUF5QixDQUFDcUIsOEJBQThCLENBQUM4QixxQkFBcUIsQ0FBQ2hELEtBQUssQ0FBQztRQUNuRyxDQUFDLE1BQU07VUFDTHlFLFNBQVMsR0FBRzVFLGtFQUF5QixDQUFDMEIsOEJBQThCLENBQUN5QixxQkFBcUIsQ0FBQ2hELEtBQUssQ0FBQztRQUNuRztRQUVBLElBQUl5RSxTQUFTLEtBQUs5RSxpRUFBUyxFQUFFO1VBQzNCO1FBQ0Y7UUFFQXlFLEtBQUssQ0FBQ2xCLElBQUksR0FBR3VCLFNBQVMsSUFBSUwsS0FBSyxDQUFDbEIsSUFBSTtNQUN0QyxDQUFDLE1BQU07UUFDTCxJQUFJa0IsS0FBSyxDQUFDRyxJQUFJLEtBQUssS0FBSyxFQUFFO1VBQ3hCSCxLQUFLLENBQUNsQixJQUFJLEdBQUdyRCxrRUFBeUIsQ0FBQ1csK0JBQStCLENBQUN3QyxxQkFBcUIsQ0FBQ2hELEtBQUssQ0FBQyxJQUFJb0UsS0FBSyxDQUFDbEIsSUFBSTtRQUNuSCxDQUFDLE1BQU07VUFDTGtCLEtBQUssQ0FBQ2xCLElBQUksR0FBR3JELGtFQUF5QixDQUFDdUIsK0JBQStCLENBQUM0QixxQkFBcUIsQ0FBQ2hELEtBQUssQ0FBQyxJQUFJb0UsS0FBSyxDQUFDbEIsSUFBSTtRQUNuSDtNQUNGO01BRUFtQixVQUFVLENBQUNLLE9BQU8sQ0FBQ04sS0FBSyxDQUFDO0lBQzNCO0VBQUM7SUFBQXRILEdBQUE7SUFBQWMsS0FBQSxFQUVELFNBQU84RixzQkFBc0JBLENBQUNVLEtBQUssRUFBRUMsVUFBVSxFQUFRO01BQ3JEQyxXQUFXLENBQUM7UUFDVkYsS0FBSyxFQUFFO1VBQ0xJLFNBQVMsRUFBRUosS0FBSyxDQUFDSSxTQUFTO1VBQzFCdEIsSUFBSSxFQUFFa0IsS0FBSyxDQUFDbEI7UUFDZDtNQUNGLENBQUMsQ0FBQztNQUVGLElBQUlGLHFCQUFxQixDQUFDQyxpQkFBaUIsRUFBRTtRQUMzQ0QscUJBQXFCLENBQUNDLGlCQUFpQixHQUFHLEtBQUs7UUFDL0NtQixLQUFLLENBQUNsQixJQUFJLEdBQUdyRCxrRUFBeUIsQ0FBQ1MsNEJBQTRCLENBQUMsQ0FBQztNQUN2RSxDQUFDLE1BQU07UUFDTDhELEtBQUssQ0FBQ2xCLElBQUksR0FBR3JELGtFQUF5QixDQUFDRSwrQkFBK0IsQ0FBQ2lELHFCQUFxQixDQUFDaEQsS0FBSyxDQUFDLElBQUlvRSxLQUFLLENBQUNsQixJQUFJO01BQ25IO01BRUFtQixVQUFVLENBQUNLLE9BQU8sQ0FBQ04sS0FBSyxDQUFDO0lBQzNCO0VBQUM7QUFBQTtBQUFBL0UsMklBQUEsQ0F6REcyRCxxQkFBcUI7QUFBQTNELDJJQUFBLENBQXJCMkQscUJBQXFCO0FBQUEzRCwySUFBQSxDQUFyQjJELHFCQUFxQjs7Ozs7Ozs7Ozs7QUM5QzNCO0FBQ0E7QUFDQSxnQ0FBZ0MsT0FBTztBQUN2QztBQUNBO0FBQ0Esb0NBQW9DLHlCQUF5QixTQUFTLHlCQUF5Qjs7Ozs7Ozs7OztBQ0wvRix1QkFBdUIsbUJBQU8sQ0FBQyx3RkFBdUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHlCQUF5QixTQUFTLHlCQUF5Qjs7Ozs7Ozs7OztBQ0poRztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MseUJBQXlCLFNBQVMseUJBQXlCOzs7Ozs7Ozs7O0FDSDdGLG9CQUFvQixtQkFBTyxDQUFDLGtGQUFvQjtBQUNoRDtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCLHlCQUF5QixTQUFTLHlCQUF5Qjs7Ozs7Ozs7OztBQ1oxRixvQkFBb0IsbUJBQU8sQ0FBQyxrRkFBb0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0NBQWtDLHlCQUF5QixTQUFTLHlCQUF5Qjs7Ozs7Ozs7OztBQ1Q3RjtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMseUJBQXlCLFNBQVMseUJBQXlCOzs7Ozs7Ozs7O0FDSDlGO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx5QkFBeUIsU0FBUyx5QkFBeUI7Ozs7Ozs7Ozs7QUNIaEcsd0JBQXdCLG1CQUFPLENBQUMsMEZBQXdCO0FBQ3hELHNCQUFzQixtQkFBTyxDQUFDLHNGQUFzQjtBQUNwRCxpQ0FBaUMsbUJBQU8sQ0FBQyw0R0FBaUM7QUFDMUUsd0JBQXdCLG1CQUFPLENBQUMsMEZBQXdCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx5QkFBeUIsU0FBUyx5QkFBeUI7Ozs7Ozs7Ozs7QUNQaEcsY0FBYyxzR0FBaUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseUJBQXlCLFNBQVMseUJBQXlCOzs7Ozs7Ozs7O0FDWHpGLGNBQWMsc0dBQWlDO0FBQy9DLGtCQUFrQixtQkFBTyxDQUFDLDhFQUFrQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx5QkFBeUIsU0FBUyx5QkFBeUI7Ozs7Ozs7Ozs7QUNOM0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRyxFQUFFLHlCQUF5QixTQUFTLHlCQUF5QjtBQUNoRTtBQUNBLDBCQUEwQix5QkFBeUIsU0FBUyx5QkFBeUI7Ozs7Ozs7Ozs7QUNUckYsdUJBQXVCLG1CQUFPLENBQUMsd0ZBQXVCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMseUJBQXlCLFNBQVMseUJBQXlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Ccm93c2VyRGV0ZWN0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vV29ya2VyVHJhbnNmb3JtU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4ZjQsIDB4MDAsIDB4MGEsIDB4OTEsIDB4OWIsIDB4MmIsIDB4ZjEsIDB4ZjEsIDB4ZjgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDcsIDB4ODksIDB4MTIsIDB4Y2IsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4OWEsIDB4NjgsIDB4NDksIDB4YTgsIDB4NDEsIDB4NjgsIDB4OTksIDB4NGMsIDB4MGYsIDB4ZmYsIDB4OTIsIDB4ODFdKSwgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4MzEsIDB4MDMsIDB4MDAsIDB4ZTQsIDB4ZTAsIDB4YTgsIDB4OWIsIDB4MzcsIDB4YWYsIDB4MTAsIDB4NGYsIDB4NGYsIDB4YjEsIDB4MGEsIDB4MmYsIDB4ZTQsIDB4OTIsIDB4YzAsIDB4MWYsIDB4ZTcsIDB4NGYsIDB4NDYsIDB4ZmYsIDB4ZWUsIDB4NTEsIDB4YzEsIDB4NWQsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDg2LCAweDAwLCAweDQwLCAweDkyLCAweDljLCAweDI0LCAweDQ4LCAweDAwLCAweDAwLCAweDAzLCAweDcwLCAweDAwLCAweDAwLCAweDRiLCAweDQwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0ID0ge1xuICAgIElGcmFtZTogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NywgMHg0MiwgMHhjMCwgMHgwZCwgMHhkYSwgMHgxOCwgMHhkZSwgMHgyMiwgMHgyMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMywgMHhjOCwgMHhmMSwgMHg0MiwgMHhhYSwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhjZSwgMHgwZiwgMHhjOCwgLy8gUGljdHVyZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHg1ZiwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAyOTUpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiAoU0VJKVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4NCwgMHgwNSwgLi4ubmV3IFVpbnQ4QXJyYXkoMykuZmlsbCgweGZmKSwgMHgwZiwgMHg0NSwgMHgwMCwgMHgwMSwgMHg1NywgMHg5ZiwgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3OF0pLCAvLyBTbGljZSBsYXllcjogSWRyIGRhdGFcbiAgICBQRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDMsIC4uLm5ldyBVaW50OEFycmF5KDQwKS5maWxsKDB4ZmYpLCAweGE0LCAuLi5uZXcgVWludDhBcnJheSgxMDM2NCkuZmlsbCgweGZmKSwgMHg4MCwgLy8gU0VJXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDIwLCAweDE1LCAweGYwLCAweDRiXSkgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4ID0gMTA0MTg7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzTW9iaWxlQ2hyb21lIHx8IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnT1BVUyc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NC5JRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnSDI2NCc6IHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDgnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA5Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKGNvZGVjOiBzdHJpbmcpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMudG9VcHBlckNhc2UoKSA9PT0gJ0gyNjQnKSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICBjb25zdCBzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcjtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpO1xuXG4gICAgICBpZiAoc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA+IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCkge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYml0TWFzazEgPSAweDBlO1xuICAgIGNvbnN0IGJpdE1hc2syID0gMHgwMTtcbiAgICBjb25zdCBiaXRTaGlmdFJpZ2h0QnkxID0gMTtcbiAgICBjb25zdCBiaXRTaGlmdExlZnRCeTcgPSA3O1xuICAgIGNvbnN0IGJ5dGUxID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazEpID4+IGJpdFNoaWZ0UmlnaHRCeTEpO1xuICAgIGNvbnN0IGJ5dGUyID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazIpIDw8IGJpdFNoaWZ0TGVmdEJ5Nyk7XG4gICAgY29uc3QgY29weU9mRHVtbXlQRnJhbWVzID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuUEZyYW1lLnNsaWNlKCk7XG4gICAgY29uc3QgYnVmZmVyID0gY29weU9mRHVtbXlQRnJhbWVzLmJ1ZmZlcjtcbiAgICBjb25zdCBidWZmZXJJbmRleCA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleDtcblxuICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gfD0gYnl0ZTE7XG4gICAgYnVmZmVyW2J1ZmZlckluZGV4ICsgMV0gfD0gYnl0ZTI7XG4gICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcisrO1xuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcblxudHlwZSBUcmFuc2Zvcm1TdHJlYW1Qb3N0TWVzc2FnZSA9IHtcbiAgb3B0aW9uczoge1xuICAgIGtpbmQ6IHN0cmluZztcbiAgICBjb2RlYzogc3RyaW5nO1xuICB9O1xuICByZWFkYWJsZTogUmVhZGFibGVTdHJlYW07XG4gIHdyaXRhYmxlOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbnR5cGUgRm9yY2VJbnZhbGlkRnJhbWVQb3N0TWVzc2FnZSA9IHtcbiAgZm9yY2VJbnZhbGlkRnJhbWU6IGJvb2xlYW47XG59O1xuXG5pbnRlcmZhY2UgSVJlc3BvbnNlV29ya2VyIHtcbiAgb25tZXNzYWdlOiAobWVzc2FnZTogTWVzc2FnZUV2ZW50PEZvcmNlSW52YWxpZEZyYW1lUG9zdE1lc3NhZ2U+KSA9PiB2b2lkO1xufVxuXG5jb25zdCB3b3JrZXI6IElSZXNwb25zZVdvcmtlciA9IHNlbGYgYXMgSVJlc3BvbnNlV29ya2VyO1xuXG53b3JrZXIub25tZXNzYWdlID0gZXZlbnQgPT4ge1xuICBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uZm9yY2VJbnZhbGlkRnJhbWUgPSBldmVudC5kYXRhLmZvcmNlSW52YWxpZEZyYW1lO1xufTtcblxuaWYgKHNlbGYuUlRDVHJhbnNmb3JtRXZlbnQpIHtcbiAgc2VsZi5vbnJ0Y3RyYW5zZm9ybSA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyIGFzIFRyYW5zZm9ybVN0cmVhbVBvc3RNZXNzYWdlO1xuXG4gICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjID0gdHJhbnNmb3JtZXIub3B0aW9ucy5jb2RlYztcbiAgICBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udHJhbnNmb3JtRnVuY3Rpb24gPSB0cmFuc2Zvcm1lci5vcHRpb25zLmtpbmQgPT09ICd2aWRlbycgPyBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udmlkZW9UcmFuc2Zvcm1GdW5jdGlvbiA6IFdvcmtlclRyYW5zZm9ybVN0cmVhbS5hdWRpb1RyYW5zZm9ybUZ1bmN0aW9uO1xuICAgIFdvcmtlclRyYW5zZm9ybVN0cmVhbS5mb3JjZUludmFsaWRGcmFtZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtU3RyZWFtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0udHJhbnNmb3JtRnVuY3Rpb259KTtcbiAgICBjb25zdCBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcbiAgICBjb25zdCBzaW5rID0gdHJhbnNmb3JtZXIud3JpdGFibGU7XG5cbiAgICBzb3VyY2VcbiAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1TdHJlYW0pXG4gICAgICAucGlwZVRvKHNpbmspO1xuICB9O1xufVxuXG5jbGFzcyBXb3JrZXJUcmFuc2Zvcm1TdHJlYW0ge1xuICBzdGF0aWMgY29kZWM6IHN0cmluZztcbiAgc3RhdGljIHRyYW5zZm9ybUZ1bmN0aW9uOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWUsIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPiB8IHVuZGVmaW5lZDtcbiAgc3RhdGljIGZvcmNlSW52YWxpZEZyYW1lOiBib29sZWFuO1xuXG4gIHN0YXRpYyB2aWRlb1RyYW5zZm9ybUZ1bmN0aW9uKGNodW5rLCBjb250cm9sbGVyKTogdm9pZCB7XG4gICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgY2h1bms6IHtcbiAgICAgICAgdHlwZTogY2h1bmsudHlwZSxcbiAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXG4gICAgICAgIGRhdGE6IGNodW5rLmRhdGFcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uZm9yY2VJbnZhbGlkRnJhbWUpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmZvcmNlSW52YWxpZEZyYW1lID0gZmFsc2U7XG5cbiAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uY29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyhXb3JrZXJUcmFuc2Zvcm1TdHJlYW0uY29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKFdvcmtlclRyYW5zZm9ybVN0cmVhbS5jb2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICB9XG5cbiAgc3RhdGljIGF1ZGlvVHJhbnNmb3JtRnVuY3Rpb24oY2h1bmssIGNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBwb3N0TWVzc2FnZSh7XG4gICAgICBjaHVuazoge1xuICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcbiAgICAgICAgZGF0YTogY2h1bmsuZGF0YVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKFdvcmtlclRyYW5zZm9ybVN0cmVhbS5mb3JjZUludmFsaWRGcmFtZSkge1xuICAgICAgV29ya2VyVHJhbnNmb3JtU3RyZWFtLmZvcmNlSW52YWxpZEZyYW1lID0gZmFsc2U7XG4gICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoV29ya2VyVHJhbnNmb3JtU3RyZWFtLmNvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignV29ya2VyVHJhbnNmb3JtU3RyZWFtIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQge307IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibmFtZXMiOlsiQnJvd3NlckRldGVjdG9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJ2YWx1ZSIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJfZGVmaW5lUHJvcGVydHkiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJkZWZhdWx0IiwiU2tpcEZyYW1lIiwiU3ltYm9sIiwiU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsIkVycm9yIiwiZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyIsImNvZGVjIiwidG9VcHBlckNhc2UiLCJfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjIiwiT1BVUyIsImJ1ZmZlciIsInVuZGVmaW5lZCIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJfc2luZ2xlWmVyb0J5dGUiLCJnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjIiwiX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIiLCJfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQiLCJfZHVtbXk4Mng4MkgyNjQiLCJJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiSDI2NCIsIlZQOCIsIlZQOSIsImdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZSIsIl9pc0FuZHJvaWRDaHJvbWUiLCJnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjIiwiZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlciIsIl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUiLCJzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyIiwiYml0TWFzazEiLCJiaXRNYXNrMiIsImJpdFNoaWZ0UmlnaHRCeTEiLCJiaXRTaGlmdExlZnRCeTciLCJieXRlMSIsImJ5dGUyIiwiY29weU9mRHVtbXlQRnJhbWVzIiwiUEZyYW1lIiwic2xpY2UiLCJidWZmZXJJbmRleCIsIl9kdW1teTgyeDgySDI2NFBGcmFtZUZyYW1lTnVtYmVySW5kZXgiLCJfU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsImJyb3dzZXJOYW1lIiwiaXNBbmRyb2lkIiwiVWludDhBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbGwiLCJfaXNNb2JpbGVDaHJvbWUiLCJfaXNTYWZhcmkiLCJ3b3JrZXIiLCJzZWxmIiwib25tZXNzYWdlIiwiZXZlbnQiLCJXb3JrZXJUcmFuc2Zvcm1TdHJlYW0iLCJmb3JjZUludmFsaWRGcmFtZSIsImRhdGEiLCJSVENUcmFuc2Zvcm1FdmVudCIsIm9ucnRjdHJhbnNmb3JtIiwidHJhbnNmb3JtZXIiLCJvcHRpb25zIiwidHJhbnNmb3JtRnVuY3Rpb24iLCJraW5kIiwidmlkZW9UcmFuc2Zvcm1GdW5jdGlvbiIsImF1ZGlvVHJhbnNmb3JtRnVuY3Rpb24iLCJ0cmFuc2Zvcm1TdHJlYW0iLCJUcmFuc2Zvcm1TdHJlYW0iLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ3cml0YWJsZSIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwiY2h1bmsiLCJjb250cm9sbGVyIiwicG9zdE1lc3NhZ2UiLCJ0eXBlIiwidGltZXN0YW1wIiwic3Vycm9nYXRlIiwiZW5xdWV1ZSJdLCJzb3VyY2VSb290IjoiIn0=