@codingame/monaco-editor-wrapper 1.8.1 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { c as createBase64WorkerFactory } from './worker.js';
2
2
 
3
- var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KCgpPT57aWYoZS5zdGFjayl0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKTt0aHJvdyBlfSwwKX19YWRkTGlzdGVuZXIoZSl7cmV0dXJuIHRoaXMubGlzdGVuZXJzLnB1c2goZSksKCk9Pnt0aGlzLl9yZW1vdmVMaXN0ZW5lcihlKX19ZW1pdCh0KXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGU9PntlKHQpfSl9X3JlbW92ZUxpc3RlbmVyKGUpe3RoaXMubGlzdGVuZXJzLnNwbGljZSh0aGlzLmxpc3RlbmVycy5pbmRleE9mKGUpLDEpfXNldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWV9Z2V0VW5leHBlY3RlZEVycm9ySGFuZGxlcigpe3JldHVybiB0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXJ9b25VbmV4cGVjdGVkRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpLHRoaXMuZW1pdChlKX1vblVuZXhwZWN0ZWRFeHRlcm5hbEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKX19Y29uc3QgbD1uZXcgcztmdW5jdGlvbiBoKGUpeyFmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgcClyZXR1cm4hMDtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yJiZlLm5hbWU9PT1kJiZlLm1lc3NhZ2U9PT1kfShlKSYmbC5vblVuZXhwZWN0ZWRFcnJvcihlKX1mdW5jdGlvbiBjKGUpe3ZhciB0LG47cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj8oe25hbWU6dCxtZXNzYWdlOm59PWUseyRpc0Vycm9yOiEwLG5hbWU6dCxtZXNzYWdlOm4sc3RhY2s6ZS5zdGFja3RyYWNlfHxlLnN0YWNrfSk6ZX1jb25zdCBkPSJDYW5jZWxlZCI7Y2xhc3MgcCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoZCksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19dmFyIG07e3ZhciBmPW09bXx8e307Zi5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtTeW1ib2wuaXRlcmF0b3JdfTtjb25zdCBQYT1PYmplY3QuZnJlZXplKFtdKTtmLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIFBhfSxmLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZi5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxQYX0sZi5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFlfHwhMD09PWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lfSxmLmZpcnN0PWZ1bmN0aW9uKGUpe3JldHVybiBlW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9LGYuc29tZT1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4hMDtyZXR1cm4hMX0sZi5maW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxmLmZpbHRlcj1mdW5jdGlvbiooZSx0KXtmb3IoY29uc3QgbiBvZiBlKXQobikmJih5aWVsZCBuKX0sZi5tYXA9ZnVuY3Rpb24qKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKXlpZWxkIHQocixuKyspfSxmLmNvbmNhdD1mdW5jdGlvbiooLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgbiBvZiB0KXlpZWxkIG59LGYuY29uY2F0TmVzdGVkPWZ1bmN0aW9uKihlKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBuIG9mIHQpeWllbGQgbn0sZi5yZWR1Y2U9ZnVuY3Rpb24oZSx0LG4pe2xldCByPW47Zm9yKGNvbnN0IGkgb2YgZSlyPXQocixpKTtyZXR1cm4gcn0sZi5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGYuY29uc3VtZT1mdW5jdGlvbihlLHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBuPVtdO2lmKDA9PT10KXJldHVybltuLGVdO2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7dmFyIGk9ci5uZXh0KCk7aWYoaS5kb25lKXJldHVybltuLGYuZW1wdHkoKV07bi5wdXNoKGkudmFsdWUpfXJldHVybltuLHtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiByfX1dfSxmLmVxdWFscz1mdW5jdGlvbihlLHQsbj0oZSx0KT0+ZT09PXQpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe3ZhciBhPXIubmV4dCgpLG89aS5uZXh0KCk7aWYoYS5kb25lIT09by5kb25lKXJldHVybiExO2lmKGEuZG9uZSlyZXR1cm4hMDtpZighbihhLnZhbHVlLG8udmFsdWUpKXJldHVybiExfX19Y2xhc3MgZyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlLiBFcnJvcnM6IFske2Uuam9pbigiLCAiKX1dYCksdGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gYihlKXtpZihtLmlzKGUpKXtsZXQgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKGUpe3QucHVzaChlKX1pZigxPT09dC5sZW5ndGgpdGhyb3cgdFswXTtpZigxPHQubGVuZ3RoKXRocm93IG5ldyBnKHQpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9aWYoZSlyZXR1cm4gZS5kaXNwb3NlKCksZX1mdW5jdGlvbiBfKGUpe3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcztsZXQgbj0hMSxyO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuP3I6KG49ITAscj1lLmFwcGx5KHQsYXJndW1lbnRzKSl9fSgoKT0+e2UoKX0pfX1jbGFzcyB3e2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7dHJ5e2IodGhpcy5fdG9EaXNwb3NlLnZhbHVlcygpKX1maW5hbGx5e3RoaXMuX3RvRGlzcG9zZS5jbGVhcigpfX1hZGQoZSl7aWYoIWUpcmV0dXJuIGU7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZD93LkRJU0FCTEVfRElTUE9TRURfV0FSTklOR3x8Y29uc29sZS53YXJuKG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBhIGRpc3Bvc2FibGUgdG8gYSBEaXNwb3NhYmxlU3RvcmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIG9mLiBUaGUgYWRkZWQgb2JqZWN0IHdpbGwgYmUgbGVha2VkISIpLnN0YWNrKTp0aGlzLl90b0Rpc3Bvc2UuYWRkKGUpLGV9fXcuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HPSExO2NsYXNzIHZ7Y29uc3RydWN0b3IoKXt0aGlzLl9zdG9yZT1uZXcgdyx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3RlcihlKXtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQoZSl9fXYuTm9uZT1PYmplY3QuZnJlZXplKHtkaXNwb3NlKCl7fX0pO2NsYXNzIHl7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PXkuVW5kZWZpbmVkLHRoaXMucHJldj15LlVuZGVmaW5lZH19eS5VbmRlZmluZWQ9bmV3IHkodm9pZCAwKTtjbGFzcyBUe2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9eS5VbmRlZmluZWQsdGhpcy5fbGFzdD15LlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09eS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT15LlVuZGVmaW5lZDspe3ZhciB0PWUubmV4dDtlLnByZXY9eS5VbmRlZmluZWQsZS5uZXh0PXkuVW5kZWZpbmVkLGU9dH10aGlzLl9maXJzdD15LlVuZGVmaW5lZCx0aGlzLl9sYXN0PXkuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH11bnNoaWZ0KGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMSl9cHVzaChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITApfV9pbnNlcnQoZSx0KXtjb25zdCBuPW5ldyB5KGUpO2lmKHRoaXMuX2ZpcnN0PT09eS5VbmRlZmluZWQpdGhpcy5fZmlyc3Q9bix0aGlzLl9sYXN0PW47ZWxzZSBpZih0KXtjb25zdCBpPXRoaXMuX2xhc3Q7KCh0aGlzLl9sYXN0PW4pLnByZXY9aSkubmV4dD1ufWVsc2V7Y29uc3QgYT10aGlzLl9maXJzdDsoKHRoaXMuX2ZpcnN0PW4pLm5leHQ9YSkucHJldj1ufXRoaXMuX3NpemUrPTE7bGV0IHI9ITE7cmV0dXJuKCk9PntyfHwocj0hMCx0aGlzLl9yZW1vdmUobikpfX1zaGlmdCgpe3ZhciBlO2lmKHRoaXMuX2ZpcnN0IT09eS5VbmRlZmluZWQpcmV0dXJuIGU9dGhpcy5fZmlyc3QuZWxlbWVudCx0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9cG9wKCl7dmFyIGU7aWYodGhpcy5fbGFzdCE9PXkuVW5kZWZpbmVkKXJldHVybiBlPXRoaXMuX2xhc3QuZWxlbWVudCx0aGlzLl9yZW1vdmUodGhpcy5fbGFzdCksZX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PXkuVW5kZWZpbmVkJiZlLm5leHQhPT15LlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09eS5VbmRlZmluZWQmJmUubmV4dD09PXkuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD15LlVuZGVmaW5lZCx0aGlzLl9sYXN0PXkuVW5kZWZpbmVkKTplLm5leHQ9PT15LlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PXkuVW5kZWZpbmVkKTplLnByZXY9PT15LlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj15LlVuZGVmaW5lZCk7LS10aGlzLl9zaXplfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2xldCBlPXRoaXMuX2ZpcnN0O2Zvcig7ZSE9PXkuVW5kZWZpbmVkOyl5aWVsZCBlLmVsZW1lbnQsZT1lLm5leHR9fXZhciBlPSJlbiI7bGV0IGs9ITEsUz0hMSxDPSExLHg9dm9pZCAwLEw9ZTtsZXQgQT12b2lkIDA7Y29uc3QgRT0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IEk9dm9pZCAwO3ZvaWQgMCE9PUUudnNjb2RlJiZ2b2lkIDAhPT1FLnZzY29kZS5wcm9jZXNzP0k9RS52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihJPXByb2Nlc3MpO3ZhciBOPSJzdHJpbmciPT10eXBlb2YobnVsbD09PShOPW51bGw9PT1JfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLnZlcnNpb25zKXx8dm9pZCAwPT09Tj92b2lkIDA6Ti5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09PUl8fHZvaWQgMD09PUk/dm9pZCAwOkkudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fE4paWYoIm9iamVjdCI9PXR5cGVvZiBJKXtrPSJ3aW4zMiI9PT1JLnBsYXRmb3JtLFM9ImRhcndpbiI9PT1JLnBsYXRmb3JtLChDPSJsaW51eCI9PT1JLnBsYXRmb3JtKSYmSS5lbnYuU05BUCYmSS5lbnYuU05BUF9SRVZJU0lPTix4PWUsTD1lO049SS5lbnYuVlNDT0RFX05MU19DT05GSUc7aWYoTil0cnl7dmFyIFU9SlNPTi5wYXJzZShOKSx0PVUuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07eD1VLmxvY2FsZSxMPXR8fGUsVS5fdHJhbnNsYXRpb25zQ29uZmlnRmlsZX1jYXRjaChlKXt9fWVsc2UgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlc29sdmUgcGxhdGZvcm0uIik7ZWxzZSBBPW5hdmlnYXRvci51c2VyQWdlbnQsaz0wPD1BLmluZGV4T2YoIldpbmRvd3MiKSxTPTA8PUEuaW5kZXhPZigiTWFjaW50b3NoIiksKDA8PUEuaW5kZXhPZigiTWFjaW50b3NoIil8fDA8PUEuaW5kZXhPZigiaVBhZCIpfHwwPD1BLmluZGV4T2YoImlQaG9uZSIpKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMsQz0wPD1BLmluZGV4T2YoIkxpbnV4IikseD1uYXZpZ2F0b3IubGFuZ3VhZ2UsTD14O2NvbnN0IHo9ayxIPVMsRD1DLFc9QTsoKCk9PntpZigiZnVuY3Rpb24iIT10eXBlb2YgRS5wb3N0TWVzc2FnZXx8RS5pbXBvcnRTY3JpcHRzKXJldHVybjt7bGV0IGk9W10sZT0oRS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixuPT57aWYobi5kYXRhJiZuLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCByPWlbZV07aWYoci5pZD09PW4uZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gaS5zcGxpY2UoZSwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSwwKX19KSgpO3ZhciBQLE8sTj0hIShXJiYwPD1XLmluZGV4T2YoIkNocm9tZSIpKTtXJiZXLmluZGV4T2YoIkZpcmVmb3giKSwhTiYmVyYmVy5pbmRleE9mKCJTYWZhcmkiKSxXJiZXLmluZGV4T2YoIkVkZy8iKSxXJiZXLmluZGV4T2YoIkFuZHJvaWQiKTtjb25zdCBxPUUucGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBFLnBlcmZvcm1hbmNlLm5vdztjbGFzcyBGe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2hpZ2hSZXNvbHV0aW9uPXEmJmUsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfXN0YXRpYyBjcmVhdGUoZT0hMCl7cmV0dXJuIG5ldyBGKGUpfXN0b3AoKXt0aGlzLl9zdG9wVGltZT10aGlzLl9ub3coKX1lbGFwc2VkKCl7cmV0dXJuLTEhPT10aGlzLl9zdG9wVGltZT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfV9ub3coKXtyZXR1cm4odGhpcy5faGlnaFJlc29sdXRpb24/RS5wZXJmb3JtYW5jZTpEYXRlKS5ub3coKX19e3ZhciBWPVA9UHx8e307ZnVuY3Rpb24gQihhKXtyZXR1cm4odCxuPW51bGwsZSk9PntsZXQgcj0hMSxpO3JldHVybiBpPWEoZT0+e2lmKCFyKXJldHVybiBpP2kuZGlzcG9zZSgpOnI9ITAsdC5jYWxsKG4sZSl9LG51bGwsZSksciYmaS5kaXNwb3NlKCksaX19ZnVuY3Rpb24gSyhyLGkpe3JldHVybiBKKCh0LG49bnVsbCxlKT0+cihlPT50LmNhbGwobixpKGUpKSxudWxsLGUpKX1mdW5jdGlvbiBqKHIsaSl7cmV0dXJuIEooKHQsbj1udWxsLGUpPT5yKGU9PntpKGUpLHQuY2FsbChuLGUpfSxudWxsLGUpKX1mdW5jdGlvbiBHKHIsaSl7cmV0dXJuIEooKHQsbj1udWxsLGUpPT5yKGU9PmkoZSkmJnQuY2FsbChuLGUpLG51bGwsZSkpfWZ1bmN0aW9uICQoZSx0LG4pe2xldCByPW47cmV0dXJuIEsoZSxlPT5yPXQocixlKSl9ZnVuY3Rpb24gSihlKXtsZXQgdDtjb25zdCBuPW5ldyBaKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXt0PWUobi5maXJlLG4pfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe3QuZGlzcG9zZSgpfX0pO3JldHVybiBuLmV2ZW50fWZ1bmN0aW9uIFgoZSx0LG49MTAwLHI9ITEsaSl7bGV0IGEsbz12b2lkIDAscz12b2lkIDAsbD0wO2NvbnN0IGg9bmV3IFooe2xlYWtXYXJuaW5nVGhyZXNob2xkOmksb25GaXJzdExpc3RlbmVyQWRkKCl7YT1lKGU9PntsKyssbz10KG8sZSksciYmIXMmJihoLmZpcmUobyksbz12b2lkIDApLGNsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1vO289dm9pZCAwLHM9dm9pZCAwLCghcnx8MTxsKSYmaC5maXJlKGUpLGw9MH0sbil9KX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXthLmRpc3Bvc2UoKX19KTtyZXR1cm4gaC5ldmVudH1mdW5jdGlvbiBZKGUsbj0oZSx0KT0+ZT09PXQpe2xldCByPSEwLGk7cmV0dXJuIEcoZSxlPT57dmFyIHQ9cnx8IW4oZSxpKTtyZXR1cm4gcj0hMSxpPWUsdH0pfVYuTm9uZT0oKT0+di5Ob25lLFYub25jZT1CLFYubWFwPUssVi5mb3JFYWNoPWosVi5maWx0ZXI9RyxWLnNpZ25hbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sVi5hbnk9ZnVuY3Rpb24oLi4uaSl7cmV0dXJuKHQsbj1udWxsLHIpPT57dmFyWy4uLmVdPVsuLi5pLm1hcChlPT5lKGU9PnQuY2FsbChuLGUpLG51bGwscikpXTtyZXR1cm4gXygoKT0+YihlKSl9fSxWLnJlZHVjZT0kLFYuZGVib3VuY2VkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4scj0xMDAsaT0hMSl7bGV0IGE9dm9pZCAwLG89dm9pZCAwLHM9MDtyZXR1cm4gZShlPT57cysrLGE9bihhLGUpLGkmJiFvJiYodChhKSxhPXZvaWQgMCksY2xlYXJUaW1lb3V0KG8pLG89c2V0VGltZW91dCgoKT0+e3ZhciBlPWE7YT12b2lkIDAsbz12b2lkIDAsKCFpfHwxPHMpJiZ0KGUpLHM9MH0scil9KX0sVi5kZWJvdW5jZT1YLFYubGF0Y2g9WSxWLnNwbGl0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuW1YuZmlsdGVyKGUsdCksVi5maWx0ZXIoZSxlPT4hdChlKSldfSxWLmJ1ZmZlcj1mdW5jdGlvbihlLHQ9ITEsbj1bXSl7bGV0IHI9bi5zbGljZSgpLGk9ZShlPT57cj9yLnB1c2goZSk6by5maXJlKGUpfSk7Y29uc3QgYT0oKT0+e3ImJnIuZm9yRWFjaChlPT5vLmZpcmUoZSkpLHI9bnVsbH0sbz1uZXcgWih7b25GaXJzdExpc3RlbmVyQWRkKCl7aT1pfHxlKGU9Pm8uZmlyZShlKSl9LG9uRmlyc3RMaXN0ZW5lckRpZEFkZCgpe3ImJih0P3NldFRpbWVvdXQoYSk6YSgpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIE9he2NvbnN0cnVjdG9yKGUpe3RoaXMuZXZlbnQ9ZX1tYXAoZSl7cmV0dXJuIG5ldyBPYShLKHRoaXMuZXZlbnQsZSkpfWZvckVhY2goZSl7cmV0dXJuIG5ldyBPYShqKHRoaXMuZXZlbnQsZSkpfWZpbHRlcihlKXtyZXR1cm4gbmV3IE9hKEcodGhpcy5ldmVudCxlKSl9cmVkdWNlKGUsdCl7cmV0dXJuIG5ldyBPYSgkKHRoaXMuZXZlbnQsZSx0KSl9bGF0Y2goKXtyZXR1cm4gbmV3IE9hKFkodGhpcy5ldmVudCkpfWRlYm91bmNlKGUsdD0xMDAsbj0hMSxyKXtyZXR1cm4gbmV3IE9hKFgodGhpcy5ldmVudCxlLHQsbixyKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsdCxuKXtyZXR1cm4gQih0aGlzLmV2ZW50KShlLHQsbil9fVYuY2hhaW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBPYShlKX0sVi5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj1lPT5lKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IFooe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sVi5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPWU9PmUpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgWih7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLmFkZEV2ZW50TGlzdGVuZXIodCxyKSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sVi50b1Byb21pc2U9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PkIodCkoZSkpfSxWLnJ1bkFuZFN1YnNjcmliZT1mdW5jdGlvbihlLHQpe3JldHVybiB0KHZvaWQgMCksZShlPT50KGUpKX0sVi5ydW5BbmRTdWJzY3JpYmVXaXRoU3RvcmU9ZnVuY3Rpb24oZSx0KXtsZXQgbj1udWxsO2Z1bmN0aW9uIHIoZSl7bnVsbCE9PW4mJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpLG49bmV3IHcsdChlLG4pfXIodm9pZCAwKTtjb25zdCBpPWUoZT0+cihlKSk7cmV0dXJuIF8oKCk9PntpLmRpc3Bvc2UoKSxudWxsIT09biYmdm9pZCAwIT09biYmbi5kaXNwb3NlKCl9KX19Y2xhc3MgUXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9saXN0ZW5lckNvdW50PTAsdGhpcy5faW52b2NhdGlvbkNvdW50PTAsdGhpcy5fZWxhcHNlZE92ZXJhbGw9MCx0aGlzLl9uYW1lPWUrIl8iK1EuX2lkUG9vbCsrfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgRighMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fVEuX2lkUG9vbD0wO2NsYXNzIFp7Y29uc3RydWN0b3IoZSl7dGhpcy5fZGlzcG9zZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249dm9pZCAwLHRoaXMuX3BlcmZNb249bnVsbCE9PShlPXRoaXMuX29wdGlvbnMpJiZ2b2lkIDAhPT1lJiZlLl9wcm9mTmFtZT9uZXcgUSh0aGlzLl9vcHRpb25zLl9wcm9mTmFtZSk6dm9pZCAwfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PShlLHQsbik9Pnt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0ZW5lcnM9bmV3IFQpO3ZhciByPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7ciYmdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyQWRkKHRoaXMpO2NvbnN0IGk9dGhpcy5fbGlzdGVuZXJzLnB1c2godD9bZSx0XTplKSxhPShyJiZ0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckRpZEFkZCYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQodGhpcyksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpLG51bGw9PT0ocj10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09cj92b2lkIDA6ci5jaGVjayh0aGlzLl9saXN0ZW5lcnMuc2l6ZSkpO2U9XygoKT0+e2EmJmEoKSx0aGlzLl9kaXNwb3NlZHx8KGkoKSx0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlJiYodGhpcy5fbGlzdGVuZXJzJiYhdGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKXx8dGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSh0aGlzKSkpfSk7cmV0dXJuIG4gaW5zdGFuY2VvZiB3P24uYWRkKGUpOkFycmF5LmlzQXJyYXkobikmJm4ucHVzaChlKSxlfSksdGhpcy5fZXZlbnR9ZmlyZShlKXt2YXIgdDtpZih0aGlzLl9saXN0ZW5lcnMpe3RoaXMuX2RlbGl2ZXJ5UXVldWV8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBUKTtmb3IodmFyIG4gb2YgdGhpcy5fbGlzdGVuZXJzKXRoaXMuX2RlbGl2ZXJ5UXVldWUucHVzaChbbixlXSk7Zm9yKG51bGwhPT0odD10aGlzLl9wZXJmTW9uKSYmdm9pZCAwIT09dCYmdC5zdGFydCh0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemUpOzA8dGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplOyl7Y29uc3RbcixlXT10aGlzLl9kZWxpdmVyeVF1ZXVlLnNoaWZ0KCk7dHJ5eyJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbCh2b2lkIDAsZSk6clswXS5jYWxsKHJbMV0sZSl9Y2F0Y2goZSl7aChlKX19bnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0b3AoKX19ZGlzcG9zZSgpe3ZhciBlLHQ7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCxudWxsIT09KGU9dGhpcy5fbGlzdGVuZXJzKSYmdm9pZCAwIT09ZSYmZS5jbGVhcigpLG51bGwhPT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKSYmdm9pZCAwIT09ZSYmZS5jbGVhcigpLG51bGwhPT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25MYXN0TGlzdGVuZXJSZW1vdmUpJiZ2b2lkIDAhPT10JiZ0LmNhbGwoZSksbnVsbCE9PSh0PXRoaXMuX2xlYWthZ2VNb24pJiZ2b2lkIDAhPT10JiZ0LmRpc3Bvc2UoKSl9fWZ1bmN0aW9uIGVlKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZnVuY3Rpb24oZSl7bGV0IHQ9W10sbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Zm9yKDtPYmplY3QucHJvdG90eXBlIT09bjspdD10LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIHR9KGUpKSJmdW5jdGlvbiI9PXR5cGVvZiBlW25dJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gdGUoZSxuKXtsZXQgdD17fTtmb3IoY29uc3QgciBvZiBlKXRbcl09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShyKTtyZXR1cm4gdH1jbGFzcyBuZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWdldFZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1mdW5jdGlvbiBpZShuLHIsaT0wLGE9bi5sZW5ndGgsbz0wLHM9ci5sZW5ndGgpe2Zvcig7aTxhJiZvPHM7aSsrLG8rKyl7bGV0IGU9bi5jaGFyQ29kZUF0KGkpLHQ9ci5jaGFyQ29kZUF0KG8pO2lmKGUhPT10KXtpZigxMjg8PWV8fDEyODw9dClyZXR1cm4gZnVuY3Rpb24oZSx0LG49MCxyPWUubGVuZ3RoLGk9MCxhPXQubGVuZ3RoKXtmb3IoO248ciYmaTxhO24rKyxpKyspe3ZhciBvPWUuY2hhckNvZGVBdChuKSxzPXQuY2hhckNvZGVBdChpKTtpZihvPHMpcmV0dXJuLTE7aWYoczxvKXJldHVybiAxfXZhciBsPXItbixoPWEtaTtyZXR1cm4gbDxoPy0xOmg8bD8xOjB9KG4udG9Mb3dlckNhc2UoKSxyLnRvTG93ZXJDYXNlKCksaSxhLG8scyk7YWUoZSkmJihlLT0zMiksYWUodCkmJih0LT0zMik7dmFyIGw9ZS10O2lmKDAhPWwpcmV0dXJuIGx9fXZhciBlPWEtaSx0PXMtbztyZXR1cm4gZTx0Py0xOnQ8ZT8xOjB9ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIDk3PD1lJiZlPD0xMjJ9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIDY1PD1lJiZlPD05MH1mdW5jdGlvbiBzZShlLHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiEodC5sZW5ndGg+ZS5sZW5ndGgpJiYwPT09aWUoZSx0LDAsbil9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1jbGFzcyBoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PWV9c3RhdGljIGdldEluc3RhbmNlKGUpe3JldHVybiBoZS5jYWNoZS5nZXQoQXJyYXkuZnJvbShlKSl9c3RhdGljIGdldExvY2FsZXMoKXtyZXR1cm4gaGUuX2xvY2FsZXMuZ2V0VmFsdWUoKX1pc0FtYmlndW91cyhlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXMoZSl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KGUpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX0oTz1oZSkuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YT1uZXcgbmUoKCk9PkpTT04ucGFyc2UoJ3siX2NvbW1vbiI6WzgyMzIsMzIsODIzMywzMiw1NzYwLDMyLDgxOTIsMzIsODE5MywzMiw4MTk0LDMyLDgxOTUsMzIsODE5NiwzMiw4MTk3LDMyLDgxOTgsMzIsODIwMCwzMiw4MjAxLDMyLDgyMDIsMzIsODI4NywzMiw4MTk5LDMyLDgyMzksMzIsMjA0Miw5NSw2NTEwMSw5NSw2NTEwMiw5NSw2NTEwMyw5NSw4MjA4LDQ1LDgyMDksNDUsODIxMCw0NSw2NTExMiw0NSwxNzQ4LDQ1LDgyNTksNDUsNzI3LDQ1LDg3MjIsNDUsMTAxMzQsNDUsMTE0NTAsNDUsMTU0OSw0NCwxNjQzLDQ0LDgyMTgsNDQsMTg0LDQ0LDQyMjMzLDQ0LDg5NCw1OSwyMzA3LDU4LDI2OTEsNTgsMTQxNyw1OCwxNzk1LDU4LDE3OTYsNTgsNTg2OCw1OCw2NTA3Miw1OCw2MTQ3LDU4LDYxNTMsNTgsODI4Miw1OCwxNDc1LDU4LDc2MCw1OCw0Mjg4OSw1OCw4NzU4LDU4LDcyMCw1OCw0MjIzNyw1OCw0NTEsMzMsMTE2MDEsMzMsNjYwLDYzLDU3Nyw2MywyNDI5LDYzLDUwMzgsNjMsNDI3MzEsNjMsMTE5MTQ5LDQ2LDgyMjgsNDYsMTc5Myw0NiwxNzk0LDQ2LDQyNTEwLDQ2LDY4MTc2LDQ2LDE2MzIsNDYsMTc3Niw0Niw0MjIzMiw0NiwxMzczLDk2LDY1Mjg3LDk2LDgyMTksOTYsODI0Miw5NiwxMzcwLDk2LDE1MjMsOTYsODE3NSw5Niw2NTM0NCw5Niw5MDAsOTYsODE4OSw5Niw4MTI1LDk2LDgxMjcsOTYsODE5MCw5Niw2OTcsOTYsODg0LDk2LDcxMiw5Niw3MTQsOTYsNzE1LDk2LDc1Niw5Niw2OTksOTYsNzAxLDk2LDcwMCw5Niw3MDIsOTYsNDI4OTIsOTYsMTQ5Nyw5NiwyMDM2LDk2LDIwMzcsOTYsNTE5NCw5Niw1ODM2LDk2LDk0MDMzLDk2LDk0MDM0LDk2LDY1MzM5LDkxLDEwMDg4LDQwLDEwMDk4LDQwLDEyMzA4LDQwLDY0ODMwLDQwLDY1MzQxLDkzLDEwMDg5LDQxLDEwMDk5LDQxLDEyMzA5LDQxLDY0ODMxLDQxLDEwMTAwLDEyMywxMTkwNjAsMTIzLDEwMTAxLDEyNSw2NTM0Miw5NCw4MjcwLDQyLDE2NDUsNDIsODcyNyw0Miw2NjMzNSw0Miw1OTQxLDQ3LDgyNTcsNDcsODcyNSw0Nyw4MjYwLDQ3LDk1ODUsNDcsMTAxODcsNDcsMTA3NDQsNDcsMTE5MzU0LDQ3LDEyNzU1LDQ3LDEyMzM5LDQ3LDExNDYyLDQ3LDIwMDMxLDQ3LDEyMDM1LDQ3LDY1MzQwLDkyLDY1MTI4LDkyLDg3MjYsOTIsMTAxODksOTIsMTA3NDEsOTIsMTA3NDUsOTIsMTE5MzExLDkyLDExOTM1NSw5MiwxMjc1Niw5MiwyMDAyMiw5MiwxMjAzNCw5Miw0Mjg3MiwzOCw3MDgsOTQsNzEwLDk0LDU4NjksNDMsMTAxMzMsNDMsNjYyMDMsNDMsODI0OSw2MCwxMDA5NCw2MCw3MDYsNjAsMTE5MzUwLDYwLDUxNzYsNjAsNTgxMCw2MCw1MTIwLDYxLDExODQwLDYxLDEyNDQ4LDYxLDQyMjM5LDYxLDgyNTAsNjIsMTAwOTUsNjIsNzA3LDYyLDExOTM1MSw2Miw1MTcxLDYyLDk0MDE1LDYyLDgyNzUsMTI2LDczMiwxMjYsODEyOCwxMjYsODc2NCwxMjYsNjUzNzIsMTI0LDY1MjkzLDQ1LDEyMDc4NCw1MCwxMjA3OTQsNTAsMTIwODA0LDUwLDEyMDgxNCw1MCwxMjA4MjQsNTAsMTMwMDM0LDUwLDQyODQyLDUwLDQyMyw1MCwxMDAwLDUwLDQyNTY0LDUwLDUzMTEsNTAsNDI3MzUsNTAsMTE5MzAyLDUxLDEyMDc4NSw1MSwxMjA3OTUsNTEsMTIwODA1LDUxLDEyMDgxNSw1MSwxMjA4MjUsNTEsMTMwMDM1LDUxLDQyOTIzLDUxLDU0MCw1MSw0MzksNTEsNDI4NTgsNTEsMTE0NjgsNTEsMTI0OCw1MSw5NDAxMSw1MSw3MTg4Miw1MSwxMjA3ODYsNTIsMTIwNzk2LDUyLDEyMDgwNiw1MiwxMjA4MTYsNTIsMTIwODI2LDUyLDEzMDAzNiw1Miw1MDcwLDUyLDcxODU1LDUyLDEyMDc4Nyw1MywxMjA3OTcsNTMsMTIwODA3LDUzLDEyMDgxNyw1MywxMjA4MjcsNTMsMTMwMDM3LDUzLDQ0NCw1Myw3MTg2Nyw1MywxMjA3ODgsNTQsMTIwNzk4LDU0LDEyMDgwOCw1NCwxMjA4MTgsNTQsMTIwODI4LDU0LDEzMDAzOCw1NCwxMTQ3NCw1NCw1MTAyLDU0LDcxODkzLDU0LDExOTMxNCw1NSwxMjA3ODksNTUsMTIwNzk5LDU1LDEyMDgwOSw1NSwxMjA4MTksNTUsMTIwODI5LDU1LDEzMDAzOSw1NSw2Njc3MCw1NSw3MTg3OCw1NSwyODE5LDU2LDI1MzgsNTYsMjY2Niw1NiwxMjUxMzEsNTYsMTIwNzkwLDU2LDEyMDgwMCw1NiwxMjA4MTAsNTYsMTIwODIwLDU2LDEyMDgzMCw1NiwxMzAwNDAsNTYsNTQ3LDU2LDU0Niw1Niw2NjMzMCw1NiwyNjYzLDU3LDI5MjAsNTcsMjU0MSw1NywzNDM3LDU3LDEyMDc5MSw1NywxMjA4MDEsNTcsMTIwODExLDU3LDEyMDgyMSw1NywxMjA4MzEsNTcsMTMwMDQxLDU3LDQyODYyLDU3LDExNDY2LDU3LDcxODg0LDU3LDcxODUyLDU3LDcxODk0LDU3LDkwODIsOTcsNjUzNDUsOTcsMTE5ODM0LDk3LDExOTg4Niw5NywxMTk5MzgsOTcsMTE5OTkwLDk3LDEyMDA0Miw5NywxMjAwOTQsOTcsMTIwMTQ2LDk3LDEyMDE5OCw5NywxMjAyNTAsOTcsMTIwMzAyLDk3LDEyMDM1NCw5NywxMjA0MDYsOTcsMTIwNDU4LDk3LDU5Myw5Nyw5NDUsOTcsMTIwNTE0LDk3LDEyMDU3Miw5NywxMjA2MzAsOTcsMTIwNjg4LDk3LDEyMDc0Niw5Nyw2NTMxMyw2NSwxMTk4MDgsNjUsMTE5ODYwLDY1LDExOTkxMiw2NSwxMTk5NjQsNjUsMTIwMDE2LDY1LDEyMDA2OCw2NSwxMjAxMjAsNjUsMTIwMTcyLDY1LDEyMDIyNCw2NSwxMjAyNzYsNjUsMTIwMzI4LDY1LDEyMDM4MCw2NSwxMjA0MzIsNjUsOTEzLDY1LDEyMDQ4OCw2NSwxMjA1NDYsNjUsMTIwNjA0LDY1LDEyMDY2Miw2NSwxMjA3MjAsNjUsNTAzNCw2NSw1NTczLDY1LDQyMjIyLDY1LDk0MDE2LDY1LDY2MjA4LDY1LDExOTgzNSw5OCwxMTk4ODcsOTgsMTE5OTM5LDk4LDExOTk5MSw5OCwxMjAwNDMsOTgsMTIwMDk1LDk4LDEyMDE0Nyw5OCwxMjAxOTksOTgsMTIwMjUxLDk4LDEyMDMwMyw5OCwxMjAzNTUsOTgsMTIwNDA3LDk4LDEyMDQ1OSw5OCwzODgsOTgsNTA3MSw5OCw1MjM0LDk4LDU1NTEsOTgsNjUzMTQsNjYsODQ5Miw2NiwxMTk4MDksNjYsMTE5ODYxLDY2LDExOTkxMyw2NiwxMjAwMTcsNjYsMTIwMDY5LDY2LDEyMDEyMSw2NiwxMjAxNzMsNjYsMTIwMjI1LDY2LDEyMDI3Nyw2NiwxMjAzMjksNjYsMTIwMzgxLDY2LDEyMDQzMyw2Niw0MjkzMiw2Niw5MTQsNjYsMTIwNDg5LDY2LDEyMDU0Nyw2NiwxMjA2MDUsNjYsMTIwNjYzLDY2LDEyMDcyMSw2Niw1MTA4LDY2LDU2MjMsNjYsNDIxOTIsNjYsNjYxNzgsNjYsNjYyMDksNjYsNjYzMDUsNjYsNjUzNDcsOTksODU3Myw5OSwxMTk4MzYsOTksMTE5ODg4LDk5LDExOTk0MCw5OSwxMTk5OTIsOTksMTIwMDQ0LDk5LDEyMDA5Niw5OSwxMjAxNDgsOTksMTIwMjAwLDk5LDEyMDI1Miw5OSwxMjAzMDQsOTksMTIwMzU2LDk5LDEyMDQwOCw5OSwxMjA0NjAsOTksNzQyOCw5OSwxMDEwLDk5LDExNDI5LDk5LDQzOTUxLDk5LDY2NjIxLDk5LDEyODg0NCw2Nyw3MTkyMiw2Nyw3MTkxMyw2Nyw2NTMxNSw2Nyw4NTU3LDY3LDg0NTAsNjcsODQ5Myw2NywxMTk4MTAsNjcsMTE5ODYyLDY3LDExOTkxNCw2NywxMTk5NjYsNjcsMTIwMDE4LDY3LDEyMDE3NCw2NywxMjAyMjYsNjcsMTIwMjc4LDY3LDEyMDMzMCw2NywxMjAzODIsNjcsMTIwNDM0LDY3LDEwMTcsNjcsMTE0MjgsNjcsNTA4Nyw2Nyw0MjIwMiw2Nyw2NjIxMCw2Nyw2NjMwNiw2Nyw2NjU4MSw2Nyw2Njg0NCw2Nyw4NTc0LDEwMCw4NTE4LDEwMCwxMTk4MzcsMTAwLDExOTg4OSwxMDAsMTE5OTQxLDEwMCwxMTk5OTMsMTAwLDEyMDA0NSwxMDAsMTIwMDk3LDEwMCwxMjAxNDksMTAwLDEyMDIwMSwxMDAsMTIwMjUzLDEwMCwxMjAzMDUsMTAwLDEyMDM1NywxMDAsMTIwNDA5LDEwMCwxMjA0NjEsMTAwLDEyODEsMTAwLDUwOTUsMTAwLDUyMzEsMTAwLDQyMTk0LDEwMCw4NTU4LDY4LDg1MTcsNjgsMTE5ODExLDY4LDExOTg2Myw2OCwxMTk5MTUsNjgsMTE5OTY3LDY4LDEyMDAxOSw2OCwxMjAwNzEsNjgsMTIwMTIzLDY4LDEyMDE3NSw2OCwxMjAyMjcsNjgsMTIwMjc5LDY4LDEyMDMzMSw2OCwxMjAzODMsNjgsMTIwNDM1LDY4LDUwMjQsNjgsNTU5OCw2OCw1NjEwLDY4LDQyMTk1LDY4LDg0OTQsMTAxLDY1MzQ5LDEwMSw4NDk1LDEwMSw4NTE5LDEwMSwxMTk4MzgsMTAxLDExOTg5MCwxMDEsMTE5OTQyLDEwMSwxMjAwNDYsMTAxLDEyMDA5OCwxMDEsMTIwMTUwLDEwMSwxMjAyMDIsMTAxLDEyMDI1NCwxMDEsMTIwMzA2LDEwMSwxMjAzNTgsMTAxLDEyMDQxMCwxMDEsMTIwNDYyLDEwMSw0MzgyNiwxMDEsMTIxMywxMDEsODk1OSw2OSw2NTMxNyw2OSw4NDk2LDY5LDExOTgxMiw2OSwxMTk4NjQsNjksMTE5OTE2LDY5LDEyMDAyMCw2OSwxMjAwNzIsNjksMTIwMTI0LDY5LDEyMDE3Niw2OSwxMjAyMjgsNjksMTIwMjgwLDY5LDEyMDMzMiw2OSwxMjAzODQsNjksMTIwNDM2LDY5LDkxNyw2OSwxMjA0OTIsNjksMTIwNTUwLDY5LDEyMDYwOCw2OSwxMjA2NjYsNjksMTIwNzI0LDY5LDExNTc3LDY5LDUwMzYsNjksNDIyMjQsNjksNzE4NDYsNjksNzE4NTQsNjksNjYxODIsNjksMTE5ODM5LDEwMiwxMTk4OTEsMTAyLDExOTk0MywxMDIsMTE5OTk1LDEwMiwxMjAwNDcsMTAyLDEyMDA5OSwxMDIsMTIwMTUxLDEwMiwxMjAyMDMsMTAyLDEyMDI1NSwxMDIsMTIwMzA3LDEwMiwxMjAzNTksMTAyLDEyMDQxMSwxMDIsMTIwNDYzLDEwMiw0MzgyOSwxMDIsNDI5MDUsMTAyLDM4MywxMDIsNzgzNywxMDIsMTQxMiwxMDIsMTE5MzE1LDcwLDg0OTcsNzAsMTE5ODEzLDcwLDExOTg2NSw3MCwxMTk5MTcsNzAsMTIwMDIxLDcwLDEyMDA3Myw3MCwxMjAxMjUsNzAsMTIwMTc3LDcwLDEyMDIyOSw3MCwxMjAyODEsNzAsMTIwMzMzLDcwLDEyMDM4NSw3MCwxMjA0MzcsNzAsNDI5MDQsNzAsOTg4LDcwLDEyMDc3OCw3MCw1NTU2LDcwLDQyMjA1LDcwLDcxODc0LDcwLDcxODQyLDcwLDY2MTgzLDcwLDY2MjEzLDcwLDY2ODUzLDcwLDY1MzUxLDEwMyw4NDU4LDEwMywxMTk4NDAsMTAzLDExOTg5MiwxMDMsMTE5OTQ0LDEwMywxMjAwNDgsMTAzLDEyMDEwMCwxMDMsMTIwMTUyLDEwMywxMjAyMDQsMTAzLDEyMDI1NiwxMDMsMTIwMzA4LDEwMywxMjAzNjAsMTAzLDEyMDQxMiwxMDMsMTIwNDY0LDEwMyw2MDksMTAzLDc1NTUsMTAzLDM5NywxMDMsMTQwOSwxMDMsMTE5ODE0LDcxLDExOTg2Niw3MSwxMTk5MTgsNzEsMTE5OTcwLDcxLDEyMDAyMiw3MSwxMjAwNzQsNzEsMTIwMTI2LDcxLDEyMDE3OCw3MSwxMjAyMzAsNzEsMTIwMjgyLDcxLDEyMDMzNCw3MSwxMjAzODYsNzEsMTIwNDM4LDcxLDEyOTIsNzEsNTA1Niw3MSw1MTA3LDcxLDQyMTk4LDcxLDY1MzUyLDEwNCw4NDYyLDEwNCwxMTk4NDEsMTA0LDExOTk0NSwxMDQsMTE5OTk3LDEwNCwxMjAwNDksMTA0LDEyMDEwMSwxMDQsMTIwMTUzLDEwNCwxMjAyMDUsMTA0LDEyMDI1NywxMDQsMTIwMzA5LDEwNCwxMjAzNjEsMTA0LDEyMDQxMywxMDQsMTIwNDY1LDEwNCwxMjExLDEwNCwxMzkyLDEwNCw1MDU4LDEwNCw2NTMyMCw3Miw4NDU5LDcyLDg0NjAsNzIsODQ2MSw3MiwxMTk4MTUsNzIsMTE5ODY3LDcyLDExOTkxOSw3MiwxMjAwMjMsNzIsMTIwMTc5LDcyLDEyMDIzMSw3MiwxMjAyODMsNzIsMTIwMzM1LDcyLDEyMDM4Nyw3MiwxMjA0MzksNzIsOTE5LDcyLDEyMDQ5NCw3MiwxMjA1NTIsNzIsMTIwNjEwLDcyLDEyMDY2OCw3MiwxMjA3MjYsNzIsMTE0MDYsNzIsNTA1MSw3Miw1NTAwLDcyLDQyMjE1LDcyLDY2MjU1LDcyLDczMSwxMDUsOTA3NSwxMDUsNjUzNTMsMTA1LDg1NjAsMTA1LDg1MDUsMTA1LDg1MjAsMTA1LDExOTg0MiwxMDUsMTE5ODk0LDEwNSwxMTk5NDYsMTA1LDExOTk5OCwxMDUsMTIwMDUwLDEwNSwxMjAxMDIsMTA1LDEyMDE1NCwxMDUsMTIwMjA2LDEwNSwxMjAyNTgsMTA1LDEyMDMxMCwxMDUsMTIwMzYyLDEwNSwxMjA0MTQsMTA1LDEyMDQ2NiwxMDUsMTIwNDg0LDEwNSw2MTgsMTA1LDYxNywxMDUsOTUzLDEwNSw4MTI2LDEwNSw4OTAsMTA1LDEyMDUyMiwxMDUsMTIwNTgwLDEwNSwxMjA2MzgsMTA1LDEyMDY5NiwxMDUsMTIwNzU0LDEwNSwxMTEwLDEwNSw0MjU2NywxMDUsMTIzMSwxMDUsNDM4OTMsMTA1LDUwMjksMTA1LDcxODc1LDEwNSw2NTM1NCwxMDYsODUyMSwxMDYsMTE5ODQzLDEwNiwxMTk4OTUsMTA2LDExOTk0NywxMDYsMTE5OTk5LDEwNiwxMjAwNTEsMTA2LDEyMDEwMywxMDYsMTIwMTU1LDEwNiwxMjAyMDcsMTA2LDEyMDI1OSwxMDYsMTIwMzExLDEwNiwxMjAzNjMsMTA2LDEyMDQxNSwxMDYsMTIwNDY3LDEwNiwxMDExLDEwNiwxMTEyLDEwNiw2NTMyMiw3NCwxMTk4MTcsNzQsMTE5ODY5LDc0LDExOTkyMSw3NCwxMTk5NzMsNzQsMTIwMDI1LDc0LDEyMDA3Nyw3NCwxMjAxMjksNzQsMTIwMTgxLDc0LDEyMDIzMyw3NCwxMjAyODUsNzQsMTIwMzM3LDc0LDEyMDM4OSw3NCwxMjA0NDEsNzQsNDI5MzAsNzQsODk1LDc0LDEwMzIsNzQsNTAzNSw3NCw1MjYxLDc0LDQyMjAxLDc0LDExOTg0NCwxMDcsMTE5ODk2LDEwNywxMTk5NDgsMTA3LDEyMDAwMCwxMDcsMTIwMDUyLDEwNywxMjAxMDQsMTA3LDEyMDE1NiwxMDcsMTIwMjA4LDEwNywxMjAyNjAsMTA3LDEyMDMxMiwxMDcsMTIwMzY0LDEwNywxMjA0MTYsMTA3LDEyMDQ2OCwxMDcsODQ5MCw3NSw2NTMyMyw3NSwxMTk4MTgsNzUsMTE5ODcwLDc1LDExOTkyMiw3NSwxMTk5NzQsNzUsMTIwMDI2LDc1LDEyMDA3OCw3NSwxMjAxMzAsNzUsMTIwMTgyLDc1LDEyMDIzNCw3NSwxMjAyODYsNzUsMTIwMzM4LDc1LDEyMDM5MCw3NSwxMjA0NDIsNzUsOTIyLDc1LDEyMDQ5Nyw3NSwxMjA1NTUsNzUsMTIwNjEzLDc1LDEyMDY3MSw3NSwxMjA3MjksNzUsMTE0MTIsNzUsNTA5NCw3NSw1ODQ1LDc1LDQyMTk5LDc1LDY2ODQwLDc1LDE0NzIsMTA4LDg3MzksNzMsOTIxMyw3Myw2NTUxMiw3MywxNjMzLDEwOCwxNzc3LDczLDY2MzM2LDEwOCwxMjUxMjcsMTA4LDEyMDc4Myw3MywxMjA3OTMsNzMsMTIwODAzLDczLDEyMDgxMyw3MywxMjA4MjMsNzMsMTMwMDMzLDczLDY1MzIxLDczLDg1NDQsNzMsODQ2NCw3Myw4NDY1LDczLDExOTgxNiw3MywxMTk4NjgsNzMsMTE5OTIwLDczLDEyMDAyNCw3MywxMjAxMjgsNzMsMTIwMTgwLDczLDEyMDIzMiw3MywxMjAyODQsNzMsMTIwMzM2LDczLDEyMDM4OCw3MywxMjA0NDAsNzMsNjUzNTYsMTA4LDg1NzIsNzMsODQ2NywxMDgsMTE5ODQ1LDEwOCwxMTk4OTcsMTA4LDExOTk0OSwxMDgsMTIwMDAxLDEwOCwxMjAwNTMsMTA4LDEyMDEwNSw3MywxMjAxNTcsNzMsMTIwMjA5LDczLDEyMDI2MSw3MywxMjAzMTMsNzMsMTIwMzY1LDczLDEyMDQxNyw3MywxMjA0NjksNzMsNDQ4LDczLDEyMDQ5Niw3MywxMjA1NTQsNzMsMTIwNjEyLDczLDEyMDY3MCw3MywxMjA3MjgsNzMsMTE0MTAsNzMsMTAzMCw3MywxMjE2LDczLDE0OTMsMTA4LDE1MDMsMTA4LDE1NzUsMTA4LDEyNjQ2NCwxMDgsMTI2NTkyLDEwOCw2NTE2NiwxMDgsNjUxNjUsMTA4LDE5OTQsMTA4LDExNTk5LDczLDU4MjUsNzMsNDIyMjYsNzMsOTM5OTIsNzMsNjYxODYsMTI0LDY2MzEzLDEyNCwxMTkzMzgsNzYsODU1Niw3Niw4NDY2LDc2LDExOTgxOSw3NiwxMTk4NzEsNzYsMTE5OTIzLDc2LDEyMDAyNyw3NiwxMjAwNzksNzYsMTIwMTMxLDc2LDEyMDE4Myw3NiwxMjAyMzUsNzYsMTIwMjg3LDc2LDEyMDMzOSw3NiwxMjAzOTEsNzYsMTIwNDQzLDc2LDExNDcyLDc2LDUwODYsNzYsNTI5MCw3Niw0MjIwOSw3Niw5Mzk3NCw3Niw3MTg0Myw3Niw3MTg1OCw3Niw2NjU4Nyw3Niw2Njg1NCw3Niw2NTMyNSw3Nyw4NTU5LDc3LDg0OTksNzcsMTE5ODIwLDc3LDExOTg3Miw3NywxMTk5MjQsNzcsMTIwMDI4LDc3LDEyMDA4MCw3NywxMjAxMzIsNzcsMTIwMTg0LDc3LDEyMDIzNiw3NywxMjAyODgsNzcsMTIwMzQwLDc3LDEyMDM5Miw3NywxMjA0NDQsNzcsOTI0LDc3LDEyMDQ5OSw3NywxMjA1NTcsNzcsMTIwNjE1LDc3LDEyMDY3Myw3NywxMjA3MzEsNzcsMTAxOCw3NywxMTQxNiw3Nyw1MDQ3LDc3LDU2MTYsNzcsNTg0Niw3Nyw0MjIwNyw3Nyw2NjIyNCw3Nyw2NjMyMSw3NywxMTk4NDcsMTEwLDExOTg5OSwxMTAsMTE5OTUxLDExMCwxMjAwMDMsMTEwLDEyMDA1NSwxMTAsMTIwMTA3LDExMCwxMjAxNTksMTEwLDEyMDIxMSwxMTAsMTIwMjYzLDExMCwxMjAzMTUsMTEwLDEyMDM2NywxMTAsMTIwNDE5LDExMCwxMjA0NzEsMTEwLDE0MDAsMTEwLDE0MDQsMTEwLDY1MzI2LDc4LDg0NjksNzgsMTE5ODIxLDc4LDExOTg3Myw3OCwxMTk5MjUsNzgsMTE5OTc3LDc4LDEyMDAyOSw3OCwxMjAwODEsNzgsMTIwMTg1LDc4LDEyMDIzNyw3OCwxMjAyODksNzgsMTIwMzQxLDc4LDEyMDM5Myw3OCwxMjA0NDUsNzgsOTI1LDc4LDEyMDUwMCw3OCwxMjA1NTgsNzgsMTIwNjE2LDc4LDEyMDY3NCw3OCwxMjA3MzIsNzgsMTE0MTgsNzgsNDIyMDgsNzgsNjY4MzUsNzgsMzA3NCwxMTEsMzIwMiwxMTEsMzMzMCwxMTEsMzQ1OCwxMTEsMjQwNiwxMTEsMjY2MiwxMTEsMjc5MCwxMTEsMzA0NiwxMTEsMzE3NCwxMTEsMzMwMiwxMTEsMzQzMCwxMTEsMzY2NCwxMTEsMzc5MiwxMTEsNDE2MCwxMTEsMTYzNywxMTEsMTc4MSwxMTEsNjUzNTksMTExLDg1MDAsMTExLDExOTg0OCwxMTEsMTE5OTAwLDExMSwxMTk5NTIsMTExLDEyMDA1NiwxMTEsMTIwMTA4LDExMSwxMjAxNjAsMTExLDEyMDIxMiwxMTEsMTIwMjY0LDExMSwxMjAzMTYsMTExLDEyMDM2OCwxMTEsMTIwNDIwLDExMSwxMjA0NzIsMTExLDc0MzksMTExLDc0NDEsMTExLDQzODM3LDExMSw5NTksMTExLDEyMDUyOCwxMTEsMTIwNTg2LDExMSwxMjA2NDQsMTExLDEyMDcwMiwxMTEsMTIwNzYwLDExMSw5NjMsMTExLDEyMDUzMiwxMTEsMTIwNTkwLDExMSwxMjA2NDgsMTExLDEyMDcwNiwxMTEsMTIwNzY0LDExMSwxMTQyMywxMTEsNDM1MSwxMTEsMTQxMywxMTEsMTUwNSwxMTEsMTYwNywxMTEsMTI2NTAwLDExMSwxMjY1NjQsMTExLDEyNjU5NiwxMTEsNjUyNTksMTExLDY1MjYwLDExMSw2NTI1OCwxMTEsNjUyNTcsMTExLDE3MjYsMTExLDY0NDI4LDExMSw2NDQyOSwxMTEsNjQ0MjcsMTExLDY0NDI2LDExMSwxNzI5LDExMSw2NDQyNCwxMTEsNjQ0MjUsMTExLDY0NDIzLDExMSw2NDQyMiwxMTEsMTc0OSwxMTEsMzM2MCwxMTEsNDEyNSwxMTEsNjY3OTQsMTExLDcxODgwLDExMSw3MTg5NSwxMTEsNjY2MDQsMTExLDE5ODQsNzksMjUzNCw3OSwyOTE4LDc5LDEyMjk1LDc5LDcwODY0LDc5LDcxOTA0LDc5LDEyMDc4Miw3OSwxMjA3OTIsNzksMTIwODAyLDc5LDEyMDgxMiw3OSwxMjA4MjIsNzksMTMwMDMyLDc5LDY1MzI3LDc5LDExOTgyMiw3OSwxMTk4NzQsNzksMTE5OTI2LDc5LDExOTk3OCw3OSwxMjAwMzAsNzksMTIwMDgyLDc5LDEyMDEzNCw3OSwxMjAxODYsNzksMTIwMjM4LDc5LDEyMDI5MCw3OSwxMjAzNDIsNzksMTIwMzk0LDc5LDEyMDQ0Niw3OSw5MjcsNzksMTIwNTAyLDc5LDEyMDU2MCw3OSwxMjA2MTgsNzksMTIwNjc2LDc5LDEyMDczNCw3OSwxMTQyMiw3OSwxMzY1LDc5LDExNjA0LDc5LDQ4MTYsNzksMjg0OCw3OSw2Njc1NCw3OSw0MjIyNyw3OSw3MTg2MSw3OSw2NjE5NCw3OSw2NjIxOSw3OSw2NjU2NCw3OSw2NjgzOCw3OSw5MDc2LDExMiw2NTM2MCwxMTIsMTE5ODQ5LDExMiwxMTk5MDEsMTEyLDExOTk1MywxMTIsMTIwMDA1LDExMiwxMjAwNTcsMTEyLDEyMDEwOSwxMTIsMTIwMTYxLDExMiwxMjAyMTMsMTEyLDEyMDI2NSwxMTIsMTIwMzE3LDExMiwxMjAzNjksMTEyLDEyMDQyMSwxMTIsMTIwNDczLDExMiw5NjEsMTEyLDEyMDUzMCwxMTIsMTIwNTQ0LDExMiwxMjA1ODgsMTEyLDEyMDYwMiwxMTIsMTIwNjQ2LDExMiwxMjA2NjAsMTEyLDEyMDcwNCwxMTIsMTIwNzE4LDExMiwxMjA3NjIsMTEyLDEyMDc3NiwxMTIsMTE0MjcsMTEyLDY1MzI4LDgwLDg0NzMsODAsMTE5ODIzLDgwLDExOTg3NSw4MCwxMTk5MjcsODAsMTE5OTc5LDgwLDEyMDAzMSw4MCwxMjAwODMsODAsMTIwMTg3LDgwLDEyMDIzOSw4MCwxMjAyOTEsODAsMTIwMzQzLDgwLDEyMDM5NSw4MCwxMjA0NDcsODAsOTI5LDgwLDEyMDUwNCw4MCwxMjA1NjIsODAsMTIwNjIwLDgwLDEyMDY3OCw4MCwxMjA3MzYsODAsMTE0MjYsODAsNTA5MCw4MCw1MjI5LDgwLDQyMTkzLDgwLDY2MTk3LDgwLDExOTg1MCwxMTMsMTE5OTAyLDExMywxMTk5NTQsMTEzLDEyMDAwNiwxMTMsMTIwMDU4LDExMywxMjAxMTAsMTEzLDEyMDE2MiwxMTMsMTIwMjE0LDExMywxMjAyNjYsMTEzLDEyMDMxOCwxMTMsMTIwMzcwLDExMywxMjA0MjIsMTEzLDEyMDQ3NCwxMTMsMTMwNywxMTMsMTM3OSwxMTMsMTM4MiwxMTMsODQ3NCw4MSwxMTk4MjQsODEsMTE5ODc2LDgxLDExOTkyOCw4MSwxMTk5ODAsODEsMTIwMDMyLDgxLDEyMDA4NCw4MSwxMjAxODgsODEsMTIwMjQwLDgxLDEyMDI5Miw4MSwxMjAzNDQsODEsMTIwMzk2LDgxLDEyMDQ0OCw4MSwxMTYwNSw4MSwxMTk4NTEsMTE0LDExOTkwMywxMTQsMTE5OTU1LDExNCwxMjAwMDcsMTE0LDEyMDA1OSwxMTQsMTIwMTExLDExNCwxMjAxNjMsMTE0LDEyMDIxNSwxMTQsMTIwMjY3LDExNCwxMjAzMTksMTE0LDEyMDM3MSwxMTQsMTIwNDIzLDExNCwxMjA0NzUsMTE0LDQzODQ3LDExNCw0Mzg0OCwxMTQsNzQ2MiwxMTQsMTEzOTcsMTE0LDQzOTA1LDExNCwxMTkzMTgsODIsODQ3NSw4Miw4NDc2LDgyLDg0NzcsODIsMTE5ODI1LDgyLDExOTg3Nyw4MiwxMTk5MjksODIsMTIwMDMzLDgyLDEyMDE4OSw4MiwxMjAyNDEsODIsMTIwMjkzLDgyLDEyMDM0NSw4MiwxMjAzOTcsODIsMTIwNDQ5LDgyLDQyMiw4Miw1MDI1LDgyLDUwNzQsODIsNjY3NDAsODIsNTUxMSw4Miw0MjIxMSw4Miw5NDAwNSw4Miw2NTM2MywxMTUsMTE5ODUyLDExNSwxMTk5MDQsMTE1LDExOTk1NiwxMTUsMTIwMDA4LDExNSwxMjAwNjAsMTE1LDEyMDExMiwxMTUsMTIwMTY0LDExNSwxMjAyMTYsMTE1LDEyMDI2OCwxMTUsMTIwMzIwLDExNSwxMjAzNzIsMTE1LDEyMDQyNCwxMTUsMTIwNDc2LDExNSw0MjgwMSwxMTUsNDQ1LDExNSwxMTA5LDExNSw0Mzk0NiwxMTUsNzE4NzMsMTE1LDY2NjMyLDExNSw2NTMzMSw4MywxMTk4MjYsODMsMTE5ODc4LDgzLDExOTkzMCw4MywxMTk5ODIsODMsMTIwMDM0LDgzLDEyMDA4Niw4MywxMjAxMzgsODMsMTIwMTkwLDgzLDEyMDI0Miw4MywxMjAyOTQsODMsMTIwMzQ2LDgzLDEyMDM5OCw4MywxMjA0NTAsODMsMTAyOSw4MywxMzU5LDgzLDUwNzcsODMsNTA4Miw4Myw0MjIxMCw4Myw5NDAxMCw4Myw2NjE5OCw4Myw2NjU5Miw4MywxMTk4NTMsMTE2LDExOTkwNSwxMTYsMTE5OTU3LDExNiwxMjAwMDksMTE2LDEyMDA2MSwxMTYsMTIwMTEzLDExNiwxMjAxNjUsMTE2LDEyMDIxNywxMTYsMTIwMjY5LDExNiwxMjAzMjEsMTE2LDEyMDM3MywxMTYsMTIwNDI1LDExNiwxMjA0NzcsMTE2LDg4NjgsODQsMTAyMDEsODQsMTI4ODcyLDg0LDY1MzMyLDg0LDExOTgyNyw4NCwxMTk4NzksODQsMTE5OTMxLDg0LDExOTk4Myw4NCwxMjAwMzUsODQsMTIwMDg3LDg0LDEyMDEzOSw4NCwxMjAxOTEsODQsMTIwMjQzLDg0LDEyMDI5NSw4NCwxMjAzNDcsODQsMTIwMzk5LDg0LDEyMDQ1MSw4NCw5MzIsODQsMTIwNTA3LDg0LDEyMDU2NSw4NCwxMjA2MjMsODQsMTIwNjgxLDg0LDEyMDczOSw4NCwxMTQzMCw4NCw1MDI2LDg0LDQyMTk2LDg0LDkzOTYyLDg0LDcxODY4LDg0LDY2MTk5LDg0LDY2MjI1LDg0LDY2MzI1LDg0LDExOTg1NCwxMTcsMTE5OTA2LDExNywxMTk5NTgsMTE3LDEyMDAxMCwxMTcsMTIwMDYyLDExNywxMjAxMTQsMTE3LDEyMDE2NiwxMTcsMTIwMjE4LDExNywxMjAyNzAsMTE3LDEyMDMyMiwxMTcsMTIwMzc0LDExNywxMjA0MjYsMTE3LDEyMDQ3OCwxMTcsNDI5MTEsMTE3LDc0NTIsMTE3LDQzODU0LDExNyw0Mzg1OCwxMTcsNjUxLDExNyw5NjUsMTE3LDEyMDUzNCwxMTcsMTIwNTkyLDExNywxMjA2NTAsMTE3LDEyMDcwOCwxMTcsMTIwNzY2LDExNywxNDA1LDExNyw2NjgwNiwxMTcsNzE4OTYsMTE3LDg3NDYsODUsODg5OSw4NSwxMTk4MjgsODUsMTE5ODgwLDg1LDExOTkzMiw4NSwxMTk5ODQsODUsMTIwMDM2LDg1LDEyMDA4OCw4NSwxMjAxNDAsODUsMTIwMTkyLDg1LDEyMDI0NCw4NSwxMjAyOTYsODUsMTIwMzQ4LDg1LDEyMDQwMCw4NSwxMjA0NTIsODUsMTM1Nyw4NSw0NjA4LDg1LDY2NzY2LDg1LDUxOTYsODUsNDIyMjgsODUsOTQwMTgsODUsNzE4NjQsODUsODc0NCwxMTgsODg5NywxMTgsNjUzNjYsMTE4LDg1NjQsMTE4LDExOTg1NSwxMTgsMTE5OTA3LDExOCwxMTk5NTksMTE4LDEyMDAxMSwxMTgsMTIwMDYzLDExOCwxMjAxMTUsMTE4LDEyMDE2NywxMTgsMTIwMjE5LDExOCwxMjAyNzEsMTE4LDEyMDMyMywxMTgsMTIwMzc1LDExOCwxMjA0MjcsMTE4LDEyMDQ3OSwxMTgsNzQ1NiwxMTgsOTU3LDExOCwxMjA1MjYsMTE4LDEyMDU4NCwxMTgsMTIwNjQyLDExOCwxMjA3MDAsMTE4LDEyMDc1OCwxMTgsMTE0MSwxMTgsMTQ5NiwxMTgsNzE0MzAsMTE4LDQzOTQ1LDExOCw3MTg3MiwxMTgsMTE5MzA5LDg2LDE2MzksODYsMTc4Myw4Niw4NTQ4LDg2LDExOTgyOSw4NiwxMTk4ODEsODYsMTE5OTMzLDg2LDExOTk4NSw4NiwxMjAwMzcsODYsMTIwMDg5LDg2LDEyMDE0MSw4NiwxMjAxOTMsODYsMTIwMjQ1LDg2LDEyMDI5Nyw4NiwxMjAzNDksODYsMTIwNDAxLDg2LDEyMDQ1Myw4NiwxMTQwLDg2LDExNTc2LDg2LDUwODEsODYsNTE2Nyw4Niw0MjcxOSw4Niw0MjIxNCw4Niw5Mzk2MCw4Niw3MTg0MCw4Niw2Njg0NSw4Niw2MjMsMTE5LDExOTg1NiwxMTksMTE5OTA4LDExOSwxMTk5NjAsMTE5LDEyMDAxMiwxMTksMTIwMDY0LDExOSwxMjAxMTYsMTE5LDEyMDE2OCwxMTksMTIwMjIwLDExOSwxMjAyNzIsMTE5LDEyMDMyNCwxMTksMTIwMzc2LDExOSwxMjA0MjgsMTE5LDEyMDQ4MCwxMTksNzQ1NywxMTksMTEyMSwxMTksMTMwOSwxMTksMTM3NywxMTksNzE0MzQsMTE5LDcxNDM4LDExOSw3MTQzOSwxMTksNDM5MDcsMTE5LDcxOTE5LDg3LDcxOTEwLDg3LDExOTgzMCw4NywxMTk4ODIsODcsMTE5OTM0LDg3LDExOTk4Niw4NywxMjAwMzgsODcsMTIwMDkwLDg3LDEyMDE0Miw4NywxMjAxOTQsODcsMTIwMjQ2LDg3LDEyMDI5OCw4NywxMjAzNTAsODcsMTIwNDAyLDg3LDEyMDQ1NCw4NywxMzA4LDg3LDUwNDMsODcsNTA3Niw4Nyw0MjIxOCw4Nyw1NzQyLDEyMCwxMDUzOSwxMjAsMTA1NDAsMTIwLDEwNzk5LDEyMCw2NTM2OCwxMjAsODU2OSwxMjAsMTE5ODU3LDEyMCwxMTk5MDksMTIwLDExOTk2MSwxMjAsMTIwMDEzLDEyMCwxMjAwNjUsMTIwLDEyMDExNywxMjAsMTIwMTY5LDEyMCwxMjAyMjEsMTIwLDEyMDI3MywxMjAsMTIwMzI1LDEyMCwxMjAzNzcsMTIwLDEyMDQyOSwxMjAsMTIwNDgxLDEyMCw1NDQxLDEyMCw1NTAxLDEyMCw1NzQxLDg4LDk1ODcsODgsNjYzMzgsODgsNzE5MTYsODgsNjUzMzYsODgsODU1Myw4OCwxMTk4MzEsODgsMTE5ODgzLDg4LDExOTkzNSw4OCwxMTk5ODcsODgsMTIwMDM5LDg4LDEyMDA5MSw4OCwxMjAxNDMsODgsMTIwMTk1LDg4LDEyMDI0Nyw4OCwxMjAyOTksODgsMTIwMzUxLDg4LDEyMDQwMyw4OCwxMjA0NTUsODgsNDI5MzEsODgsOTM1LDg4LDEyMDUxMCw4OCwxMjA1NjgsODgsMTIwNjI2LDg4LDEyMDY4NCw4OCwxMjA3NDIsODgsMTE0MzYsODgsMTE2MTMsODgsNTgxNSw4OCw0MjIxOSw4OCw2NjE5Miw4OCw2NjIyOCw4OCw2NjMyNyw4OCw2Njg1NSw4OCw2MTEsMTIxLDc1NjQsMTIxLDY1MzY5LDEyMSwxMTk4NTgsMTIxLDExOTkxMCwxMjEsMTE5OTYyLDEyMSwxMjAwMTQsMTIxLDEyMDA2NiwxMjEsMTIwMTE4LDEyMSwxMjAxNzAsMTIxLDEyMDIyMiwxMjEsMTIwMjc0LDEyMSwxMjAzMjYsMTIxLDEyMDM3OCwxMjEsMTIwNDMwLDEyMSwxMjA0ODIsMTIxLDY1NSwxMjEsNzkzNSwxMjEsNDM4NjYsMTIxLDk0NywxMjEsODUwOSwxMjEsMTIwNTE2LDEyMSwxMjA1NzQsMTIxLDEyMDYzMiwxMjEsMTIwNjkwLDEyMSwxMjA3NDgsMTIxLDExOTksMTIxLDQzMjcsMTIxLDcxOTAwLDEyMSw2NTMzNyw4OSwxMTk4MzIsODksMTE5ODg0LDg5LDExOTkzNiw4OSwxMTk5ODgsODksMTIwMDQwLDg5LDEyMDA5Miw4OSwxMjAxNDQsODksMTIwMTk2LDg5LDEyMDI0OCw4OSwxMjAzMDAsODksMTIwMzUyLDg5LDEyMDQwNCw4OSwxMjA0NTYsODksOTMzLDg5LDk3OCw4OSwxMjA1MDgsODksMTIwNTY2LDg5LDEyMDYyNCw4OSwxMjA2ODIsODksMTIwNzQwLDg5LDExNDMyLDg5LDExOTgsODksNTAzMyw4OSw1MDUzLDg5LDQyMjIwLDg5LDk0MDE5LDg5LDcxODQ0LDg5LDY2MjI2LDg5LDExOTg1OSwxMjIsMTE5OTExLDEyMiwxMTk5NjMsMTIyLDEyMDAxNSwxMjIsMTIwMDY3LDEyMiwxMjAxMTksMTIyLDEyMDE3MSwxMjIsMTIwMjIzLDEyMiwxMjAyNzUsMTIyLDEyMDMyNywxMjIsMTIwMzc5LDEyMiwxMjA0MzEsMTIyLDEyMDQ4MywxMjIsNzQ1OCwxMjIsNDM5MjMsMTIyLDcxODc2LDEyMiw2NjI5Myw5MCw3MTkwOSw5MCw2NTMzOCw5MCw4NDg0LDkwLDg0ODgsOTAsMTE5ODMzLDkwLDExOTg4NSw5MCwxMTk5MzcsOTAsMTE5OTg5LDkwLDEyMDA0MSw5MCwxMjAxOTcsOTAsMTIwMjQ5LDkwLDEyMDMwMSw5MCwxMjAzNTMsOTAsMTIwNDA1LDkwLDEyMDQ1Nyw5MCw5MTgsOTAsMTIwNDkzLDkwLDEyMDU1MSw5MCwxMjA2MDksOTAsMTIwNjY3LDkwLDEyMDcyNSw5MCw1MDU5LDkwLDQyMjA0LDkwLDcxODQ5LDkwLDY1MjgyLDM0LDY1Mjg0LDM2LDY1Mjg1LDM3LDY1Mjg2LDM4LDY1MjkwLDQyLDY1MjkxLDQzLDY1Mjk0LDQ2LDY1Mjk1LDQ3LDY1Mjk2LDQ4LDY1Mjk3LDQ5LDY1Mjk4LDUwLDY1Mjk5LDUxLDY1MzAwLDUyLDY1MzAxLDUzLDY1MzAyLDU0LDY1MzAzLDU1LDY1MzA0LDU2LDY1MzA1LDU3LDY1MzA4LDYwLDY1MzA5LDYxLDY1MzEwLDYyLDY1MzEyLDY0LDY1MzE2LDY4LDY1MzE4LDcwLDY1MzE5LDcxLDY1MzI0LDc2LDY1MzI5LDgxLDY1MzMwLDgyLDY1MzMzLDg1LDY1MzM0LDg2LDY1MzM1LDg3LDY1MzQzLDk1LDY1MzQ2LDk4LDY1MzQ4LDEwMCw2NTM1MCwxMDIsNjUzNTUsMTA3LDY1MzU3LDEwOSw2NTM1OCwxMTAsNjUzNjEsMTEzLDY1MzYyLDExNCw2NTM2NCwxMTYsNjUzNjUsMTE3LDY1MzY3LDExOSw2NTM3MCwxMjIsNjUzNzEsMTIzLDY1MzczLDEyNV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpLGhlLmNhY2hlPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXB1dGVGbj1lLHRoaXMubGFzdENhY2hlPXZvaWQgMCx0aGlzLmxhc3RBcmdLZXk9dm9pZCAwfWdldChlKXt2YXIgdD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09dCYmKHRoaXMubGFzdEFyZ0tleT10LHRoaXMubGFzdENhY2hlPXRoaXMuY29tcHV0ZUZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KGU9PntmdW5jdGlvbiB0KHQpe2NvbnN0IG49bmV3IE1hcDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTIpbi5zZXQodFtlXSx0W2UrMV0pO3JldHVybiBufWNvbnN0IG49Ty5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCk7bGV0IHI9ZS5maWx0ZXIoZT0+IWUuc3RhcnRzV2l0aCgiXyIpJiZlIGluIG4pLGk9dm9pZCAwO2Zvcihjb25zdCBvIG9mIHI9MD09PXIubGVuZ3RoP1siX2RlZmF1bHQiXTpyKXtjb25zdCBhPXQobltvXSk7aT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiB0O2NvbnN0IG49bmV3IE1hcDtmb3IodmFyW3IsaV1vZiBlKXQuaGFzKHIpJiZuLnNldChyLGkpO3JldHVybiBufShpLGEpfWNvbnN0IGE9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKHZhcltyLGldb2YgdCluLnNldChyLGkpO3JldHVybiBufSh0KG4uX2NvbW1vbiksaSk7cmV0dXJuIG5ldyBoZShhKX0pLGhlLl9sb2NhbGVzPW5ldyBuZSgoKT0+T2JqZWN0LmtleXMoaGUuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoZT0+IWUuc3RhcnRzV2l0aCgiXyIpKSk7Y2xhc3MgY2V7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldChjZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gY2UuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gY2UuZ2V0RGF0YSgpfX1jZS5fZGF0YT12b2lkIDA7Y2xhc3MgZGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgdWV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyBwZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIG1le2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIGZle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIGdle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UobixyKXtjb25zdCBpPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKGUsdCk9Pnt0aGlzLl9wZW5kaW5nUmVwbGllc1tpXT17cmVzb2x2ZTplLHJlamVjdDp0fSx0aGlzLl9zZW5kKG5ldyBkZSh0aGlzLl93b3JrZXJJZCxpLG4scikpfSl9bGlzdGVuKGUsdCl7bGV0IG49bnVsbDtjb25zdCByPW5ldyBaKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PntuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KG4sciksdGhpcy5fc2VuZChuZXcgcGUodGhpcy5fd29ya2VySWQsbixlLHQpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKG4pLHRoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLG4pKSxuPW51bGx9fSk7cmV0dXJuIHIuZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2Uobil7aWYodGhpcy5fcGVuZGluZ1JlcGxpZXNbbi5zZXFdKXtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tuLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW24uc2VxXSxuLmVycil7bGV0IGU9bi5lcnI7cmV0dXJuIG4uZXJyLiRpc0Vycm9yJiYoKGU9bmV3IEVycm9yKS5uYW1lPW4uZXJyLm5hbWUsZS5tZXNzYWdlPW4uZXJyLm1lc3NhZ2UsZS5zdGFjaz1uLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChlKX10LnJlc29sdmUobi5yZXMpfWVsc2UgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7bGV0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKTtuLnRoZW4oZT0+e3RoaXMuX3NlbmQobmV3IHVlKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0sZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1jKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgdWUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsYyhlKSkpfSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO2U9dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudChlLmV2ZW50TmFtZSxlLmFyZykoZT0+e3RoaXMuX3NlbmQobmV3IG1lKHRoaXMuX3dvcmtlcklkLHQsZSkpfSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxlKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKHQpe2xldCBuPVtdO2lmKDA9PT10LnR5cGUpZm9yKGxldCBlPTA7ZTx0LmFyZ3MubGVuZ3RoO2UrKyl0LmFyZ3NbZV1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZuLnB1c2godC5hcmdzW2VdKTtlbHNlIDE9PT10LnR5cGUmJnQucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZSh0LG4pfX1mdW5jdGlvbiBiZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZvZShlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIF9lKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZvZShlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIHdlKGUsbixyKXtsZXQgdD17fTtmb3IoY29uc3QgaSBvZiBlKV9lKGkpP3RbaV09KHQ9PmZ1bmN0aW9uKGUpe3JldHVybiByKHQsZSl9KShpKTpiZShpKT90W2ldPXIoaSx2b2lkIDApOnRbaV09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShpKTtyZXR1cm4gdH1jbGFzcyB2ZXtjb25zdHJ1Y3RvcihuLGUpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT1lLHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IGdlKHtzZW5kTWVzc2FnZTooZSx0KT0+e24oZSx0KX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoX2UoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH1pZihiZShlKSl7dD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgZXZlbnQgbmFtZSAiK2UpfWluaXRpYWxpemUoZSx0LHIsbil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT13ZShuLChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpLChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShlZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx0LnRydXN0ZWRUeXBlc1BvbGljeSxkZWxldGUgdC50cnVzdGVkVHlwZXNQb2xpY3ksdC5jYXRjaEVycm9yPSEwLEUucmVxdWlyZS5jb25maWcodCkpLG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgZT1FLnJlcXVpcmU7ZShbcl0sZT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPWUuY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP3QoZWUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTpuKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSxuKX0pKX19Y2xhc3MgeWV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5vcmlnaW5hbFN0YXJ0PWUsdGhpcy5vcmlnaW5hbExlbmd0aD10LHRoaXMubW9kaWZpZWRTdGFydD1uLHRoaXMubW9kaWZpZWRMZW5ndGg9cn1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24gVGUoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9Y2xhc3Mga2V7Y29uc3RydWN0b3IoZSl7dGhpcy5zb3VyY2U9ZX1nZXRFbGVtZW50cygpe2NvbnN0IG49dGhpcy5zb3VyY2Uscj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXJbZV09bi5jaGFyQ29kZUF0KGUpO3JldHVybiByfX1jbGFzcyBTZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBDZXtzdGF0aWMgQ29weSh0LG4scixpLGEpe2ZvcihsZXQgZT0wO2U8YTtlKyspcltpK2VdPXRbbitlXX1zdGF0aWMgQ29weTIodCxuLHIsaSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKXJbaStlXT10W24rZV19fWNsYXNzIHhle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeygwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgeWUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4oMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIExle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDt2YXJbbixlLHJdPUxlLl9nZXRFbGVtZW50cyhlKSxbdCxpLGFdPUxlLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPXImJmEsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1uLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9ZSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPXQsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1pLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiAwPGUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXt2YXIgbj1lLmdldEVsZW1lbnRzKCk7aWYoTGUuX2lzU3RyaW5nQXJyYXkobikpe2NvbnN0IHI9bmV3IEludDMyQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylyW2VdPWZ1bmN0aW9uKG4scil7cj1UZSgxNDk0MTcscik7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXI9VGUobi5jaGFyQ29kZUF0KGUpLHIpO3JldHVybiByfShuW2VdLDApO3JldHVybltuLHIsITBdfXJldHVybiBuIGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sbiwhMV06W1tdLG5ldyBJbnQzMkFycmF5KG4pLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7cmV0dXJuISF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSYmTGUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PUxlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxuLHIsaSl7dmFyIGE9WyExXTtsZXQgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLHIsYSk7cmV0dXJuIGkmJihvPXRoaXMuUHJldHRpZnlDaGFuZ2VzKG8pKSx7cXVpdEVhcmx5OmFbMF0sY2hhbmdlczpvfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG4scixpLGEpe2ZvcihhWzBdPSExO3Q8PW4mJnI8PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0KysscisrO2Zvcig7dDw9biYmcjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG4saSk7KW4tLSxpLS07aWYobjx0fHxpPHIpe2xldCBlO3JldHVybiBlPXI8PWk/KFNlLkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxbbmV3IHllKHQsMCxyLGktcisxKV0pOnQ8PW4/KFNlLkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbbmV3IHllKHQsbi10KzEsciwwKV0pOihTZS5Bc3NlcnQodD09PW4rMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksU2UuQXNzZXJ0KHI9PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLFtdKX12YXIgbz1bMF0scz1bMF0sbD10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludCh0LG4scixpLG8scyxhKSxvPW9bMF0scz1zWzBdO2lmKG51bGwhPT1sKXJldHVybiBsO2lmKGFbMF0pcmV0dXJuW25ldyB5ZSh0LG4tdCsxLHIsaS1yKzEpXTt7bD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbyxyLHMsYSk7bGV0IGU9W107cmV0dXJuIGU9YVswXT9bbmV3IHllKG8rMSxuLShvKzEpKzEscysxLGktKHMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobysxLG4scysxLGksYSksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobCxlKX19V0FMS1RSQUNFKGMsbixkLHUscCxtLGYsZyxlLGIsdCxfLHcscix2LHksVCxrKXtsZXQgUz1udWxsLGk9bmV3IHhlLEM9bix4PWQsYT13WzBdLXlbMF0tdSxvPS0xMDczNzQxODI0LHM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve3ZhciBsPWErYzthPWw9PT1DfHxsPHgmJmVbbC0xXTxlW2wrMV0/KHI9KHQ9ZVtsKzFdKS1hLXUsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxyKSxsKzEtYyk6KHI9KHQ9ZVtsLTFdKzEpLWEtdSx0PG8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQtMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0LHIrMSksbC0xLWMpLDA8PXMmJihjPShlPXRoaXMubV9mb3J3YXJkSGlzdG9yeVtzXSlbMF0sQz0xLHg9ZS5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7aWYobj1pLmdldFJldmVyc2VDaGFuZ2VzKCksa1swXSl7bGV0IGU9d1swXSsxLHQ9eVswXSsxO2lmKG51bGwhPT1uJiYwPG4ubGVuZ3RoKXtjb25zdCBMPW5bbi5sZW5ndGgtMV07ZT1NYXRoLm1heChlLEwuZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LEwuZ2V0TW9kaWZpZWRFbmQoKSl9Uz1bbmV3IHllKGUsXy1lKzEsdCx2LXQrMSldfWVsc2V7aT1uZXcgeGUsQz1tLHg9ZixhPXdbMF0teVswXS1nLG89MTA3Mzc0MTgyNCxzPVQ/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3t2YXIgaD1hK3A7YT1oPT09Q3x8aDx4JiZiW2gtMV0+PWJbaCsxXT8ocj0odD1iW2grMV0tMSktYS1nLHQ+byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCsxLGkuQWRkT3JpZ2luYWxFbGVtZW50KHQrMSxyKzEpLGgrMS1wKToocj0odD1iW2gtMV0pLWEtZyx0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQsaS5BZGRNb2RpZmllZEVsZW1lbnQodCsxLHIrMSksaC0xLXApLDA8PXMmJihwPShiPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtzXSlbMF0sQz0xLHg9Yi5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7Uz1pLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobixTKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoaSxhLG0sZixnLGIsXyl7bGV0IG89MCxzPTAsbD0wLHc9MCxoPTAsdj0wO2ktLSxtLS0sYltnWzBdPTBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTt2YXIgZT1hLWkrKGYtbSkseT0xK2U7Y29uc3QgYz1uZXcgSW50MzJBcnJheSh5KSxkPW5ldyBJbnQzMkFycmF5KHkpO3ZhciB1PWYtbSxwPWEtaSxUPWktbSxrPWEtZixTPShwLXUpJTI9PTA7Y1t1XT1pLGRbcF09YSxfWzBdPSExO2ZvcihsZXQgcj0xO3I8PWUvMisxO3IrKyl7bGV0IHQ9MCxuPTA7bD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUtcixyLHUseSksdz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUrcixyLHUseSk7Zm9yKGxldCBlPWw7ZTw9dztlKz0yKXtvPWU9PT1sfHxlPHcmJmNbZS0xXTxjW2UrMV0/Y1tlKzFdOmNbZS0xXSsxLHM9by0oZS11KS1UO2Zvcih2YXIgQz1vO288YSYmczxmJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobysxLHMrMSk7KW8rKyxzKys7aWYoKGNbZV09bykrcz50K24mJih0PW8sbj1zKSwhUyYmTWF0aC5hYnMoZS1wKTw9ci0xJiZvPj1kW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEM8PWRbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9dmFyIHg9KHQtaSsobi1tKS1yKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKHQseCkpcmV0dXJuIF9bMF09ITAsZ1swXT10LGJbMF09biwwPHgmJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOihpKyssbSsrLFtuZXcgeWUoaSxhLWkrMSxtLGYtbSsxKV0pO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwLXIscixwLHkpLHY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwK3IscixwLHkpO2ZvcihsZXQgZT1oO2U8PXY7ZSs9Mil7bz1lPT09aHx8ZTx2JiZkW2UtMV0+PWRbZSsxXT9kW2UrMV0tMTpkW2UtMV0scz1vLShlLXApLWs7Zm9yKHZhciBMPW87bz5pJiZzPm0mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChvLHMpOylvLS0scy0tO2lmKGRbZV09byxTJiZNYXRoLmFicyhlLXUpPD1yJiZvPD1jW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEw+PWNbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9aWYocjw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkody1sKzIpO2VbMF09dS1sKzEsQ2UuQ29weTIoYyxsLGUsMSx3LWwrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksKGU9bmV3IEludDMyQXJyYXkodi1oKzIpKVswXT1wLWgrMSxDZS5Db3B5MihkLGgsZSwxLHYtaCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKHUsbCx3LFQscCxoLHYsayxjLGQsbyxhLGcscyxmLGIsUyxfKX1QcmV0dGlmeUNoYW5nZXMoYSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IHQ9YVtlXTtmb3IodmFyIGQ9ZTxhLmxlbmd0aC0xP2FbZSsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHU9ZTxhLmxlbmd0aC0xP2FbZSsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLHA9MDx0Lm9yaWdpbmFsTGVuZ3RoLG09MDx0Lm1vZGlmaWVkTGVuZ3RoO3Qub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPGQmJnQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPHUmJighcHx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoKSkmJighbXx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwodC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSk7KXt2YXIgZj10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSYmIWYpYnJlYWs7dC5vcmlnaW5hbFN0YXJ0KyssdC5tb2RpZmllZFN0YXJ0Kyt9dmFyIGc9W251bGxdO2U8YS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2VdLGFbZSsxXSxnKSYmKGFbZV09Z1swXSxhLnNwbGljZShlKzEsMSksZS0tKX1mb3IobGV0IGU9YS5sZW5ndGgtMTswPD1lO2UtLSl7Y29uc3QgaD1hW2VdO2xldCB0PTAsbj0wOzA8ZSYmKGw9YVtlLTFdLHQ9bC5vcmlnaW5hbFN0YXJ0K2wub3JpZ2luYWxMZW5ndGgsbj1sLm1vZGlmaWVkU3RhcnQrbC5tb2RpZmllZExlbmd0aCk7dmFyIGI9MDxoLm9yaWdpbmFsTGVuZ3RoLF89MDxoLm1vZGlmaWVkTGVuZ3RoO2xldCByPTAsaT10aGlzLl9ib3VuZGFyeVNjb3JlKGgub3JpZ2luYWxTdGFydCxoLm9yaWdpbmFsTGVuZ3RoLGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXt2YXIgbz1oLm9yaWdpbmFsU3RhcnQtZSxzPWgubW9kaWZpZWRTdGFydC1lO2lmKG88dHx8czxuKWJyZWFrO2lmKGImJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChvLG8raC5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYoXyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHMscytoLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztvPShvPT09dCYmcz09PW4/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKG8saC5vcmlnaW5hbExlbmd0aCxzLGgubW9kaWZpZWRMZW5ndGgpO28+aSYmKGk9byxyPWUpfWgub3JpZ2luYWxTdGFydC09cixoLm1vZGlmaWVkU3RhcnQtPXI7dmFyIGw9W251bGxdOzA8ZSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2UtMV0sYVtlXSxsKSYmKGFbZS0xXT1sWzBdLGEuc3BsaWNlKGUsMSksZSsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgZT0xLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgaT1hW2UtMV0sYz1hW2VdO3ZhciB3PWMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCx2PWkub3JpZ2luYWxTdGFydCx5PWMub3JpZ2luYWxTdGFydCtjLm9yaWdpbmFsTGVuZ3RoLG49eS12LHI9aS5tb2RpZmllZFN0YXJ0LFQ9Yy5tb2RpZmllZFN0YXJ0K2MubW9kaWZpZWRMZW5ndGgsaz1ULXI7dzw1JiZuPDIwJiZrPDIwJiYoKHY9dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZSh2LG4scixrLHcpKSYmKFtuLHJdPXYsbj09PWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoJiZyPT09aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGh8fChpLm9yaWdpbmFsTGVuZ3RoPW4taS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9ci1pLm1vZGlmaWVkU3RhcnQsYy5vcmlnaW5hbFN0YXJ0PW4rdyxjLm1vZGlmaWVkU3RhcnQ9cit3LGMub3JpZ2luYWxMZW5ndGg9eS1jLm9yaWdpbmFsU3RhcnQsYy5tb2RpZmllZExlbmd0aD1ULWMubW9kaWZpZWRTdGFydCkpKX1yZXR1cm4gYX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO3ZhciBhPWUrdC1pKzEsYz1uK3ItaSsxO2xldCBvPTAscz0wLGw9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8YztlKyspe3ZhciBoPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTswPGgmJmg+byYmKG89aCxzPXQsbD1lKX1yZXR1cm4gMDxvP1tzLGxdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsbixyKXtsZXQgaT0wO2ZvcihsZXQgZT0wO2U8cjtlKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtlLG4rZSkpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K2VdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZigwPHQpe2U9ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSkpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LG4scil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShuLHIpPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7dmFyIG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIDA8dC5sZW5ndGg/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gQ2UuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSxDZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9cmV0dXJuIG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKSxDZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLENlLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59Q2hhbmdlc092ZXJsYXAobixyLGkpe2lmKFNlLkFzc2VydChuLm9yaWdpbmFsU3RhcnQ8PXIub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxTZS5Bc3NlcnQobi5tb2RpZmllZFN0YXJ0PD1yLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg+PXIub3JpZ2luYWxTdGFydHx8bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCl7dmFyIGE9bi5vcmlnaW5hbFN0YXJ0O2xldCBlPW4ub3JpZ2luYWxMZW5ndGg7dmFyIG89bi5tb2RpZmllZFN0YXJ0O2xldCB0PW4ubW9kaWZpZWRMZW5ndGg7cmV0dXJuIG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoPj1yLm9yaWdpbmFsU3RhcnQmJihlPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCksbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCYmKHQ9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KSxpWzBdPW5ldyB5ZShhLGUsbyx0KSwhMH1yZXR1cm4gaVswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKDA8PWUmJmU8cilyZXR1cm4gZTt0PXQlMj09MDtyZXR1cm4gZTwwP3Q9PShuJTI9PTApPzA6MTp0PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgQWU7aWYodm9pZCAwIT09RS52c2NvZGUmJnZvaWQgMCE9PUUudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IHFhPUUudnNjb2RlLnByb2Nlc3M7QWU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBxYS5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcWEuYXJjaH0sZ2V0IGVudigpe3JldHVybiBxYS5lbnZ9LGN3ZCgpe3JldHVybiBxYS5jd2QoKX19fWVsc2UgQWU9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2QoKXtyZXR1cm4gcHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX19OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gej8id2luMzIiOkg/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkKCl7cmV0dXJuIi8ifX07Y29uc3QgRWU9QWUuY3dkLE1lPUFlLmVudjt2YXIgUmUsSWUsdD1BZS5wbGF0Zm9ybTtjbGFzcyBOZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjt2YXIgaT0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IixlPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlIGArdDtzdXBlcihlKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIG4pLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiBVZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgTmUodCwic3RyaW5nIixlKX1mdW5jdGlvbiB1KGUpe3JldHVybiA0Nz09PWV8fDkyPT09ZX1mdW5jdGlvbiB6ZShlKXtyZXR1cm4gNDc9PT1lfWZ1bmN0aW9uIEhlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB8fDk3PD1lJiZlPD0xMjJ9ZnVuY3Rpb24gRGUodCxuLHIsaSl7bGV0IGE9IiIsbz0wLHM9LTEsbD0wLGg9MDtmb3IobGV0IGU9MDtlPD10Lmxlbmd0aDsrK2Upe2lmKGU8dC5sZW5ndGgpaD10LmNoYXJDb2RlQXQoZSk7ZWxzZXtpZihpKGgpKWJyZWFrO2g9NDd9aWYoaShoKSl7aWYocyE9PWUtMSYmMSE9PWwpaWYoMj09PWwpe2lmKGEubGVuZ3RoPDJ8fDIhPT1vfHw0NiE9PWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKXx8NDYhPT1hLmNoYXJDb2RlQXQoYS5sZW5ndGgtMikpe2lmKDI8YS5sZW5ndGgpe3ZhciBjPWEubGFzdEluZGV4T2Yocik7bz0tMT09PWM/KGE9IiIsMCk6KGE9YS5zbGljZSgwLGMpKS5sZW5ndGgtMS1hLmxhc3RJbmRleE9mKHIpLHM9ZSxsPTA7Y29udGludWV9aWYoMCE9PWEubGVuZ3RoKXthPSIiLG89MCxzPWUsbD0wO2NvbnRpbnVlfX1uJiYoYSs9MDxhLmxlbmd0aD9yKyIuLiI6Ii4uIixvPTIpfWVsc2UgMDxhLmxlbmd0aD9hKz0iIityK3Quc2xpY2UocysxLGUpOmE9dC5zbGljZShzKzEsZSksbz1lLXMtMTtzPWUsbD0wfWVsc2UgNDY9PT1oJiYtMSE9PWw/KytsOmw9LTF9cmV0dXJuIGF9ZnVuY3Rpb24gV2UoZSx0KXtpZihudWxsPT09dHx8Im9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBOZSgicGF0aE9iamVjdCIsIk9iamVjdCIsdCk7dmFyIG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8IiIrKHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpO3JldHVybiBuP249PT10LnJvb3Q/IiIrbityOiIiK24rZStyOnJ9Y29uc3QgUGU9e3Jlc29sdmUoLi4uYSl7bGV0IG89IiIscz0iIixsPSExO2ZvcihsZXQgdD1hLmxlbmd0aC0xOy0xPD10O3QtLSl7bGV0IG47aWYoMDw9dCl7aWYoVWUobj1hW3RdLCJwYXRoIiksMD09PW4ubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PW8ubGVuZ3RoP249RWUoKToodm9pZCAwPT09KG49TWVbIj0iK29dfHxFZSgpKXx8bi5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT1vLnRvTG93ZXJDYXNlKCkmJjkyPT09bi5jaGFyQ29kZUF0KDIpKSYmKG49bysiXFwiKTt2YXIgaD1uLmxlbmd0aDtsZXQgcj0wLGk9IiIsZT0hMTt2YXIgYz1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PWgpdShjKSYmKHI9MSxlPSEwKTtlbHNlIGlmKHUoYykpaWYoZT0hMCx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxoJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7dmFyIGQ9bi5zbGljZSh0LGUpO2Zvcih0PWU7ZTxoJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPGgmJmUhPT10KXtmb3IodD1lO2U8aCYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1oJiZlPT09dHx8KGk9YFxcXFwke2R9XFxgK24uc2xpY2UodCxlKSxyPWUpfX19ZWxzZSByPTE7ZWxzZSBIZShjKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPW4uc2xpY2UoMCwyKSwocj0yKTxoJiZ1KG4uY2hhckNvZGVBdCgyKSkmJihlPSEwLHI9MykpO2lmKDA8aS5sZW5ndGgpaWYoMDxvLmxlbmd0aCl7aWYoaS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2Ugbz1pO2lmKGwpe2lmKDA8by5sZW5ndGgpYnJlYWt9ZWxzZSBpZihzPW4uc2xpY2UocikrIlxcIitzLChsPWUpJiYwPG8ubGVuZ3RoKWJyZWFrfXJldHVybiBzPURlKHMsIWwsIlxcIix1KSxsP28rIlxcIitzOiIiK28rc3x8Ii4ifSxub3JtYWxpemUobil7VWUobiwicGF0aCIpO3ZhciByPW4ubGVuZ3RoO2lmKDA9PT1yKXJldHVybiIuIjtsZXQgaT0wLGEsZT0hMTt2YXIgdD1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PXIpcmV0dXJuIHplKHQpPyJcXCI6bjtpZih1KHQpKWlmKGU9ITAsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe3ZhciBvPW4uc2xpY2UodCxlKTtmb3IodD1lO2U8ciYmdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJiF1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPT09cilyZXR1cm5gXFxcXCR7b31cXCR7bi5zbGljZSh0KX1cXGA7ZSE9PXQmJihhPWBcXFxcJHtvfVxcYCtuLnNsaWNlKHQsZSksaT1lKX19fWVsc2UgaT0xO2Vsc2UgSGUodCkmJjU4PT09bi5jaGFyQ29kZUF0KDEpJiYoYT1uLnNsaWNlKDAsMiksKGk9Mik8ciYmdShuLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxpPTMpKTtsZXQgcz1pPHI/RGUobi5zbGljZShpKSwhZSwiXFwiLHUpOiIiO3JldHVybiAwPChzPTAhPT1zLmxlbmd0aHx8ZT9zOiIuIikubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChyLTEpKSYmKHMrPSJcXCIpLHZvaWQgMD09PWE/ZT8iXFwiK3M6czplP2ErIlxcIitzOiIiK2Erc30saXNBYnNvbHV0ZShlKXtVZShlLCJwYXRoIik7dmFyIHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7dmFyIG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiB1KG4pfHwyPHQmJkhlKG4pJiY1OD09PWUuY2hhckNvZGVBdCgxKSYmdShlLmNoYXJDb2RlQXQoMikpfSxqb2luKC4uLnQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7bGV0IG4scjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIGk9dFtlXTtVZShpLCJwYXRoIiksMDxpLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yPWk6bis9IlxcIitpKX1pZih2b2lkIDA9PT1uKXJldHVybiIuIjtsZXQgZT0hMCxhPTA7dmFyIG87aWYoInN0cmluZyI9PXR5cGVvZiByJiZ1KHIuY2hhckNvZGVBdCgwKSkmJigrK2EsMTwobz1yLmxlbmd0aCkmJnUoci5jaGFyQ29kZUF0KDEpKSYmKCsrYSwyPG8mJih1KHIuY2hhckNvZGVBdCgyKSk/KythOmU9ITEpKSksZSl7Zm9yKDthPG4ubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChhKSk7KWErKzsyPD1hJiYobj0iXFwiK24uc2xpY2UoYSkpfXJldHVybiBQZS5ub3JtYWxpemUobil9LHJlbGF0aXZlKGUsdCl7aWYoVWUoZSwiZnJvbSIpLFVlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3QgYz1QZS5yZXNvbHZlKGUpLG49UGUucmVzb2x2ZSh0KTtpZihjPT09bilyZXR1cm4iIjtpZigoZT1jLnRvTG93ZXJDYXNlKCkpPT09KHQ9bi50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aCYmOTI9PT1lLmNoYXJDb2RlQXQocik7KXIrKztsZXQgaT1lLmxlbmd0aDtmb3IoO2ktMT5yJiY5Mj09PWUuY2hhckNvZGVBdChpLTEpOylpLS07dmFyIGQ9aS1yO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoJiY5Mj09PXQuY2hhckNvZGVBdChhKTspYSsrO2xldCBvPXQubGVuZ3RoO2Zvcig7by0xPmEmJjkyPT09dC5jaGFyQ29kZUF0KG8tMSk7KW8tLTt2YXIgdT1vLWEscz1kPHU/ZDp1O2xldCBsPS0xLGg9MDtmb3IoO2g8cztoKyspe3ZhciBwPWUuY2hhckNvZGVBdChyK2gpO2lmKHAhPT10LmNoYXJDb2RlQXQoYStoKSlicmVhazs5Mj09PXAmJihsPWgpfWlmKGghPT1zKXtpZigtMT09PWwpcmV0dXJuIG59ZWxzZXtpZihzPHUpe2lmKDkyPT09dC5jaGFyQ29kZUF0KGEraCkpcmV0dXJuIG4uc2xpY2UoYStoKzEpO2lmKDI9PT1oKXJldHVybiBuLnNsaWNlKGEraCl9czxkJiYoOTI9PT1lLmNoYXJDb2RlQXQocitoKT9sPWg6Mj09PWgmJihsPTMpKSwtMT09PWwmJihsPTApfWxldCBtPSIiO2ZvcihoPXIrbCsxO2g8PWk7KytoKWghPT1pJiY5MiE9PWUuY2hhckNvZGVBdChoKXx8KG0rPTA9PT1tLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIGErPWwsMDxtLmxlbmd0aD8iIittK24uc2xpY2UoYSxvKTooOTI9PT1uLmNoYXJDb2RlQXQoYSkmJisrYSxuLnNsaWNlKGEsbykpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIiI7Y29uc3QgdD1QZS5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKDkyPT09dC5jaGFyQ29kZUF0KDApKXtpZig5Mj09PXQuY2hhckNvZGVBdCgxKSl7dmFyIG49dC5jaGFyQ29kZUF0KDIpO2lmKDYzIT09biYmNDYhPT1uKXJldHVybiJcXFxcP1xcVU5DXFwiK3Quc2xpY2UoMil9fWVsc2UgaWYoSGUodC5jaGFyQ29kZUF0KDApKSYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJjkyPT09dC5jaGFyQ29kZUF0KDIpKXJldHVybiJcXFxcP1xcIit0O3JldHVybiBlfSxkaXJuYW1lKG4pe1VlKG4sInBhdGgiKTt2YXIgcj1uLmxlbmd0aDtpZigwPT09cilyZXR1cm4iLiI7bGV0IGk9LTEsYT0wO3ZhciBlPW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdShlKT9uOiIuIjtpZih1KGUpKXtpZihpPWE9MSx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJnUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PXIpcmV0dXJuIG47ZSE9PXQmJihpPWE9ZSsxKX19fX1lbHNlIEhlKGUpJiY1OD09PW4uY2hhckNvZGVBdCgxKSYmKGk9MjxyJiZ1KG4uY2hhckNvZGVBdCgyKSk/MzoyLGE9aSk7bGV0IHQ9LTEsbz0hMDtmb3IobGV0IGU9ci0xO2U+PWE7LS1lKWlmKHUobi5jaGFyQ29kZUF0KGUpKSl7aWYoIW8pe3Q9ZTticmVha319ZWxzZSBvPSExO2lmKC0xPT09dCl7aWYoLTE9PT1pKXJldHVybiIuIjt0PWl9cmV0dXJuIG4uc2xpY2UoMCx0KX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZVZShyLCJleHQiKSxVZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZigyPD1uLmxlbmd0aCYmSGUobi5jaGFyQ29kZUF0KDApKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPTIpLHZvaWQgMCE9PXImJjA8ci5sZW5ndGgmJnIubGVuZ3RoPD1uLmxlbmd0aCl7aWYocj09PW4pcmV0dXJuIiI7bGV0IGU9ci5sZW5ndGgtMSx0PS0xO2ZvcihzPW4ubGVuZ3RoLTE7cz49aTstLXMpe3ZhciBsPW4uY2hhckNvZGVBdChzKTtpZih1KGwpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xO3M+PWk7LS1zKWlmKHUobi5jaGFyQ29kZUF0KHMpKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPXMrMSk7cmV0dXJuLTE9PT1hPyIiOm4uc2xpY2UoaSxhKX0sZXh0bmFtZSh0KXtVZSh0LCJwYXRoIik7bGV0IG49MCxyPS0xLGk9MCxhPS0xLG89ITAscz0wOzI8PXQubGVuZ3RoJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmSGUodC5jaGFyQ29kZUF0KDApKSYmKG49aT0yKTtmb3IobGV0IGU9dC5sZW5ndGgtMTtlPj1uOy0tZSl7dmFyIGw9dC5jaGFyQ29kZUF0KGUpO2lmKHUobCkpe2lmKG8pY29udGludWU7aT1lKzE7YnJlYWt9LTE9PT1hJiYobz0hMSxhPWUrMSksNDY9PT1sPy0xPT09cj9yPWU6MSE9PXMmJihzPTEpOi0xIT09ciYmKHM9LTEpfXJldHVybi0xPT09cnx8LTE9PT1hfHwwPT09c3x8MT09PXMmJnI9PT1hLTEmJnI9PT1pKzE/IiI6dC5zbGljZShyLGEpfSxmb3JtYXQ6V2UuYmluZChudWxsLCJcXCIpLHBhcnNlKG4pe1VlKG4sInBhdGgiKTtjb25zdCBlPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5sZW5ndGg7bGV0IGk9MCx0PW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdSh0KT9lLnJvb3Q9ZS5kaXI9bjplLmJhc2U9ZS5uYW1lPW4sZTtpZih1KHQpKXtpZihpPTEsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPHImJmUhPT10KXtmb3IodD1lO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2U9PT1yP2k9ZTplIT09dCYmKGk9ZSsxKX19fX1lbHNlIGlmKEhlKHQpJiY1OD09PW4uY2hhckNvZGVBdCgxKSl7aWYocjw9MilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpZihpPTIsdShuLmNoYXJDb2RlQXQoMikpKXtpZigzPT09cilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpPTN9fTA8aSYmKGUucm9vdD1uLnNsaWNlKDAsaSkpO2xldCBhPS0xLG89aSxzPS0xLGM9ITAsbD1uLmxlbmd0aC0xLGg9MDtmb3IoO2w+PWk7LS1sKXtpZih1KHQ9bi5jaGFyQ29kZUF0KGwpKSl7aWYoYyljb250aW51ZTtvPWwrMTticmVha30tMT09PXMmJihjPSExLHM9bCsxKSw0Nj09PXQ/LTE9PT1hP2E9bDoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSl9cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/ZS5iYXNlPWUubmFtZT1uLnNsaWNlKG8scyk6KGUubmFtZT1uLnNsaWNlKG8sYSksZS5iYXNlPW4uc2xpY2UobyxzKSxlLmV4dD1uLnNsaWNlKGEscykpKSwwPG8mJm8hPT1pP2UuZGlyPW4uc2xpY2UoMCxvLTEpOmUuZGlyPWUucm9vdCxlfSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sT2U9e3Jlc29sdmUoLi4udCl7bGV0IG49IiIscj0hMTtmb3IobGV0IGU9dC5sZW5ndGgtMTstMTw9ZSYmIXI7ZS0tKXtjb25zdCBpPTA8PWU/dFtlXTpFZSgpO1VlKGksInBhdGgiKSwwIT09aS5sZW5ndGgmJihuPWkrIi8iK24scj00Nz09PWkuY2hhckNvZGVBdCgwKSl9cmV0dXJuIG49RGUobiwhciwiLyIsemUpLHI/Ii8iK246MDxuLmxlbmd0aD9uOiIuIn0sbm9ybWFsaXplKGUpe2lmKFVlKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO3ZhciB0PTQ3PT09ZS5jaGFyQ29kZUF0KDApLG49NDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7cmV0dXJuIDA9PT0oZT1EZShlLCF0LCIvIix6ZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0PyIvIitlOmUpfSxpc0Fic29sdXRlKGUpe3JldHVybiBVZShlLCJwYXRoIiksMDxlLmxlbmd0aCYmNDc9PT1lLmNoYXJDb2RlQXQoMCl9LGpvaW4oLi4udCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiIuIjtsZXQgbjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIHI9dFtlXTtVZShyLCJwYXRoIiksMDxyLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yOm4rPSIvIityKX1yZXR1cm4gdm9pZCAwPT09bj8iLiI6T2Uubm9ybWFsaXplKG4pfSxyZWxhdGl2ZShlLHQpe2lmKFVlKGUsImZyb20iKSxVZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPU9lLnJlc29sdmUoZSkpPT09KHQ9T2UucmVzb2x2ZSh0KSkpcmV0dXJuIiI7dmFyIG49ZS5sZW5ndGgscj1uLTEsaT10Lmxlbmd0aC0xLGE9cjxpP3I6aTtsZXQgbz0tMSxzPTA7Zm9yKDtzPGE7cysrKXt2YXIgbD1lLmNoYXJDb2RlQXQoMStzKTtpZihsIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7NDc9PT1sJiYobz1zKX1pZihzPT09YSlpZihhPGkpe2lmKDQ3PT09dC5jaGFyQ29kZUF0KDErcykpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSBhPHImJig0Nz09PWUuY2hhckNvZGVBdCgxK3MpP289czowPT09cyYmKG89MCkpO2xldCBoPSIiO2ZvcihzPTErbysxO3M8PW47KytzKXMhPT1uJiY0NyE9PWUuY2hhckNvZGVBdChzKXx8KGgrPTA9PT1oLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm4iIitoK3Quc2xpY2UoMStvKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtyZXR1cm4gZX0sZGlybmFtZSh0KXtpZihVZSh0LCJwYXRoIiksMD09PXQubGVuZ3RoKXJldHVybiIuIjt2YXIgZT00Nz09PXQuY2hhckNvZGVBdCgwKTtsZXQgbj0tMSxyPSEwO2ZvcihsZXQgZT10Lmxlbmd0aC0xOzE8PWU7LS1lKWlmKDQ3PT09dC5jaGFyQ29kZUF0KGUpKXtpZighcil7bj1lO2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP2U/Ii8iOiIuIjplJiYxPT09bj8iLy8iOnQuc2xpY2UoMCxuKX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZVZShyLCJleHQiKSxVZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZih2b2lkIDAhPT1yJiYwPHIubGVuZ3RoJiZyLmxlbmd0aDw9bi5sZW5ndGgpe2lmKHI9PT1uKXJldHVybiIiO2xldCBlPXIubGVuZ3RoLTEsdD0tMTtmb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKXt2YXIgbD1uLmNoYXJDb2RlQXQocyk7aWYoNDc9PT1sKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKWlmKDQ3PT09bi5jaGFyQ29kZUF0KHMpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cysxKTtyZXR1cm4tMT09PWE/IiI6bi5zbGljZShpLGEpfSxleHRuYW1lKHQpe1VlKHQsInBhdGgiKTtsZXQgbj0tMSxyPTAsaT0tMSxhPSEwLG89MDtmb3IobGV0IGU9dC5sZW5ndGgtMTswPD1lOy0tZSl7dmFyIHM9dC5jaGFyQ29kZUF0KGUpO2lmKDQ3PT09cyl7aWYoYSljb250aW51ZTtyPWUrMTticmVha30tMT09PWkmJihhPSExLGk9ZSsxKSw0Nj09PXM/LTE9PT1uP249ZToxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSl9cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjp0LnNsaWNlKG4saSl9LGZvcm1hdDpXZS5iaW5kKG51bGwsIi8iKSxwYXJzZShlKXtVZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTQ3PT09ZS5jaGFyQ29kZUF0KDApO2xldCByLGk9KHI9bj8odC5yb290PSIvIiwxKTowLC0xKSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtsPj1yOy0tbCl7dmFyIGM9ZS5jaGFyQ29kZUF0KGwpO2lmKDQ3PT09Yyl7aWYocyljb250aW51ZTthPWwrMTticmVha30tMT09PW8mJihzPSExLG89bCsxKSw0Nj09PWM/LTE9PT1pP2k9bDoxIT09aCYmKGg9MSk6LTEhPT1pJiYoaD0tMSl9aWYoLTEhPT1vKXtjb25zdCByPTA9PT1hJiZuPzE6YTstMT09PWl8fDA9PT1ofHwxPT09aCYmaT09PW8tMSYmaT09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UocixvKToodC5uYW1lPWUuc2xpY2UocixpKSx0LmJhc2U9ZS5zbGljZShyLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSl9cmV0dXJuIDA8YT90LmRpcj1lLnNsaWNlKDAsYS0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxxZT0oT2Uud2luMzI9UGUud2luMzI9UGUsT2UucG9zaXg9UGUucG9zaXg9T2UsKCJ3aW4zMiI9PT10P1BlOk9lKS5ub3JtYWxpemUpLEZlPSgoIndpbjMyIj09PXQ/UGU6T2UpLnJlc29sdmUsKCJ3aW4zMiI9PT10P1BlOk9lKS5yZWxhdGl2ZSwoIndpbjMyIj09PXQ/UGU6T2UpLmRpcm5hbWUsKCJ3aW4zMiI9PT10P1BlOk9lKS5iYXNlbmFtZSksVmU9KCJ3aW4zMiI9PT10P1BlOk9lKS5leHRuYW1lLEJlPSgid2luMzIiPT09dD9QZTpPZSkuc2VwLEtlPS9eXHdbXHdcZCsuLV0qJC8samU9L15cLy8sR2U9L15cL1wvLztmdW5jdGlvbiAkZShlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIUtlLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFqZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihHZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9Y29uc3QgSmU9Ii8iLFhlPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2NsYXNzIFlle2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhPSExKXt2YXIgbzsib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHwiIix0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8IiIsdGhpcy5wYXRoPWUucGF0aHx8IiIsdGhpcy5xdWVyeT1lLnF1ZXJ5fHwiIix0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fCIiKToodGhpcy5zY2hlbWU9KG89YSwoZT1lKXx8bz9lOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8IiIsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1KZSYmKHQ9SmUrdCk6dD1KZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8IiIpLHRoaXMucXVlcnk9cnx8IiIsdGhpcy5mcmFnbWVudD1pfHwiIiwkZSh0aGlzLGEpKX1zdGF0aWMgaXNVcmkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBZZXx8ISFlJiYoInN0cmluZyI9PXR5cGVvZiBlLmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiBlLmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIGUucGF0aCYmInN0cmluZyI9PXR5cGVvZiBlLnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIGUuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIGUuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZyl9Z2V0IGZzUGF0aCgpe3JldHVybiBydCh0aGlzLCExKX13aXRoKGUpe2lmKCFlKXJldHVybiB0aGlzO2xldHtzY2hlbWU6dCxhdXRob3JpdHk6bixwYXRoOnIscXVlcnk6aSxmcmFnbWVudDphfT1lO3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PSIiKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPSIiKSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj0iIiksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPSIiKSx2b2lkIDA9PT1hP2E9dGhpcy5mcmFnbWVudDpudWxsPT09YSYmKGE9IiIpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgWmUodCxuLHIsaSxhKX1zdGF0aWMgcGFyc2UoZSx0PSExKXtlPVhlLmV4ZWMoZSk7cmV0dXJuIGU/bmV3IFplKGVbMl18fCIiLG90KGVbNF18fCIiKSxvdChlWzVdfHwiIiksb3QoZVs3XXx8IiIpLG90KGVbOV18fCIiKSx0KTpuZXcgWmUoIiIsIiIsIiIsIiIsIiIpfXN0YXRpYyBmaWxlKGUpe2xldCB0PSIiO3ZhciBuO3JldHVybihlPXo/ZS5yZXBsYWNlKC9cXC9nLEplKTplKVswXT09PUplJiZlWzFdPT09SmUmJihlPS0xPT09KG49ZS5pbmRleE9mKEplLDIpKT8odD1lLnN1YnN0cmluZygyKSxKZSk6KHQ9ZS5zdWJzdHJpbmcoMixuKSxlLnN1YnN0cmluZyhuKXx8SmUpKSxuZXcgWmUoImZpbGUiLHQsZSwiIiwiIil9c3RhdGljIGZyb20oZSl7ZT1uZXcgWmUoZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCk7cmV0dXJuICRlKGUsITApLGV9c3RhdGljIGpvaW5QYXRoKGUsLi4udCl7aWYoIWUucGF0aCl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IGNhbm5vdCBjYWxsIGpvaW5QYXRoIG9uIFVSSSB3aXRob3V0IHBhdGgiKTtsZXQgbjtyZXR1cm4gbj16JiYiZmlsZSI9PT1lLnNjaGVtZT9ZZS5maWxlKFBlLmpvaW4ocnQoZSwhMCksLi4udCkpLnBhdGg6T2Uuam9pbihlLnBhdGgsLi4udCksZS53aXRoKHtwYXRoOm59KX10b1N0cmluZyhlPSExKXtyZXR1cm4gaXQodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKGUpe2lmKGUpe2lmKGUgaW5zdGFuY2VvZiBZZSlyZXR1cm4gZTt7Y29uc3QgdD1uZXcgWmUoZSk7cmV0dXJuIHQuX2Zvcm1hdHRlZD1lLmV4dGVybmFsLHQuX2ZzUGF0aD1lLl9zZXA9PT1RZT9lLmZzUGF0aDpudWxsLHR9fXJldHVybiBlfX1jb25zdCBRZT16PzE6dm9pZCAwO2NsYXNzIFplIGV4dGVuZHMgWWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Zvcm1hdHRlZD1udWxsLHRoaXMuX2ZzUGF0aD1udWxsfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXJ0KHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGU/aXQodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1pdCh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPVFlKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX19Y29uc3QgZXQ9e1s1OF06IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIHR0KHQsbil7bGV0IHI9dm9pZCAwLGk9LTE7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBhPXQuY2hhckNvZGVBdChlKTs5Nzw9YSYmYTw9MTIyfHw2NTw9YSYmYTw9OTB8fDQ4PD1hJiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8biYmNDc9PT1hPygtMSE9PWkmJihyKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSxlKSksaT0tMSksdm9pZCAwIT09ciYmKHIrPXQuY2hhckF0KGUpKSk6KHZvaWQgMD09PXImJihyPXQuc3Vic3RyKDAsZSkpLHZvaWQgMCE9PShhPWV0W2FdKT8oLTEhPT1pJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLHIrPWEpOi0xPT09aSYmKGk9ZSkpfXJldHVybi0xIT09aSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpKSkpLHZvaWQgMCE9PXI/cjp0fWZ1bmN0aW9uIG50KHQpe2xldCBuPXZvaWQgMDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dC5jaGFyQ29kZUF0KGUpOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT1uJiYobj10LnN1YnN0cigwLGUpKSxuKz1ldFtyXSk6dm9pZCAwIT09biYmKG4rPXRbZV0pfXJldHVybiB2b2lkIDAhPT1uP246dH1mdW5jdGlvbiBydChlLHQpe2xldCBuO3JldHVybiBuPWUuYXV0aG9yaXR5JiYxPGUucGF0aC5sZW5ndGgmJiJmaWxlIj09PWUuc2NoZW1lPyIvLyIrZS5hdXRob3JpdHkrZS5wYXRoOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJig2NTw9ZS5wYXRoLmNoYXJDb2RlQXQoMSkmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8OTc8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsbj16P24ucmVwbGFjZSgvXC8vZywiXFwiKTpufWZ1bmN0aW9uIGl0KGUsdCl7Y29uc3Qgbj10P250OnR0O2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6YSxwYXRoOm8scXVlcnk6cyxmcmFnbWVudDpsfT1lO2lmKGkmJihyPXIraSsiOiIpLCFhJiYiZmlsZSIhPT1pfHwocj0ocis9SmUpK0plKSxhKXtsZXQgZT1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWUpe2NvbnN0IGg9YS5zdWJzdHIoMCxlKTthPWEuc3Vic3RyKGUrMSksLTE9PT0oZT1oLmluZGV4T2YoIjoiKSk/cis9bihoLCExKTpyPShyPXIrbihoLnN1YnN0cigwLGUpLCExKSsiOiIpK24oaC5zdWJzdHIoZSsxKSwhMSkscis9IkAifWE9YS50b0xvd2VyQ2FzZSgpLC0xPT09KGU9YS5pbmRleE9mKCI6IikpP3IrPW4oYSwhMSk6cj0ocis9bihhLnN1YnN0cigwLGUpLCExKSkrYS5zdWJzdHIoZSl9cmV0dXJuIG8mJigzPD1vLmxlbmd0aCYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpPzY1PD0oZT1vLmNoYXJDb2RlQXQoMSkpJiZlPD05MCYmKG89YC8ke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OmArby5zdWJzdHIoMykpOjI8PW8ubGVuZ3RoJiY1OD09PW8uY2hhckNvZGVBdCgxKSYmKDY1PD0oZT1vLmNoYXJDb2RlQXQoMCkpJiZlPD05MCYmKG89U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKSsiOiIrby5zdWJzdHIoMikpKSxyKz1uKG8sITApKSxzJiYocj0ocis9Ij8iKStuKHMsITEpKSxyPWw/KHIrPSIjIikrKHQ/bDp0dChsLCExKSk6cn1jb25zdCBhdD0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBvdChlKXtyZXR1cm4gZS5tYXRjaChhdCk/ZS5yZXBsYWNlKGF0LGU9PmZ1bmN0aW9uIHQobil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQobil9Y2F0Y2goZSl7cmV0dXJuIDM8bi5sZW5ndGg/bi5zdWJzdHIoMCwzKSt0KG4uc3Vic3RyKDMpKTpufX0oZSkpOmV9Y2xhc3Mgc3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgoZT10aGlzLmxpbmVOdW1iZXIsdD10aGlzLmNvbHVtbil7cmV0dXJuIGU9PT10aGlzLmxpbmVOdW1iZXImJnQ9PT10aGlzLmNvbHVtbj90aGlzOm5ldyBzdChlLHQpfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKGUpe3JldHVybiBzdC5lcXVhbHModGhpcyxlKX1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5saW5lTnVtYmVyPT09dC5saW5lTnVtYmVyJiZlLmNvbHVtbj09PXQuY29sdW1ufWlzQmVmb3JlKGUpe3JldHVybiBzdC5pc0JlZm9yZSh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwoZSl7cmV0dXJuIHN0LmlzQmVmb3JlT3JFcXVhbCh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7dmFyIG49MHxlLmxpbmVOdW1iZXIscj0wfHQubGluZU51bWJlcjtyZXR1cm4gbiE9cj9uLXI6KDB8ZS5jb2x1bW4pLSgwfHQuY29sdW1uKX1jbG9uZSgpe3JldHVybiBuZXcgc3QodGhpcy5saW5lTnVtYmVyLHRoaXMuY29sdW1uKX10b1N0cmluZygpe3JldHVybiIoIit0aGlzLmxpbmVOdW1iZXIrIiwiK3RoaXMuY29sdW1uKyIpIn1zdGF0aWMgbGlmdChlKXtyZXR1cm4gbmV3IHN0KGUubGluZU51bWJlcixlLmNvbHVtbil9c3RhdGljIGlzSVBvc2l0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUubGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmNvbHVtbn19Y2xhc3MgbHR7Y29uc3RydWN0b3IoZSx0LG4scil7bjxlfHxlPT09biYmcjx0Pyh0aGlzLnN0YXJ0TGluZU51bWJlcj1uLHRoaXMuc3RhcnRDb2x1bW49cix0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj10KToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPXQsdGhpcy5lbmRMaW5lTnVtYmVyPW4sdGhpcy5lbmRDb2x1bW49cil9aXNFbXB0eSgpe3JldHVybiBsdC5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24oZSl7cmV0dXJuIGx0LmNvbnRhaW5zUG9zaXRpb24odGhpcyxlKX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+ZS5lbmRDb2x1bW4pKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPj1lLmVuZENvbHVtbikpfWNvbnRhaW5zUmFuZ2UoZSl7cmV0dXJuIGx0LmNvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgY29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj5lLmVuZENvbHVtbikpKX1zdHJpY3RDb250YWluc1JhbmdlKGUpe3JldHVybiBsdC5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UoZSl7cmV0dXJuIGx0LnBsdXNSYW5nZSh0aGlzLGUpfXN0YXRpYyBwbHVzUmFuZ2UoZSx0KXtsZXQgbixyLGksYTtyZXR1cm4gcj10LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKTp0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLE1hdGgubWluKHQuc3RhcnRDb2x1bW4sZS5zdGFydENvbHVtbikpOihuPWUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pLGE9dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcj8oaT10LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pOnQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlcj8oaT10LmVuZExpbmVOdW1iZXIsTWF0aC5tYXgodC5lbmRDb2x1bW4sZS5lbmRDb2x1bW4pKTooaT1lLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pLG5ldyBsdChuLHIsaSxhKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIGx0LmludGVyc2VjdFJhbmdlcyh0aGlzLGUpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXMoZSx0KXtsZXQgbj1lLnN0YXJ0TGluZU51bWJlcixyPWUuc3RhcnRDb2x1bW4saT1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbjt2YXIgZT10LnN0YXJ0TGluZU51bWJlcixvPXQuc3RhcnRDb2x1bW4scz10LmVuZExpbmVOdW1iZXIsdD10LmVuZENvbHVtbjtyZXR1cm4gbjxlPyhuPWUscj1vKTpuPT09ZSYmKHI9TWF0aC5tYXgocixvKSksaT5zPyhpPXMsYT10KTppPT09cyYmKGE9TWF0aC5taW4oYSx0KSksbj5pfHxuPT09aSYmcj5hP251bGw6bmV3IGx0KG4scixpLGEpfWVxdWFsc1JhbmdlKGUpe3JldHVybiBsdC5lcXVhbHNSYW5nZSh0aGlzLGUpfXN0YXRpYyBlcXVhbHNSYW5nZShlLHQpe3JldHVybiEhZSYmISF0JiZlLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09dC5zdGFydENvbHVtbiYmZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbj09PXQuZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIGx0LmdldEVuZFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRFbmRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IHN0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBsdC5nZXRTdGFydFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRTdGFydFBvc2l0aW9uKGUpe3JldHVybiBuZXcgc3QoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMuZW5kTGluZU51bWJlcisiLCIrdGhpcy5lbmRDb2x1bW4rIl0ifXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIG5ldyBsdCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCl9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgbHQoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbil9Y29sbGFwc2VUb1N0YXJ0KCl7cmV0dXJuIGx0LmNvbGxhcHNlVG9TdGFydCh0aGlzKX1zdGF0aWMgY29sbGFwc2VUb1N0YXJ0KGUpe3JldHVybiBuZXcgbHQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBsdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgbGlmdChlKXtyZXR1cm4gZT9uZXcgbHQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm51bGx9c3RhdGljIGlzSVJhbmdlKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5lbmRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kQ29sdW1ufXN0YXRpYyBhcmVJbnRlcnNlY3RpbmdPclRvdWNoaW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjx0LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjxlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48PWUuc3RhcnRDb2x1bW4pfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZSx0KXt2YXIgbixyLGksYSxvLHM7cmV0dXJuIGUmJnQ/KG49MHxlLnN0YXJ0TGluZU51bWJlcik9PShyPTB8dC5zdGFydExpbmVOdW1iZXIpPyhpPTB8ZS5zdGFydENvbHVtbik9PShhPTB8dC5zdGFydENvbHVtbik/KG89MHxlLmVuZExpbmVOdW1iZXIpIT0ocz0wfHQuZW5kTGluZU51bWJlcik/by1zOigwfGUuZW5kQ29sdW1uKS0oMHx0LmVuZENvbHVtbik6aS1hOm4tcjooZT8xOjApLSh0PzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHMoZSx0KXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyP2UuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW4/ZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj9lLnN0YXJ0Q29sdW1uLXQuc3RhcnRDb2x1bW46ZS5zdGFydExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXI6ZS5lbmRDb2x1bW4tdC5lbmRDb2x1bW46ZS5lbmRMaW5lTnVtYmVyLXQuZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKGUpe3JldHVybiBlLmVuZExpbmVOdW1iZXI+ZS5zdGFydExpbmVOdW1iZXJ9fWZ1bmN0aW9uIGh0KGUsdCxuLHIpe2NvbnN0IGk9bmV3IExlKGUsdCxuKTtyZXR1cm4gaS5Db21wdXRlRGlmZihyKX1jbGFzcyBjdHtjb25zdHJ1Y3RvcihuKXtjb25zdCByPVtdLGk9W107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXJbZV09ZnQobltlXSwxKSxpW2VdPWd0KG5bZV0sMSk7dGhpcy5saW5lcz1uLHRoaXMuX3N0YXJ0Q29sdW1ucz1yLHRoaXMuX2VuZENvbHVtbnM9aX1nZXRFbGVtZW50cygpe2NvbnN0IG49W107Zm9yKGxldCBlPTAsdD10aGlzLmxpbmVzLmxlbmd0aDtlPHQ7ZSsrKW5bZV09dGhpcy5saW5lc1tlXS5zdWJzdHJpbmcodGhpcy5fc3RhcnRDb2x1bW5zW2VdLTEsdGhpcy5fZW5kQ29sdW1uc1tlXS0xKTtyZXR1cm4gbn1nZXRTdHJpY3RFbGVtZW50KGUpe3JldHVybiB0aGlzLmxpbmVzW2VdfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1jcmVhdGVDaGFyU2VxdWVuY2UoZSxuLHIpe2NvbnN0IGk9W10sYT1bXSxvPVtdO2xldCBzPTA7Zm9yKGxldCB0PW47dDw9cjt0Kyspe2NvbnN0IGM9dGhpcy5saW5lc1t0XTt2YXIgbD1lP3RoaXMuX3N0YXJ0Q29sdW1uc1t0XToxLGg9ZT90aGlzLl9lbmRDb2x1bW5zW3RdOmMubGVuZ3RoKzE7Zm9yKGxldCBlPWw7ZTxoO2UrKylpW3NdPWMuY2hhckNvZGVBdChlLTEpLGFbc109dCsxLG9bc109ZSxzKyt9cmV0dXJuIG5ldyBkdChpLGEsbyl9fWNsYXNzIGR0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl9jaGFyQ29kZXM9ZSx0aGlzLl9saW5lTnVtYmVycz10LHRoaXMuX2NvbHVtbnM9bn1nZXRFbGVtZW50cygpe3JldHVybiB0aGlzLl9jaGFyQ29kZXN9Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiB0aGlzLl9saW5lTnVtYmVyc1tlXX1nZXRTdGFydENvbHVtbihlKXtyZXR1cm4gdGhpcy5fY29sdW1uc1tlXX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiB0aGlzLl9saW5lTnVtYmVyc1tlXX1nZXRFbmRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV0rMX19Y2xhc3MgdXR7Y29uc3RydWN0b3IoZSx0LG4scixpLGEsbyxzKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbFN0YXJ0Q29sdW1uPXQsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9bix0aGlzLm9yaWdpbmFsRW5kQ29sdW1uPXIsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1pLHRoaXMubW9kaWZpZWRTdGFydENvbHVtbj1hLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPW8sdGhpcy5tb2RpZmllZEVuZENvbHVtbj1zfXN0YXRpYyBjcmVhdGVGcm9tRGlmZkNoYW5nZShlLHQsbil7bGV0IHIsaSxhLG8scyxsLGgsYztyZXR1cm4gbz0wPT09ZS5vcmlnaW5hbExlbmd0aD8ocj0wLGk9MCxhPTApOihyPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksdC5nZXRFbmRDb2x1bW4oZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSkpLGM9MD09PWUubW9kaWZpZWRMZW5ndGg/KHM9MCxsPTAsaD0wKToocz1uLmdldFN0YXJ0TGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQpLGw9bi5nZXRTdGFydENvbHVtbihlLm1vZGlmaWVkU3RhcnQpLGg9bi5nZXRFbmRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoLTEpLG4uZ2V0RW5kQ29sdW1uKGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoLTEpKSxuZXcgdXQocixpLGEsbyxzLGwsaCxjKX19Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSx0LG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cix0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KGUsdCxyLGksYSxjLGQpe2xldCBuLG8scyxsLGg9dm9pZCAwO2lmKG89MD09PXQub3JpZ2luYWxMZW5ndGg/KG49ci5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KS0xLDApOihuPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksci5nZXRFbmRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpKSxsPTA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhzPWkuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSwwKToocz1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLGkuZ2V0RW5kTGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKSksYyYmMDx0Lm9yaWdpbmFsTGVuZ3RoJiZ0Lm9yaWdpbmFsTGVuZ3RoPDIwJiYwPHQubW9kaWZpZWRMZW5ndGgmJnQubW9kaWZpZWRMZW5ndGg8MjAmJmEoKSl7dmFyIHU9ci5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkscD1pLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtsZXQgbj1odCh1LHAsYSwhMCkuY2hhbmdlcztkJiYobj1mdW5jdGlvbihuKXtpZihuLmxlbmd0aDw9MSlyZXR1cm4gbjtjb25zdCByPVtuWzBdXTtsZXQgaT1yWzBdO2ZvcihsZXQgZT0xLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7dmFyIGE9bltlXSxvPWEub3JpZ2luYWxTdGFydC0oaS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgpLHM9YS5tb2RpZmllZFN0YXJ0LShpLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4obyxzKTwzPyhpLm9yaWdpbmFsTGVuZ3RoPWEub3JpZ2luYWxTdGFydCthLm9yaWdpbmFsTGVuZ3RoLWkub3JpZ2luYWxTdGFydCxpLm1vZGlmaWVkTGVuZ3RoPWEubW9kaWZpZWRTdGFydCthLm1vZGlmaWVkTGVuZ3RoLWkubW9kaWZpZWRTdGFydCk6KHIucHVzaChhKSxpPWEpfXJldHVybiByfShuKSksaD1bXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspaC5wdXNoKHV0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKG5bZV0sdSxwKSl9cmV0dXJuIG5ldyBwdChuLG8scyxsLGgpfX1jbGFzcyBtdHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXM9bi5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzPW4uc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlPW4uc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdGhpcy5zaG91bGRNYWtlUHJldHR5RGlmZj1uLnNob3VsZE1ha2VQcmV0dHlEaWZmLHRoaXMub3JpZ2luYWxMaW5lcz1lLHRoaXMubW9kaWZpZWRMaW5lcz10LHRoaXMub3JpZ2luYWw9bmV3IGN0KGUpLHRoaXMubW9kaWZpZWQ9bmV3IGN0KHQpLHRoaXMuY29udGludWVMaW5lRGlmZj1idChuLm1heENvbXB1dGF0aW9uVGltZSksdGhpcy5jb250aW51ZUNoYXJEaWZmPWJ0KDA9PT1uLm1heENvbXB1dGF0aW9uVGltZT8wOk1hdGgubWluKG4ubWF4Q29tcHV0YXRpb25UaW1lLDVlMykpfWNvbXB1dGVEaWZmKCl7aWYoMT09PXRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoJiYwPT09dGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGgpcmV0dXJuIDE9PT10aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoP3txdWl0RWFybHk6ITEsY2hhbmdlczpbXX06e3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6MSxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjp0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCxjaGFyQ2hhbmdlczpbe21vZGlmaWVkRW5kQ29sdW1uOjAsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjAsbW9kaWZpZWRTdGFydENvbHVtbjowLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjAsb3JpZ2luYWxFbmRDb2x1bW46MCxvcmlnaW5hbEVuZExpbmVOdW1iZXI6MCxvcmlnaW5hbFN0YXJ0Q29sdW1uOjAsb3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MH1dfV19O2lmKDE9PT10aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTt2YXIgZT1odCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLG49ZS5jaGFuZ2VzLGU9ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgcD1bXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspcC5wdXNoKHB0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsbltlXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOnB9fWNvbnN0IHI9W107bGV0IGk9MCxhPTA7Zm9yKGxldCBlPS0xLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Zm9yKHZhciBvPWUrMTx0P25bZSsxXTpudWxsLGQ9bz9vLm9yaWdpbmFsU3RhcnQ6dGhpcy5vcmlnaW5hbExpbmVzLmxlbmd0aCx1PW8/by5tb2RpZmllZFN0YXJ0OnRoaXMubW9kaWZpZWRMaW5lcy5sZW5ndGg7aTxkJiZhPHU7KXtjb25zdCBoPXRoaXMub3JpZ2luYWxMaW5lc1tpXSxjPXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihoIT09Yyl7e2xldCBlPWZ0KGgsMSksdD1mdChjLDEpO2Zvcig7MTxlJiYxPHQ7KXtpZihoLmNoYXJDb2RlQXQoZS0yKSE9PWMuY2hhckNvZGVBdCh0LTIpKWJyZWFrO2UtLSx0LS19KDE8ZXx8MTx0KSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLGUsYSsxLDEsdCl9e2xldCBlPWd0KGgsMSksdD1ndChjLDEpO2Zvcih2YXIgcz1oLmxlbmd0aCsxLGw9Yy5sZW5ndGgrMTtlPHMmJnQ8bDspe2lmKGguY2hhckNvZGVBdChlLTEpIT09aC5jaGFyQ29kZUF0KHQtMSkpYnJlYWs7ZSsrLHQrK30oZTxzfHx0PGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLGUscyxhKzEsdCxsKX19aSsrLGErK31vJiYoci5wdXNoKHB0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgsYSs9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTplLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UodCxuLHIsaSxhLG8scyl7aWYoIXRoaXMuX21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGksYSxvLHMpKXtsZXQgZT12b2lkIDA7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJihlPVtuZXcgdXQobixyLG4saSxhLG8sYSxzKV0pLHQucHVzaChuZXcgcHQobixuLGEsYSxlKSl9fV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksYSxvKXt2YXIgcz1lLmxlbmd0aDtpZigwPT09cylyZXR1cm4hMTtjb25zdCBsPWVbcy0xXTtyZXR1cm4gMCE9PWwub3JpZ2luYWxFbmRMaW5lTnVtYmVyJiYwIT09bC5tb2RpZmllZEVuZExpbmVOdW1iZXImJihsLm9yaWdpbmFsRW5kTGluZU51bWJlcisxPT09dCYmbC5tb2RpZmllZEVuZExpbmVOdW1iZXIrMT09PWkmJihsLm9yaWdpbmFsRW5kTGluZU51bWJlcj10LGwubW9kaWZpZWRFbmRMaW5lTnVtYmVyPWksdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMucHVzaChuZXcgdXQodCxuLHQscixpLGEsaSxvKSksITApKX19ZnVuY3Rpb24gZnQoZSx0KXtlPWZ1bmN0aW9uKG4pe2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7dmFyIHI9bi5jaGFyQ29kZUF0KGUpO2lmKDMyIT09ciYmOSE9PXIpcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMX1mdW5jdGlvbiBndChlLHQpe2U9ZnVuY3Rpb24odCxuPXQubGVuZ3RoLTEpe2ZvcihsZXQgZT1uOzA8PWU7ZS0tKXt2YXIgcj10LmNoYXJDb2RlQXQoZSk7aWYoMzIhPT1yJiY5IT09cilyZXR1cm4gZX1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1lP3Q6ZSsyfWZ1bmN0aW9uIGJ0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWZ1bmN0aW9uIF90KGUpe3JldHVybiBlPDA/MDoyNTU8ZT8yNTU6MHxlfWZ1bmN0aW9uIHd0KGUpe3JldHVybiBlPDA/MDo0Mjk0OTY3Mjk1PGU/NDI5NDk2NzI5NTowfGV9Y2xhc3MgdnR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT13dChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW07dmFyIGk9dC5sZW5ndGg7cmV0dXJuIDAhPT1pJiYodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoK2kpLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KDAsZSksMCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoZSksZStpKSx0aGlzLnZhbHVlcy5zZXQodCxlKSxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksMDw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiZ0aGlzLnByZWZpeFN1bS5zZXQoci5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfXNldFZhbHVlKGUsdCl7cmV0dXJuIGU9d3QoZSksdD13dCh0KSx0aGlzLnZhbHVlc1tlXSE9PXQmJih0aGlzLnZhbHVlc1tlXT10LGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSwhMCl9cmVtb3ZlVmFsdWVzKGUsdCl7ZT13dChlKSx0PXd0KHQpO2NvbnN0IG49dGhpcy52YWx1ZXMscj10aGlzLnByZWZpeFN1bTtpZihlPj1uLmxlbmd0aClyZXR1cm4hMTt2YXIgaT1uLmxlbmd0aC1lO3JldHVybiAwIT09KHQ9aTw9dD9pOnQpJiYodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoLXQpLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KDAsZSksMCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoZSt0KSxlKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksMDw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiZ0aGlzLnByZWZpeFN1bS5zZXQoci5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfWdldFRvdGFsU3VtKCl7cmV0dXJuIDA9PT10aGlzLnZhbHVlcy5sZW5ndGg/MDp0aGlzLl9nZXRQcmVmaXhTdW0odGhpcy52YWx1ZXMubGVuZ3RoLTEpfWdldFByZWZpeFN1bShlKXtyZXR1cm4gZTwwPzA6KGU9d3QoZSksdGhpcy5fZ2V0UHJlZml4U3VtKGUpKX1fZ2V0UHJlZml4U3VtKHQpe2lmKHQ8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSlyZXR1cm4gdGhpcy5wcmVmaXhTdW1bdF07bGV0IG49dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzE7MD09PW4mJih0aGlzLnByZWZpeFN1bVswXT10aGlzLnZhbHVlc1swXSxuKyspLHQ+PXRoaXMudmFsdWVzLmxlbmd0aCYmKHQ9dGhpcy52YWx1ZXMubGVuZ3RoLTEpO2ZvcihsZXQgZT1uO2U8PXQ7ZSsrKXRoaXMucHJlZml4U3VtW2VdPXRoaXMucHJlZml4U3VtW2UtMV0rdGhpcy52YWx1ZXNbZV07cmV0dXJuIHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1NYXRoLm1heCh0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0sdCksdGhpcy5wcmVmaXhTdW1bdF19Z2V0SW5kZXhPZihlKXtlPU1hdGguZmxvb3IoZSksdGhpcy5nZXRUb3RhbFN1bSgpO2xldCB0PTAsbj10aGlzLnZhbHVlcy5sZW5ndGgtMSxyPTA7dmFyIGk7bGV0IGE9MDtmb3IoO3Q8PW47KWlmKHI9dCsobi10KS8yfDAsaT10aGlzLnByZWZpeFN1bVtyXSxlPChhPWktdGhpcy52YWx1ZXNbcl0pKW49ci0xO2Vsc2V7aWYoIShpPD1lKSlicmVhazt0PXIrMX1yZXR1cm4gbmV3IHl0KHIsZS1hKX19Y2xhc3MgeXR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dCx0aGlzLl9wcmVmaXhTdW1JbmRleE9mUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10fX1jb25zdCBUdD1mdW5jdGlvbihlPSIiKXtsZXQgdD0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YiYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IikwPD1lLmluZGV4T2Yobil8fCh0Kz0iXFwiK24pO3JldHVybiB0Kz0iXFxzXSspIixuZXcgUmVnRXhwKHQsImciKX0oKTtjb25zdCBrdD17bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfTtmdW5jdGlvbiBTdCh0LG4scixpLGE9a3Qpe2lmKHIubGVuZ3RoPmEubWF4TGVuKXtsZXQgZT10LWEubWF4TGVuLzI7cmV0dXJuIGU8MD9lPTA6aSs9ZSxTdCh0LG4scj1yLnN1YnN0cmluZyhlLHQrYS5tYXhMZW4vMiksaSxhKX12YXIgZD1EYXRlLm5vdygpLG89dC0xLWk7bGV0IHM9LTEsbD1udWxsO2ZvcihsZXQgZT0xOyEoRGF0ZS5ub3coKS1kPj1hLnRpbWVCdWRnZXQpO2UrKyl7dmFyIGg9by1hLndpbmRvd1NpemUqZSxjPShuLmxhc3RJbmRleD1NYXRoLm1heCgwLGgpLGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpO2Zvcig7aT1lLmV4ZWModCk7KXt2YXIgYT1pLmluZGV4fHwwO2lmKGE8PW4mJmUubGFzdEluZGV4Pj1uKXJldHVybiBpO2lmKDA8ciYmcjxhKXJldHVybiBudWxsfXJldHVybiBudWxsfShuLHIsbyxzKSk7aWYoIWMmJmwpYnJlYWs7aWYobD1jLGg8PTApYnJlYWs7cz1ofXJldHVybiBsPyh0PXt3b3JkOmxbMF0sc3RhcnRDb2x1bW46aSsxK2wuaW5kZXgsZW5kQ29sdW1uOmkrMStsLmluZGV4K2xbMF0ubGVuZ3RofSxuLmxhc3RJbmRleD0wLHQpOm51bGx9Y2xhc3MgQ3R7Y29uc3RydWN0b3IoZSl7ZT1fdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9ZSx0aGlzLl9hc2NpaU1hcD1DdC5fY3JlYXRlQXNjaWlNYXAoZSksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcCh0KXtjb25zdCBuPW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKW5bZV09dDtyZXR1cm4gbn1zZXQoZSx0KXt0PV90KHQpOzA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPXQ6dGhpcy5fbWFwLnNldChlLHQpfWdldChlKXtyZXR1cm4gMDw9ZSYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfX1jbGFzcyB4dHtjb25zdHJ1Y3RvcihuLHIsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShuKnIpO2ZvcihsZXQgZT0wLHQ9bipyO2U8dDtlKyspYVtlXT1pO3RoaXMuX2RhdGE9YSx0aGlzLnJvd3M9bix0aGlzLmNvbHM9cn1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3MgTHR7Y29uc3RydWN0b3Iobil7bGV0IHI9MCxpPTA7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXt2YXJbYSxvLHNdPW5bZV07bz5yJiYocj1vKSxzPihpPWE+aT9hOmkpJiYoaT1zKX1yKyssaSsrO2NvbnN0IGw9bmV3IHh0KGksciwwKTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe3ZhcltoLGMsZF09bltlXTtsLnNldChoLGMsZCl9dGhpcy5fc3RhdGVzPWwsdGhpcy5fbWF4Q2hhckNvZGU9cn1uZXh0U3RhdGUoZSx0KXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9tYXhDaGFyQ29kZT8wOnRoaXMuX3N0YXRlcy5nZXQoZSx0KX19bGV0IEF0PW51bGw7bGV0IEV0PW51bGw7Y2xhc3MgTXR7c3RhdGljIF9jcmVhdGVMaW5rKGUsdCxuLHIsaSl7bGV0IGE9aS0xO2Rve3ZhciBvPXQuY2hhckNvZGVBdChhKTtpZigyIT09ZS5nZXQobykpYnJlYWt9d2hpbGUoLS1hPnIpO3ZhciBzO3JldHVybiAwPHImJihpPXQuY2hhckNvZGVBdChyLTEpLHM9dC5jaGFyQ29kZUF0KGEpLCg0MD09PWkmJjQxPT09c3x8OTE9PT1pJiY5Mz09PXN8fDEyMz09PWkmJjEyNT09PXMpJiZhLS0pLHtyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46YSsyfSx1cmw6dC5zdWJzdHJpbmcocixhKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKHQsZD1BdD1udWxsPT09QXQ/bmV3IEx0KFtbMSwxMDQsMl0sWzEsNzIsMl0sWzEsMTAyLDZdLFsxLDcwLDZdLFsyLDExNiwzXSxbMiw4NCwzXSxbMywxMTYsNF0sWzMsODQsNF0sWzQsMTEyLDVdLFs0LDgwLDVdLFs1LDExNSw5XSxbNSw4Myw5XSxbNSw1OCwxMF0sWzYsMTA1LDddLFs2LDczLDddLFs3LDEwOCw4XSxbNyw3Niw4XSxbOCwxMDEsOV0sWzgsNjksOV0sWzksNTgsMTBdLFsxMCw0NywxMV0sWzExLDQ3LDEyXV0pOkF0KXtjb25zdCB1PWZ1bmN0aW9uKCl7aWYobnVsbD09PUV0KXtFdD1uZXcgQ3QoMCk7dmFyIHQ9IiBcdDw+J1wi44CB44CC772h772k77yM77yO77ya77yb4oCY44CI44CM44CO44CU77yI77y7772b772i772j772d77y977yJ44CV44CP44CN44CJ4oCZ772A772e4oCmIjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylFdC5zZXQodC5jaGFyQ29kZUF0KGUpLDEpO2ZvcihsZXQgZT0wO2U8Ii4sOyIubGVuZ3RoO2UrKylFdC5zZXQoIi4sOyIuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4gRXR9KCkscD1bXTtmb3IobGV0IGM9MSxlPXQuZ2V0TGluZUNvdW50KCk7Yzw9ZTtjKyspe2NvbnN0IGc9dC5nZXRMaW5lQ29udGVudChjKTt2YXIgbT1nLmxlbmd0aDtsZXQgbj0wLHI9MCxpPTAsYT0xLG89ITEscz0hMSxsPSExLGg9ITE7Zm9yKDtuPG07KXtsZXQgdD0hMTt2YXIgZj1nLmNoYXJDb2RlQXQobik7aWYoMTM9PT1hKXtsZXQgZTtzd2l0Y2goZil7Y2FzZSA0MDpvPSEwLGU9MDticmVhaztjYXNlIDQxOmU9bz8wOjE7YnJlYWs7Y2FzZSA5MTpsPSEwLHM9ITAsZT0wO2JyZWFrO2Nhc2UgOTM6bD0hMSxlPXM/MDoxO2JyZWFrO2Nhc2UgMTIzOmg9ITAsZT0wO2JyZWFrO2Nhc2UgMTI1OmU9aD8wOjE7YnJlYWs7Y2FzZSAzOTplPTM0PT09aXx8OTY9PT1pPzA6MTticmVhaztjYXNlIDM0OmU9Mzk9PT1pfHw5Nj09PWk/MDoxO2JyZWFrO2Nhc2UgOTY6ZT0zOT09PWl8fDM0PT09aT8wOjE7YnJlYWs7Y2FzZSA0MjplPTQyPT09aT8xOjA7YnJlYWs7Y2FzZSAxMjQ6ZT0xMjQ9PT1pPzE6MDticmVhaztjYXNlIDMyOmU9bD8wOjE7YnJlYWs7ZGVmYXVsdDplPXUuZ2V0KGYpfTE9PT1lJiYocC5wdXNoKE10Ll9jcmVhdGVMaW5rKHUsZyxjLHIsbikpLHQ9ITApfWVsc2UgaWYoMTI9PT1hKXtsZXQgZTsxPT09KGU9OTE9PT1mPyhzPSEwLDApOnUuZ2V0KGYpKT90PSEwOmE9MTN9ZWxzZSAwPT09KGE9ZC5uZXh0U3RhdGUoYSxmKSkmJih0PSEwKTt0JiYoYT0xLG89ITEscz0hMSxoPSExLHI9bisxLGk9ZiksbisrfTEzPT09YSYmcC5wdXNoKE10Ll9jcmVhdGVMaW5rKHUsZyxjLHIsbSkpfXJldHVybiBwfX1jbGFzcyBSdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7dD10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKHQpcmV0dXJue3JhbmdlOmUsdmFsdWU6dH19aWYobiYmcil7ZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7dmFyIG49dGhpcy5udW1iZXJSZXBsYWNlKGUsdCk7cmV0dXJuIG51bGwhPT1uP246dGhpcy50ZXh0UmVwbGFjZShlLHQpfW51bWJlclJlcGxhY2UoZSx0KXt2YXIgbj1NYXRoLnBvdygxMCxlLmxlbmd0aC0oZS5sYXN0SW5kZXhPZigiLiIpKzEpKTtsZXQgcj1OdW1iZXIoZSk7ZT1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihyKSYmIWlzTmFOKGUpJiZyPT09ZSYmKDAhPT1yfHx0KT8ocj1NYXRoLmZsb29yKHIqbikscis9dD9uOi1uLFN0cmluZyhyL24pKTpudWxsfXRleHRSZXBsYWNlKGUsdCl7cmV0dXJuIHRoaXMudmFsdWVTZXRzUmVwbGFjZSh0aGlzLl9kZWZhdWx0VmFsdWVTZXQsZSx0KX12YWx1ZVNldHNSZXBsYWNlKG4scixpKXtsZXQgYT1udWxsO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7bnVsbD09PWEmJmU8dDtlKyspYT10aGlzLnZhbHVlU2V0UmVwbGFjZShuW2VdLHIsaSk7cmV0dXJuIGF9dmFsdWVTZXRSZXBsYWNlKGUsdCxuKXtsZXQgcj1lLmluZGV4T2YodCk7cmV0dXJuIDA8PXI/KChyKz1uPzE6LTEpPDA/cj1lLmxlbmd0aC0xOnIlPWUubGVuZ3RoLGVbcl0pOm51bGx9fVJ0LklOU1RBTkNFPW5ldyBSdDtjb25zdCBJdD1PYmplY3QuZnJlZXplKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSk7KEllPVJlPVJlfHx7fSkuaXNDYW5jZWxsYXRpb25Ub2tlbj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUllLk5vbmV8fGU9PT1JZS5DYW5jZWxsZWR8fChlIGluc3RhbmNlb2YgTnR8fCEoIWV8fCJvYmplY3QiIT10eXBlb2YgZSkmJigiYm9vbGVhbiI9PXR5cGVvZiBlLmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxJZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOlAuTm9uZX0pLEllLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpJdH0pO2NsYXNzIE50e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9JdDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IFopLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgVXR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBOdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBOdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49UmUuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgTnQmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj1SZS5Ob25lfX1jbGFzcyB6dHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IEh0PW5ldyB6dCxEdD1uZXcgenQsV3Q9bmV3IHp0LFB0PW5ldyBBcnJheSgyMzApLE90PXt9LHF0PVtdLEZ0PU9iamVjdC5jcmVhdGUobnVsbCksVnQ9T2JqZWN0LmNyZWF0ZShudWxsKSxCdD1bXSxLdD1bXTtmb3IobGV0IGU9MDtlPD0xOTM7ZSsrKUJ0W2VdPS0xO2ZvcihsZXQgZT0wO2U8PTEyNjtlKyspS3RbZV09LTE7e2xldCBlPVtdLHQ9W107Zm9yKGNvbnN0IEZhIG9mW1swLDEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsIiIsIiJdLFswLDEsMSwiSHlwZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwyLCJTdXBlciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDMsIkZuIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNCwiRm5Mb2NrIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNSwiU3VzcGVuZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDYsIlJlc3VtZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDcsIlR1cmJvIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsOCwiU2xlZXAiLDAsIiIsMCwiVktfU0xFRVAiLCIiLCIiXSxbMCwxLDksIldha2VVcCIsMCwiIiwwLCIiLCIiLCIiXSxbMzEsMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIiwiIiwiIl0sWzMyLDAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsIiIsIiJdLFszMywwLDEyLCJLZXlDIiwzMywiQyIsNjcsIlZLX0MiLCIiLCIiXSxbMzQsMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIiwiIiwiIl0sWzM1LDAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsIiIsIiJdLFszNiwwLDE1LCJLZXlGIiwzNiwiRiIsNzAsIlZLX0YiLCIiLCIiXSxbMzcsMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIiwiIiwiIl0sWzM4LDAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsIiIsIiJdLFszOSwwLDE4LCJLZXlJIiwzOSwiSSIsNzMsIlZLX0kiLCIiLCIiXSxbNDAsMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIiwiIiwiIl0sWzQxLDAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsIiIsIiJdLFs0MiwwLDIxLCJLZXlMIiw0MiwiTCIsNzYsIlZLX0wiLCIiLCIiXSxbNDMsMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIiwiIiwiIl0sWzQ0LDAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsIiIsIiJdLFs0NSwwLDI0LCJLZXlPIiw0NSwiTyIsNzksIlZLX08iLCIiLCIiXSxbNDYsMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIiwiIiwiIl0sWzQ3LDAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsIiIsIiJdLFs0OCwwLDI3LCJLZXlSIiw0OCwiUiIsODIsIlZLX1IiLCIiLCIiXSxbNDksMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIiwiIiwiIl0sWzUwLDAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsIiIsIiJdLFs1MSwwLDMwLCJLZXlVIiw1MSwiVSIsODUsIlZLX1UiLCIiLCIiXSxbNTIsMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIiwiIiwiIl0sWzUzLDAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsIiIsIiJdLFs1NCwwLDMzLCJLZXlYIiw1NCwiWCIsODgsIlZLX1giLCIiLCIiXSxbNTUsMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIiwiIiwiIl0sWzU2LDAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsIiIsIiJdLFsyMiwwLDM2LCJEaWdpdDEiLDIyLCIxIiw0OSwiVktfMSIsIiIsIiJdLFsyMywwLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsIiIsIiJdLFsyNCwwLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsIiIsIiJdLFsyNSwwLDM5LCJEaWdpdDQiLDI1LCI0Iiw1MiwiVktfNCIsIiIsIiJdLFsyNiwwLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsIiIsIiJdLFsyNywwLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsIiIsIiJdLFsyOCwwLDQyLCJEaWdpdDciLDI4LCI3Iiw1NSwiVktfNyIsIiIsIiJdLFsyOSwwLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsIiIsIiJdLFszMCwwLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsIiIsIiJdLFsyMSwwLDQ1LCJEaWdpdDAiLDIxLCIwIiw0OCwiVktfMCIsIiIsIiJdLFszLDEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsIiIsIiJdLFs5LDEsNDcsIkVzY2FwZSIsOSwiRXNjYXBlIiwyNywiVktfRVNDQVBFIiwiIiwiIl0sWzEsMSw0OCwiQmFja3NwYWNlIiwxLCJCYWNrc3BhY2UiLDgsIlZLX0JBQ0siLCIiLCIiXSxbMiwxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIiwiIiwiIl0sWzEwLDEsNTAsIlNwYWNlIiwxMCwiU3BhY2UiLDMyLCJWS19TUEFDRSIsIiIsIiJdLFs4MywwLDUxLCJNaW51cyIsODMsIi0iLDE4OSwiVktfT0VNX01JTlVTIiwiLSIsIk9FTV9NSU5VUyJdLFs4MSwwLDUyLCJFcXVhbCIsODEsIj0iLDE4NywiVktfT0VNX1BMVVMiLCI9IiwiT0VNX1BMVVMiXSxbODcsMCw1MywiQnJhY2tldExlZnQiLDg3LCJbIiwyMTksIlZLX09FTV80IiwiWyIsIk9FTV80Il0sWzg5LDAsNTQsIkJyYWNrZXRSaWdodCIsODksIl0iLDIyMSwiVktfT0VNXzYiLCJdIiwiT0VNXzYiXSxbODgsMCw1NSwiQmFja3NsYXNoIiw4OCwiXFwiLDIyMCwiVktfT0VNXzUiLCJcXCIsIk9FTV81Il0sWzAsMCw1NiwiSW50bEhhc2giLDAsIiIsMCwiIiwiIiwiIl0sWzgwLDAsNTcsIlNlbWljb2xvbiIsODAsIjsiLDE4NiwiVktfT0VNXzEiLCI7IiwiT0VNXzEiXSxbOTAsMCw1OCwiUXVvdGUiLDkwLCInIiwyMjIsIlZLX09FTV83IiwiJyIsIk9FTV83Il0sWzg2LDAsNTksIkJhY2txdW90ZSIsODYsImAiLDE5MiwiVktfT0VNXzMiLCJgIiwiT0VNXzMiXSxbODIsMCw2MCwiQ29tbWEiLDgyLCIsIiwxODgsIlZLX09FTV9DT01NQSIsIiwiLCJPRU1fQ09NTUEiXSxbODQsMCw2MSwiUGVyaW9kIiw4NCwiLiIsMTkwLCJWS19PRU1fUEVSSU9EIiwiLiIsIk9FTV9QRVJJT0QiXSxbODUsMCw2MiwiU2xhc2giLDg1LCIvIiwxOTEsIlZLX09FTV8yIiwiLyIsIk9FTV8yIl0sWzgsMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsIiIsIiJdLFs1OSwxLDY0LCJGMSIsNTksIkYxIiwxMTIsIlZLX0YxIiwiIiwiIl0sWzYwLDEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLCIiLCIiXSxbNjEsMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsIiIsIiJdLFs2MiwxLDY3LCJGNCIsNjIsIkY0IiwxMTUsIlZLX0Y0IiwiIiwiIl0sWzYzLDEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLCIiLCIiXSxbNjQsMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsIiIsIiJdLFs2NSwxLDcwLCJGNyIsNjUsIkY3IiwxMTgsIlZLX0Y3IiwiIiwiIl0sWzY2LDEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLCIiLCIiXSxbNjcsMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsIiIsIiJdLFs2OCwxLDczLCJGMTAiLDY4LCJGMTAiLDEyMSwiVktfRjEwIiwiIiwiIl0sWzY5LDEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLCIiLCIiXSxbNzAsMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsIiIsIiJdLFswLDEsNzYsIlByaW50U2NyZWVuIiwwLCIiLDAsIiIsIiIsIiJdLFs3OSwxLDc3LCJTY3JvbGxMb2NrIiw3OSwiU2Nyb2xsTG9jayIsMTQ1LCJWS19TQ1JPTEwiLCIiLCIiXSxbNywxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIiwiIiwiIl0sWzE5LDEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsIiIsIiJdLFsxNCwxLDgwLCJIb21lIiwxNCwiSG9tZSIsMzYsIlZLX0hPTUUiLCIiLCIiXSxbMTEsMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLCIiLCIiXSxbMjAsMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIiwiIiwiIl0sWzEzLDEsODMsIkVuZCIsMTMsIkVuZCIsMzUsIlZLX0VORCIsIiIsIiJdLFsxMiwxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsIiIsIiJdLFsxNywxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLCIiXSxbMTUsMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLCIiXSxbMTgsMSw4NywiQXJyb3dEb3duIiwxOCwiRG93bkFycm93Iiw0MCwiVktfRE9XTiIsIkRvd24iLCIiXSxbMTYsMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIiwiIl0sWzc4LDEsODksIk51bUxvY2siLDc4LCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLCIiLCIiXSxbMTA4LDEsOTAsIk51bXBhZERpdmlkZSIsMTA4LCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsIiIsIiJdLFsxMDMsMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwMywiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIiwiIiwiIl0sWzEwNiwxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTA2LCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLCIiLCIiXSxbMTA0LDEsOTMsIk51bXBhZEFkZCIsMTA0LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsIiIsIiJdLFszLDEsOTQsIk51bXBhZEVudGVyIiwzLCIiLDAsIiIsIiIsIiJdLFs5NCwxLDk1LCJOdW1wYWQxIiw5NCwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLCIiLCIiXSxbOTUsMSw5NiwiTnVtcGFkMiIsOTUsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIiwiIiwiIl0sWzk2LDEsOTcsIk51bXBhZDMiLDk2LCJOdW1QYWQzIiw5OSwiVktfTlVNUEFEMyIsIiIsIiJdLFs5NywxLDk4LCJOdW1wYWQ0Iiw5NywiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IiwiIiwiIl0sWzk4LDEsOTksIk51bXBhZDUiLDk4LCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLCIiLCIiXSxbOTksMSwxMDAsIk51bXBhZDYiLDk5LCJOdW1QYWQ2IiwxMDIsIlZLX05VTVBBRDYiLCIiLCIiXSxbMTAwLDEsMTAxLCJOdW1wYWQ3IiwxMDAsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsIiIsIiJdLFsxMDEsMSwxMDIsIk51bXBhZDgiLDEwMSwiTnVtUGFkOCIsMTA0LCJWS19OVU1QQUQ4IiwiIiwiIl0sWzEwMiwxLDEwMywiTnVtcGFkOSIsMTAyLCJOdW1QYWQ5IiwxMDUsIlZLX05VTVBBRDkiLCIiLCIiXSxbOTMsMSwxMDQsIk51bXBhZDAiLDkzLCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsIiIsIiJdLFsxMDcsMSwxMDUsIk51bXBhZERlY2ltYWwiLDEwNywiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsIiIsIiJdLFs5MiwwLDEwNiwiSW50bEJhY2tzbGFzaCIsOTIsIk9FTV8xMDIiLDIyNiwiVktfT0VNXzEwMiIsIiIsIiJdLFs1OCwxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsIiIsIiIsIiJdLFswLDEsMTA4LCJQb3dlciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEwOSwiTnVtcGFkRXF1YWwiLDAsIiIsMCwiIiwiIiwiIl0sWzcxLDEsMTEwLCJGMTMiLDcxLCJGMTMiLDEyNCwiVktfRjEzIiwiIiwiIl0sWzcyLDEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IiwiIiwiIl0sWzczLDEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IiwiIiwiIl0sWzc0LDEsMTEzLCJGMTYiLDc0LCJGMTYiLDEyNywiVktfRjE2IiwiIiwiIl0sWzc1LDEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IiwiIiwiIl0sWzc2LDEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IiwiIiwiIl0sWzc3LDEsMTE2LCJGMTkiLDc3LCJGMTkiLDEzMCwiVktfRjE5IiwiIiwiIl0sWzAsMSwxMTcsIkYyMCIsMCwiIiwwLCJWS19GMjAiLCIiLCIiXSxbMCwxLDExOCwiRjIxIiwwLCIiLDAsIlZLX0YyMSIsIiIsIiJdLFswLDEsMTE5LCJGMjIiLDAsIiIsMCwiVktfRjIyIiwiIiwiIl0sWzAsMSwxMjAsIkYyMyIsMCwiIiwwLCJWS19GMjMiLCIiLCIiXSxbMCwxLDEyMSwiRjI0IiwwLCIiLDAsIlZLX0YyNCIsIiIsIiJdLFswLDEsMTIyLCJPcGVuIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTIzLCJIZWxwIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI0LCJTZWxlY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjUsIkFnYWluIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI2LCJVbmRvIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI3LCJDdXQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjgsIkNvcHkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjksIlBhc3RlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTMwLCJGaW5kIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTMxLCJBdWRpb1ZvbHVtZU11dGUiLDExMiwiQXVkaW9Wb2x1bWVNdXRlIiwxNzMsIlZLX1ZPTFVNRV9NVVRFIiwiIiwiIl0sWzAsMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExMywiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLCIiLCIiXSxbMCwxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTQsIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsIiIsIiJdLFsxMDUsMSwxMzQsIk51bXBhZENvbW1hIiwxMDUsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIiwiIiwiIl0sWzExMCwwLDEzNSwiSW50bFJvIiwxMTAsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsIiIsIiJdLFswLDEsMTM2LCJLYW5hTW9kZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwwLDEzNywiSW50bFllbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzOCwiQ29udmVydCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzOSwiTm9uQ29udmVydCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MCwiTGFuZzEiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDEsIkxhbmcyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQyLCJMYW5nMyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MywiTGFuZzQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDQsIkxhbmc1IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ1LCJBYm9ydCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NiwiUHJvcHMiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDcsIk51bXBhZFBhcmVuTGVmdCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0OCwiTnVtcGFkUGFyZW5SaWdodCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUwLCJOdW1wYWRNZW1vcnlTdG9yZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MSwiTnVtcGFkTWVtb3J5UmVjYWxsIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MywiTnVtcGFkTWVtb3J5QWRkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU0LCJOdW1wYWRNZW1vcnlTdWJ0cmFjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1NSwiTnVtcGFkQ2xlYXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsIiIsMCwiIiwiIiwiIl0sWzUsMSwwLCIiLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIiwiIiwiIl0sWzQsMSwwLCIiLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLCIiLCIiXSxbNiwxLDAsIiIsNiwiQWx0IiwxOCwiVktfTUVOVSIsIiIsIiJdLFs1NywxLDAsIiIsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLCIiLCIiXSxbNSwxLDE1NywiQ29udHJvbExlZnQiLDUsIiIsMCwiVktfTENPTlRST0wiLCIiLCIiXSxbNCwxLDE1OCwiU2hpZnRMZWZ0Iiw0LCIiLDAsIlZLX0xTSElGVCIsIiIsIiJdLFs2LDEsMTU5LCJBbHRMZWZ0Iiw2LCIiLDAsIlZLX0xNRU5VIiwiIiwiIl0sWzU3LDEsMTYwLCJNZXRhTGVmdCIsNTcsIiIsMCwiVktfTFdJTiIsIiIsIiJdLFs1LDEsMTYxLCJDb250cm9sUmlnaHQiLDUsIiIsMCwiVktfUkNPTlRST0wiLCIiLCIiXSxbNCwxLDE2MiwiU2hpZnRSaWdodCIsNCwiIiwwLCJWS19SU0hJRlQiLCIiLCIiXSxbNiwxLDE2MywiQWx0UmlnaHQiLDYsIiIsMCwiVktfUk1FTlUiLCIiLCIiXSxbNTcsMSwxNjQsIk1ldGFSaWdodCIsNTcsIiIsMCwiVktfUldJTiIsIiIsIiJdLFswLDEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY3LCJNZWRpYVBsYXkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjgsIk1lZGlhUmVjb3JkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTcwLCJNZWRpYVJld2luZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE0LDEsMTcxLCJNZWRpYVRyYWNrTmV4dCIsMTE5LCJNZWRpYVRyYWNrTmV4dCIsMTc2LCJWS19NRURJQV9ORVhUX1RSQUNLIiwiIiwiIl0sWzExNSwxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjAsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIiwiIiwiIl0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIiwiIiwiIl0sWzAsMSwxNzQsIkVqZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLCIiLCIiXSxbMCwxLDE3NiwiTWVkaWFTZWxlY3QiLDEyMywiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsIiIsIiJdLFswLDEsMTc3LCJMYXVuY2hNYWlsIiwxMjQsIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLCIiLCIiXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIiwiIiwiIl0sWzAsMSwxNzksIkxhdW5jaEFwcDEiLDAsIiIsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLCIiLCIiXSxbMCwxLDE4MCwiU2VsZWN0VGFzayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODIsIkJyb3dzZXJTZWFyY2giLDExNSwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsIiIsIiJdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLCIiLCIiXSxbMTEyLDEsMTg0LCJCcm93c2VyQmFjayIsMTE3LCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLCIiLCIiXSxbMTEzLDEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTE4LCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLCIiLCIiXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsIiIsMCwiVktfQlJPV1NFUl9TVE9QIiwiIiwiIl0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLCIiLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsIiIsIiJdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLCIiLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIiwiIiwiIl0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTAsIk1haWxSZXBseSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE5MSwiTWFpbEZvcndhcmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLCIiLDAsIiIsIiIsIiJdLFsxMDksMSwwLCIiLDEwOSwiS2V5SW5Db21wb3NpdGlvbiIsMjI5LCIiLCIiLCIiXSxbMTExLDEsMCwiIiwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsIiIsIiJdLFs5MSwxLDAsIiIsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ0xFQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19LQU5BIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfSEFOR1VMIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfSlVOSkEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19GSU5BTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOSkkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19DT05WRVJUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfTk9OQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0FDQ0VQVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX01PREVDSEFOR0UiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19TRUxFQ1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QUklOVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VYRUNVVEUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19TTkFQU0hPVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hFTFAiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BUFBTIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJPQ0VTU0tFWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BBQ0tFVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0RCRV9TQkNTQ0hBUiIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0RCRV9EQkNTQ0hBUiIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0FUVE4iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19DUlNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VYU0VMIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRVJFT0YiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QTEFZIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfWk9PTSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkFNRSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BBMSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX09FTV9DTEVBUiIsIiIsIiJdXSl7Y29uc3RbLFZhLEJhLEthLGphLEdhLCRhLEphLFhhLFlhXT1GYTtpZih0W0JhXXx8KHRbQmFdPSEwLHF0W0JhXT1LYSxGdFtLYV09QmEsVnRbS2EudG9Mb3dlckNhc2UoKV09QmEsVmEmJjAhPT0oQnRbQmFdPWphKSYmMyE9PWphJiY1IT09amEmJjQhPT1qYSYmNiE9PWphJiY1NyE9PWphJiYoS3RbamFdPUJhKSksIWVbamFdKXtpZihlW2phXT0hMCwhR2EpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtqYX0gYXJvdW5kIHNjYW4gY29kZSBgK0thKTtIdC5kZWZpbmUoamEsR2EpLER0LmRlZmluZShqYSxYYXx8R2EpLFd0LmRlZmluZShqYSxZYXx8WGF8fEdhKX0kYSYmKFB0WyRhXT1qYSksSmEmJihPdFtKYV09amEpfUt0WzNdPTQ2fWNsYXNzIGp0IGV4dGVuZHMgbHR7Y29uc3RydWN0b3IoZSx0LG4scil7c3VwZXIoZSx0LG4sciksdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9ZSx0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPXQsdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXI9bix0aGlzLnBvc2l0aW9uQ29sdW1uPXJ9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMucG9zaXRpb25MaW5lTnVtYmVyKyIsIit0aGlzLnBvc2l0aW9uQ29sdW1uKyJdIn1lcXVhbHNTZWxlY3Rpb24oZSl7cmV0dXJuIGp0LnNlbGVjdGlvbnNFcXVhbCh0aGlzLGUpfXN0YXRpYyBzZWxlY3Rpb25zRXF1YWwoZSx0KXtyZXR1cm4gZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmZS5zZWxlY3Rpb25TdGFydENvbHVtbj09PXQuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJmUucG9zaXRpb25MaW5lTnVtYmVyPT09dC5wb3NpdGlvbkxpbmVOdW1iZXImJmUucG9zaXRpb25Db2x1bW49PT10LnBvc2l0aW9uQ29sdW1ufWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXRoaXMuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dGhpcy5zdGFydENvbHVtbj8wOjF9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IGp0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KTpuZXcganQoZSx0LHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIG5ldyBzdCh0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgc3QodGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbil9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcganQoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbik6bmV3IGp0KHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbixlLHQpfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IGp0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBmcm9tUmFuZ2UoZSx0KXtyZXR1cm4gMD09PXQ/bmV3IGp0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpuZXcganQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBsaWZ0U2VsZWN0aW9uKGUpe3JldHVybiBuZXcganQoZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsZS5zZWxlY3Rpb25TdGFydENvbHVtbixlLnBvc2l0aW9uTGluZU51bWJlcixlLnBvc2l0aW9uQ29sdW1uKX1zdGF0aWMgc2VsZWN0aW9uc0FyckVxdWFsKG4scil7aWYobiYmIXJ8fCFuJiZyKXJldHVybiExO2lmKCFuJiYhcilyZXR1cm4hMDtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylpZighdGhpcy5zZWxlY3Rpb25zRXF1YWwobltlXSxyW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgaXNJU2VsZWN0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkNvbHVtbn1zdGF0aWMgY3JlYXRlV2l0aERpcmVjdGlvbihlLHQsbixyLGkpe3JldHVybiAwPT09aT9uZXcganQoZSx0LG4scik6bmV3IGp0KG4scixlLHQpfX12YXIgR3QsJHQ9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gcihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/bihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4ocixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX0sSnQ9ZnVuY3Rpb24obyl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLHQ9b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIHQ/dC5jYWxsKG8pOihvPSJmdW5jdGlvbiI9PXR5cGVvZiBfX3ZhbHVlcz9fX3ZhbHVlcyhvKTpvW1N5bWJvbC5pdGVyYXRvcl0oKSxlPXt9LG4oIm5leHQiKSxuKCJ0aHJvdyIpLG4oInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIG4oYSl7ZVthXT1vW2FdJiZmdW5jdGlvbihpKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgbixyO2k9b1thXShpKSxuPWUsZT10LHI9aS5kb25lLHQ9aS52YWx1ZSxQcm9taXNlLnJlc29sdmUodCkudGhlbihmdW5jdGlvbihlKXtuKHt2YWx1ZTplLGRvbmU6cn0pfSxlKX0pfX19O2NsYXNzIFh0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3N0YXRlPTAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9lcnJvcj1udWxsLHRoaXMuX29uU3RhdGVDaGFuZ2VkPW5ldyBaLHF1ZXVlTWljcm90YXNrKCgpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT17ZW1pdE9uZTplPT50aGlzLmVtaXRPbmUoZSksZW1pdE1hbnk6ZT0+dGhpcy5lbWl0TWFueShlKSxyZWplY3Q6ZT0+dGhpcy5yZWplY3QoZSl9O3RyeXt5aWVsZCBQcm9taXNlLnJlc29sdmUodChlKSksdGhpcy5yZXNvbHZlKCl9Y2F0Y2goZSl7dGhpcy5yZWplY3QoZSl9ZmluYWxseXtlLmVtaXRPbmU9dm9pZCAwLGUuZW1pdE1hbnk9dm9pZCAwLGUucmVqZWN0PXZvaWQgMH19KSl9c3RhdGljIGZyb21BcnJheSh0KXtyZXR1cm4gbmV3IFh0KGU9PntlLmVtaXRNYW55KHQpfSl9c3RhdGljIGZyb21Qcm9taXNlKHQpe3JldHVybiBuZXcgWHQoZT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2UuZW1pdE1hbnkoeWllbGQgdCl9KSl9c3RhdGljIGZyb21Qcm9taXNlcyhlKXtyZXR1cm4gbmV3IFh0KHQ9PiR0KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt5aWVsZCBQcm9taXNlLmFsbChlLm1hcChlPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHQuZW1pdE9uZSh5aWVsZCBlKX0pKSl9KSl9c3RhdGljIG1lcmdlKGUpe3JldHVybiBuZXcgWHQobz0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIFByb21pc2UuYWxsKGUubWFwKHI9Pnt2YXIgaSxhO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKGk9SnQocik7IShhPXlpZWxkIGkubmV4dCgpKS5kb25lOyl7dmFyIG49YS52YWx1ZTtvLmVtaXRPbmUobil9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihlPWkucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChpKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pfSkpfSkpfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtsZXQgZT0wO3JldHVybntuZXh0OigpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Zm9yKDs7KXtpZigyPT09dGhpcy5fc3RhdGUpdGhyb3cgdGhpcy5fZXJyb3I7aWYoZTx0aGlzLl9yZXN1bHRzLmxlbmd0aClyZXR1cm57ZG9uZTohMSx2YWx1ZTp0aGlzLl9yZXN1bHRzW2UrK119O2lmKDE9PT10aGlzLl9zdGF0ZSlyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9O3lpZWxkIFAudG9Qcm9taXNlKHRoaXMuX29uU3RhdGVDaGFuZ2VkLmV2ZW50KX19KX19c3RhdGljIG1hcChvLHMpe3JldHVybiBuZXcgWHQoYT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgbixyPUp0KG8pOyEobj15aWVsZCByLm5leHQoKSkuZG9uZTspe3ZhciBpPW4udmFsdWU7YS5lbWl0T25lKHMoaSkpfX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYoZT1yLnJldHVybikmJih5aWVsZCBlLmNhbGwocikpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX19KSl9bWFwKGUpe3JldHVybiBYdC5tYXAodGhpcyxlKX1zdGF0aWMgZmlsdGVyKG8scyl7cmV0dXJuIG5ldyBYdChhPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKHZhciBuLHI9SnQobyk7IShuPXlpZWxkIHIubmV4dCgpKS5kb25lOyl7dmFyIGk9bi52YWx1ZTtzKGkpJiZhLmVtaXRPbmUoaSl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihlPXIucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChyKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pKX1maWx0ZXIoZSl7cmV0dXJuIFh0LmZpbHRlcih0aGlzLGUpfXN0YXRpYyBjb2FsZXNjZShlKXtyZXR1cm4gWHQuZmlsdGVyKGUsZT0+ISFlKX1jb2FsZXNjZSgpe3JldHVybiBYdC5jb2FsZXNjZSh0aGlzKX1zdGF0aWMgdG9Qcm9taXNlKG4pe3ZhciByLGksYSxvO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1bXTt0cnl7Zm9yKHI9SnQobik7IShpPXlpZWxkIHIubmV4dCgpKS5kb25lOyl7dmFyIHQ9aS52YWx1ZTtlLnB1c2godCl9fWNhdGNoKGUpe2E9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihvPXIucmV0dXJuKSYmKHlpZWxkIG8uY2FsbChyKSl9ZmluYWxseXtpZihhKXRocm93IGEuZXJyb3J9fXJldHVybiBlfSl9dG9Qcm9taXNlKCl7cmV0dXJuIFh0LnRvUHJvbWlzZSh0aGlzKX1lbWl0T25lKGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHMucHVzaChlKSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfWVtaXRNYW55KGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHM9dGhpcy5fcmVzdWx0cy5jb25jYXQoZSksdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX1yZXNvbHZlKCl7MD09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9MSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfXJlamVjdChlKXswPT09dGhpcy5fc3RhdGUmJih0aGlzLl9zdGF0ZT0yLHRoaXMuX2Vycm9yPWUsdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX19WHQuRU1QVFk9WHQuZnJvbUFycmF5KFtdKTtjbGFzcyBZdHtjb25zdHJ1Y3Rvcigpe3RoaXNbR3RdPSJMaW5rZWRNYXAiLHRoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZT0wfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCksdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlKyt9aXNFbXB0eSgpe3JldHVybiF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWdldCBmaXJzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5faGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9Z2V0IGxhc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3RhaWwpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSx0PTApe2U9dGhpcy5fbWFwLmdldChlKTtpZihlKXJldHVybiAwIT09dCYmdGhpcy50b3VjaChlLHQpLGUudmFsdWV9c2V0KGUsdCxuPTApe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYocilyLnZhbHVlPXQsMCE9PW4mJnRoaXMudG91Y2gocixuKTtlbHNle3N3aXRjaChyPXtrZXk6ZSx2YWx1ZTp0LG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0sbil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3Qocik7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KHIpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChyKX10aGlzLl9tYXAuc2V0KGUsciksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZShlKXtyZXR1cm4hIXRoaXMucmVtb3ZlKGUpfXJlbW92ZShlKXt2YXIgdD10aGlzLl9tYXAuZ2V0KGUpO2lmKHQpcmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZSksdGhpcy5yZW1vdmVJdGVtKHQpLHRoaXMuX3NpemUtLSx0LnZhbHVlfXNoaWZ0KCl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dmFyIGU9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlLmtleSksdGhpcy5yZW1vdmVJdGVtKGUpLHRoaXMuX3NpemUtLSxlLnZhbHVlfX1mb3JFYWNoKGUsdCl7dmFyIG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtmb3IoO3I7KXtpZigodD9lLmJpbmQodCk6ZSkoci52YWx1ZSxyLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7cj1yLm5leHR9fWtleXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIHI/KGU9e3ZhbHVlOnIua2V5LGRvbmU6ITF9LHI9ci5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX12YWx1ZXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIHI/KGU9e3ZhbHVlOnIudmFsdWUsZG9uZTohMX0scj1yLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfWVudHJpZXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIHI/KGU9e3ZhbHVlOltyLmtleSxyLnZhbHVlXSxkb25lOiExfSxyPXIubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9WyhHdD1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZChuKXtpZighKG4+PXRoaXMuc2l6ZSkpaWYoMCE9PW4pe2xldCBlPXRoaXMuX2hlYWQsdD10aGlzLnNpemU7Zm9yKDtlJiZ0Pm47KXRoaXMuX21hcC5kZWxldGUoZS5rZXkpLGU9ZS5uZXh0LHQtLTt0aGlzLl9oZWFkPWUsdGhpcy5fc2l6ZT10LGUmJihlLnByZXZpb3VzPXZvaWQgMCksdGhpcy5fc3RhdGUrK31lbHNlIHRoaXMuY2xlYXIoKX1hZGRJdGVtRmlyc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPWV9ZWxzZSB0aGlzLl90YWlsPWU7dGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUxhc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWV9ZWxzZSB0aGlzLl9oZWFkPWU7dGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9cmVtb3ZlSXRlbShlKXtpZihlPT09dGhpcy5faGVhZCYmZT09PXRoaXMuX3RhaWwpdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDA7ZWxzZSBpZihlPT09dGhpcy5faGVhZCl7aWYoIWUubmV4dCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UubmV4dC5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1lLm5leHR9ZWxzZSBpZihlPT09dGhpcy5fdGFpbCl7aWYoIWUucHJldmlvdXMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9ZS5wcmV2aW91c31lbHNle2NvbnN0IHQ9ZS5uZXh0LG49ZS5wcmV2aW91cztpZighdHx8IW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTsodC5wcmV2aW91cz1uKS5uZXh0PXR9ZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXZvaWQgMCx0aGlzLl9zdGF0ZSsrfXRvdWNoKGUsdCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7aWYoMT09PXR8fDI9PT10KWlmKDE9PT10KXtpZihlIT09dGhpcy5faGVhZCl7Y29uc3Qgbj1lLm5leHQscj1lLnByZXZpb3VzO2U9PT10aGlzLl90YWlsPyhyLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9cik6KG4ucHJldmlvdXM9cikubmV4dD1uLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK319ZWxzZSBpZigyPT09dCYmZSE9PXRoaXMuX3RhaWwpe2NvbnN0IGk9ZS5uZXh0LGE9ZS5wcmV2aW91cztlPT09dGhpcy5faGVhZD8oaS5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1pKTooaS5wcmV2aW91cz1hKS5uZXh0PWksZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWUsdGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9fXRvSlNPTigpe2NvbnN0IG49W107cmV0dXJuIHRoaXMuZm9yRWFjaCgoZSx0KT0+e24ucHVzaChbdCxlXSl9KSxufWZyb21KU09OKGUpe3RoaXMuY2xlYXIoKTtmb3IodmFyW3Qsbl1vZiBlKXRoaXMuc2V0KHQsbil9fWNsYXNzIFF0IGV4dGVuZHMgWXR7Y29uc3RydWN0b3IoZSx0PTEpe3N1cGVyKCksdGhpcy5fbGltaXQ9ZSx0aGlzLl9yYXRpbz1NYXRoLm1pbihNYXRoLm1heCgwLHQpLDEpfWdldCBsaW1pdCgpe3JldHVybiB0aGlzLl9saW1pdH1zZXQgbGltaXQoZSl7dGhpcy5fbGltaXQ9ZSx0aGlzLmNoZWNrVHJpbSgpfWdldChlLHQ9Mil7cmV0dXJuIHN1cGVyLmdldChlLHQpfXBlZWsoZSl7cmV0dXJuIHN1cGVyLmdldChlLDApfXNldChlLHQpe3JldHVybiBzdXBlci5zZXQoZSx0LDIpLHRoaXMuY2hlY2tUcmltKCksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbU9sZChNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNvbnN0IFp0PSIqKiIsZW49Ii8iLHRuPSJbL1xcXFxdIixubj0iW14vXFxcXF0iLHJuPS9cLy9nO2Z1bmN0aW9uIGFuKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIiI7Y2FzZSAxOnJldHVybiBubisiKj8iO2RlZmF1bHQ6cmV0dXJuYCg/OiR7dG59fCR7bm59KyR7dG59fCR7dG59JHtubn0rKSo/YH19ZnVuY3Rpb24gb24oZSx0KXtpZighZSlyZXR1cm5bXTtjb25zdCBuPVtdO2xldCByPSExLGk9ITEsYT0iIjtmb3IoY29uc3QgbyBvZiBlKXtzd2l0Y2gobyl7Y2FzZSB0OmlmKHJ8fGkpYnJlYWs7bi5wdXNoKGEpLGE9IiI7Y29udGludWU7Y2FzZSJ7IjpyPSEwO2JyZWFrO2Nhc2UifSI6cj0hMTticmVhaztjYXNlIlsiOmk9ITA7YnJlYWs7Y2FzZSJdIjppPSExfWErPW99cmV0dXJuIGEmJm4ucHVzaChhKSxufWZ1bmN0aW9uIHNuKCl7cmV0dXJuITF9Y29uc3QgbG49L15cKlwqXC9cKlwuW1x3XC4tXSskLyxobj0vXlwqXCpcLyhbXHdcLi1dKylcLz8kLyxjbj0vXntcKlwqXC9bXCpcLl0/W1x3XC4tXStcLz8oLFwqXCpcL1tcKlwuXT9bXHdcLi1dK1wvPykqfSQvLGRuPS9ee1wqXCpcL1tcKlwuXT9bXHdcLi1dKyhcLyhcKlwqKT8pPygsXCpcKlwvW1wqXC5dP1tcd1wuLV0rKFwvKFwqXCopPyk/KSp9JC8sdW49L15cKlwqKChcL1tcd1wuLV0rKSspXC8/JC8scG49L14oW1x3XC4tXSsoXC9bXHdcLi1dKykqKVwvPyQvLG1uPW5ldyBRdCgxZTQpLGZuPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2Z1bmN0aW9uIGduKGUsdCl7aWYoIWUpcmV0dXJuIGZuO2xldCBuO3ZhciByPShuPShuPSJzdHJpbmciIT10eXBlb2YgZT9lLnBhdHRlcm46ZSkudHJpbSgpKSsiXyIrISF0LnRyaW1Gb3JFeGNsdXNpb25zO2xldCBpPW1uLmdldChyKTtpZihpKXJldHVybiBibihpLGUpO2xldCBhO2lmKGxuLnRlc3Qobikpe2NvbnN0IG89bi5zdWJzdHIoNCk7aT1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5lbmRzV2l0aChvKT9uOm51bGx9fWVsc2UgaT0oYT1obi5leGVjKF9uKG4sdCkpKT9mdW5jdGlvbihuLHIpe2Z1bmN0aW9uIGUoZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/bnVsbDp0P3Q9PT1uP3I6bnVsbDplPT09bnx8ZS5lbmRzV2l0aChpKXx8ZS5lbmRzV2l0aChhKT9yOm51bGx9Y29uc3QgaT0iLyIrbixhPSJcXCIrbix0PVtuXTtyZXR1cm4gZS5iYXNlbmFtZXM9dCxlLnBhdHRlcm5zPVtyXSxlLmFsbEJhc2VuYW1lcz10LGV9KGFbMV0sbik6KHQudHJpbUZvckV4Y2x1c2lvbnM/ZG46Y24pLnRlc3Qobik/ZnVuY3Rpb24oaSx0KXtjb25zdCBhPXluKGkuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5tYXAoZT0+Z24oZSx0KSkuZmlsdGVyKGU9PmUhPT1mbiksaSksZT1hLmxlbmd0aDtpZighZSlyZXR1cm4gZm47aWYoMT09PWUpcmV0dXJuIGFbMF07ZnVuY3Rpb24gbihuLHIpe2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKylpZihhW2VdKG4scikpcmV0dXJuIGk7cmV0dXJuIG51bGx9dmFyIHI9YS5maW5kKGU9PiEhZS5hbGxCYXNlbmFtZXMpO3ImJihuLmFsbEJhc2VuYW1lcz1yLmFsbEJhc2VuYW1lcyk7cj1hLnJlZHVjZSgoZSx0KT0+dC5hbGxQYXRocz9lLmNvbmNhdCh0LmFsbFBhdGhzKTplLFtdKTtyLmxlbmd0aCYmKG4uYWxsUGF0aHM9cik7cmV0dXJuIG59KG4sdCk6KGE9dW4uZXhlYyhfbihuLHQpKSk/d24oYVsxXS5zdWJzdHIoMSksbiwhMCk6KGE9cG4uZXhlYyhfbihuLHQpKSk/d24oYVsxXSxuLCExKTpmdW5jdGlvbih0KXt0cnl7Y29uc3Qgbj1uZXcgUmVnRXhwKGBeJHtmdW5jdGlvbiBjKGUpe2lmKCFlKXJldHVybiIiO2xldCBkPSIiO2NvbnN0IHU9b24oZSxlbik7aWYodS5ldmVyeShlPT5lPT09WnQpKWQ9Ii4qIjtlbHNle2xldCBoPSExO3UuZm9yRWFjaCgoaSxhKT0+e2lmKGkhPT1adCl7bGV0IGU9ITEsdD0iIixuPSExLHI9IiI7Zm9yKGNvbnN0IHMgb2YgaSlpZigifSIhPT1zJiZlKXQrPXM7ZWxzZSBpZighbnx8Il0iPT09cyYmcilzd2l0Y2gocyl7Y2FzZSJ7IjplPSEwO2NvbnRpbnVlO2Nhc2UiWyI6bj0hMDtjb250aW51ZTtjYXNlIn0iOntjb25zdCBsPW9uKHQsIiwiKTt2YXIgbz1gKD86JHtsLm1hcChlPT5jKGUpKS5qb2luKCJ8Iil9KWA7ZCs9byxlPSExLHQ9IiI7YnJlYWt9Y2FzZSJdIjpkKz0iWyIrcisiXSIsbj0hMSxyPSIiO2JyZWFrO2Nhc2UiPyI6ZCs9bm47Y29udGludWU7Y2FzZSIqIjpkKz1hbigxKTtjb250aW51ZTtkZWZhdWx0OmQrPXJlKHMpfWVsc2V7bGV0IGU7ZT0iLSI9PT1zP3M6Il4iIT09cyYmIiEiIT09c3x8cj9zPT09ZW4/IiI6cmUocyk6Il4iLHIrPWV9YTx1Lmxlbmd0aC0xJiYodVthKzFdIT09WnR8fGErMjx1Lmxlbmd0aCkmJihkKz10biksaD0hMX1lbHNlIGh8fChkKz1hbigyKSxoPSEwKX0pfXJldHVybiBkfSh0KX0kYCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuLmxhc3RJbmRleD0wLCJzdHJpbmciPT10eXBlb2YgZSYmbi50ZXN0KGUpP3Q6bnVsbH19Y2F0Y2goZSl7cmV0dXJuIGZufX0obik7cmV0dXJuIG1uLnNldChyLGkpLGJuKGksZSl9ZnVuY3Rpb24gYm4obixyKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHI/bjpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbih0LG4sZSxyPUJlKXtpZih0PT09bilyZXR1cm4gMTtpZih0JiZuJiYhKG4ubGVuZ3RoPnQubGVuZ3RoKSl7aWYoZSl7aWYoIXNlKHQsbikpcmV0dXJuO2lmKG4ubGVuZ3RoPT09dC5sZW5ndGgpcmV0dXJuIDE7bGV0IGU9bi5sZW5ndGg7cmV0dXJuIG4uY2hhckF0KG4ubGVuZ3RoLTEpPT09ciYmZS0tLHQuY2hhckF0KGUpPT09cn1yZXR1cm4gbi5jaGFyQXQobi5sZW5ndGgtMSkhPT1yJiYobis9ciksMD09PXQuaW5kZXhPZihuKX19KGUsci5iYXNlLCFEKT9uKGUuc3Vic3RyKHIuYmFzZS5sZW5ndGgrMSksdCk6bnVsbH19ZnVuY3Rpb24gX24oZSx0KXtyZXR1cm4gdC50cmltRm9yRXhjbHVzaW9ucyYmZS5lbmRzV2l0aCgiLyoqIik/ZS5zdWJzdHIoMCxlLmxlbmd0aC0yKTplfWZ1bmN0aW9uIHduKG4scixlKXtjb25zdCBpPUJlPT09T2Uuc2VwLGE9aT9uOm4ucmVwbGFjZShybixCZSksbz1CZSthLHM9T2Uuc2VwK24sdD1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHxlIT09YSYmIWUuZW5kc1dpdGgobykmJihpfHxlIT09biYmIWUuZW5kc1dpdGgocykpP251bGw6cn06ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fGUhPT1hJiYoaXx8ZSE9PW4pP251bGw6cn07cmV0dXJuIHQuYWxsUGF0aHM9WyhlPyIqLyI6Ii4vIikrbl0sdH1mdW5jdGlvbiB2bihlLHQsbil7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdCYmZnVuY3Rpb24oZSx0PXt9KXtpZighZSlyZXR1cm4gc247aWYoInN0cmluZyI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYmFzZSYmInN0cmluZyI9PXR5cGVvZiBlLnBhdHRlcm4pfShlKSl7Y29uc3Qgcj1nbihlLHQpO2lmKHI9PT1mbilyZXR1cm4gc247dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIXIoZSx0KX07cmV0dXJuIHIuYWxsQmFzZW5hbWVzJiYobi5hbGxCYXNlbmFtZXM9ci5hbGxCYXNlbmFtZXMpLHIuYWxsUGF0aHMmJihuLmFsbFBhdGhzPXIuYWxsUGF0aHMpLG59cmV0dXJuIGZ1bmN0aW9uKG4scil7Y29uc3QgbD15bihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKS5tYXAoZT0+e3t2YXIgYT1lLHQ9KGU9bltlXSxyKTtpZighMT09PWUpcmV0dXJuIGZuO2NvbnN0IG89Z24oYSx0KTtpZihvPT09Zm4pcmV0dXJuIGZuO2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIG87aWYoZSl7Y29uc3Qgcz1lLndoZW47aWYoInN0cmluZyI9PXR5cGVvZiBzKXJldHVybih0PShlLHQsbixyKT0+e2lmKCFyfHwhbyhlLHQpKXJldHVybiBudWxsO2NvbnN0IGk9cihzLnJlcGxhY2UoIiQoYmFzZW5hbWUpIixuKSk7cmV0dXJuKGU9aSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4/aS50aGVuKGU9PmU/YTpudWxsKTppP2E6bnVsbH0pLnJlcXVpcmVzU2libGluZ3M9ITAsdH1yZXR1cm4gb319KS5maWx0ZXIoZT0+ZSE9PWZuKSksZT1sLmxlbmd0aDtpZighZSlyZXR1cm4gZm47aWYoIWwuc29tZShlPT4hIWUucmVxdWlyZXNTaWJsaW5ncykpe2lmKDE9PT1lKXJldHVybiBsWzBdO2NvbnN0IHQ9ZnVuY3Rpb24obixyKXtmb3IobGV0IGU9MCx0PWwubGVuZ3RoO2U8dDtlKyspe3ZhciBpPWxbZV0obixyKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfSxpPWwuZmluZChlPT4hIWUuYWxsQmFzZW5hbWVzKSxhPShpJiYodC5hbGxCYXNlbmFtZXM9aS5hbGxCYXNlbmFtZXMpLGwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pKTtyZXR1cm4gYS5sZW5ndGgmJih0LmFsbFBhdGhzPWEpLHR9Y29uc3QgdD1mdW5jdGlvbihuLHIsaSl7bGV0IGE9dm9pZCAwO2ZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgcz1sW2VdO3MucmVxdWlyZXNTaWJsaW5ncyYmaSYmKHI9cnx8RmUobiksYT1hfHxyLnN1YnN0cigwLHIubGVuZ3RoLVZlKG4pLmxlbmd0aCkpO3ZhciBvPXMobixyLGEsaSk7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1sLmZpbmQoZT0+ISFlLmFsbEJhc2VuYW1lcyk7aSYmKHQuYWxsQmFzZW5hbWVzPWkuYWxsQmFzZW5hbWVzKTtjb25zdCBhPWwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pO2EubGVuZ3RoJiYodC5hbGxQYXRocz1hKTtyZXR1cm4gdH0oZSx0KX0oZSkodCx2b2lkIDAsbil9ZnVuY3Rpb24geW4oZSxuKXtjb25zdCB0PWUuZmlsdGVyKGU9PiEhZS5iYXNlbmFtZXMpO2lmKHQubGVuZ3RoPDIpcmV0dXJuIGU7Y29uc3QgaT10LnJlZHVjZSgoZSx0KT0+e3Q9dC5iYXNlbmFtZXM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2xldCBhO2lmKG4pe2E9W107Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKWEucHVzaChuKX1lbHNlIGE9dC5yZWR1Y2UoKGUsdCk9Pnt0PXQucGF0dGVybnM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2Z1bmN0aW9uIHIodCxuKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7aWYoIW4pe2xldCBlO2ZvcihlPXQubGVuZ3RoOzA8ZTtlLS0pe3ZhciByPXQuY2hhckNvZGVBdChlLTEpO2lmKDQ3PT09cnx8OTI9PT1yKWJyZWFrfW49dC5zdWJzdHIoZSl9cmV0dXJuLTEhPT0obj1pLmluZGV4T2YobikpP2Fbbl06bnVsbH1yLmJhc2VuYW1lcz1pLHIucGF0dGVybnM9YSxyLmFsbEJhc2VuYW1lcz1pO2NvbnN0IG89ZS5maWx0ZXIoZT0+IWUuYmFzZW5hbWVzKTtyZXR1cm4gby5wdXNoKHIpLG99ZnVuY3Rpb24gVG4oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYoQXJyYXkuaXNBcnJheShlKT9lLmV2ZXJ5KFRuKTohIWUuZXhjbHVzaXZlKX1jbGFzcyBrbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2Nsb2NrPTAsdGhpcy5fZW50cmllcz1bXSx0aGlzLl9vbkRpZENoYW5nZT1uZXcgWn1nZXQgb25EaWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb25EaWRDaGFuZ2UuZXZlbnR9cmVnaXN0ZXIoZSx0KXtsZXQgbj17c2VsZWN0b3I6ZSxwcm92aWRlcjp0LF9zY29yZTotMSxfdGltZTp0aGlzLl9jbG9jaysrfTtyZXR1cm4gdGhpcy5fZW50cmllcy5wdXNoKG4pLHRoaXMuX2xhc3RDYW5kaWRhdGU9dm9pZCAwLHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUodGhpcy5fZW50cmllcy5sZW5ndGgpLF8oKCk9Pnt2YXIgZTshbnx8MDw9KGU9dGhpcy5fZW50cmllcy5pbmRleE9mKG4pKSYmKHRoaXMuX2VudHJpZXMuc3BsaWNlKGUsMSksdGhpcy5fbGFzdENhbmRpZGF0ZT12b2lkIDAsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh0aGlzLl9lbnRyaWVzLmxlbmd0aCksbj12b2lkIDApfSl9aGFzKGUpe3JldHVybiAwPHRoaXMuYWxsKGUpLmxlbmd0aH1hbGwoZSl7aWYoIWUpcmV0dXJuW107dGhpcy5fdXBkYXRlU2NvcmVzKGUpO2NvbnN0IHQ9W107Zm9yKHZhciBuIG9mIHRoaXMuX2VudHJpZXMpMDxuLl9zY29yZSYmdC5wdXNoKG4ucHJvdmlkZXIpO3JldHVybiB0fW9yZGVyZWQoZSl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5fb3JkZXJlZEZvckVhY2goZSxlPT50LnB1c2goZS5wcm92aWRlcikpLHR9b3JkZXJlZEdyb3VwcyhlKXtjb25zdCB0PVtdO2xldCBuLHI7cmV0dXJuIHRoaXMuX29yZGVyZWRGb3JFYWNoKGUsZT0+e24mJnI9PT1lLl9zY29yZT9uLnB1c2goZS5wcm92aWRlcik6KHI9ZS5fc2NvcmUsbj1bZS5wcm92aWRlcl0sdC5wdXNoKG4pKX0pLHR9X29yZGVyZWRGb3JFYWNoKGUsdCl7aWYoZSl7dGhpcy5fdXBkYXRlU2NvcmVzKGUpO2Zvcihjb25zdCBuIG9mIHRoaXMuX2VudHJpZXMpMDxuLl9zY29yZSYmdChuKX19X3VwZGF0ZVNjb3JlcyhlKXt2YXIgdCxuPXt1cmk6ZS51cmkudG9TdHJpbmcoKSxsYW5ndWFnZTplLmdldExhbmd1YWdlSWQoKX07aWYoIXRoaXMuX2xhc3RDYW5kaWRhdGV8fHRoaXMuX2xhc3RDYW5kaWRhdGUubGFuZ3VhZ2UhPT1uLmxhbmd1YWdlfHx0aGlzLl9sYXN0Q2FuZGlkYXRlLnVyaSE9PW4udXJpKXt0aGlzLl9sYXN0Q2FuZGlkYXRlPW47Zm9yKHZhciByIG9mIHRoaXMuX2VudHJpZXMpaWYoci5fc2NvcmU9ZnVuY3Rpb24gdChuLHIsaSxhKXtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT0wO2Zvcihjb25zdCBoIG9mIG4pe3ZhciBvPXQoaCxyLGksYSk7aWYoMTA9PT1vKXJldHVybiBvO28+ZSYmKGU9byl9cmV0dXJuIGV9aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBhPyIqIj09PW4/NTpuPT09aT8xMDowOjA7aWYobil7dmFye2xhbmd1YWdlOm4scGF0dGVybjpzLHNjaGVtZTplLGhhc0FjY2Vzc1RvQWxsTW9kZWxzOmx9PW47aWYoIWEmJiFsKXJldHVybiAwO2xldCB0PTA7aWYoZSlpZihlPT09ci5zY2hlbWUpdD0xMDtlbHNle2lmKCIqIiE9PWUpcmV0dXJuIDA7dD01fWlmKG4paWYobj09PWkpdD0xMDtlbHNle2lmKCIqIiE9PW4pcmV0dXJuIDA7dD1NYXRoLm1heCh0LDUpfWlmKHMpe2xldCBlO2lmKChlPSJzdHJpbmciPT10eXBlb2Ygcz9zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7YmFzZTpxZShzLmJhc2UpfSkpIT09ci5mc1BhdGgmJiF2bihlLHIuZnNQYXRoKSlyZXR1cm4gMDt0PTEwfXJldHVybiB0fXJldHVybiAwfShyLnNlbGVjdG9yLGUudXJpLGUuZ2V0TGFuZ3VhZ2VJZCgpLCEodD1lKS5pc1Rvb0xhcmdlRm9yU3luY2luZygpJiYhdC5pc0ZvclNpbXBsZVdpZGdldCksVG4oci5zZWxlY3RvcikmJjA8ci5fc2NvcmUpe2Zvcih2YXIgaSBvZiB0aGlzLl9lbnRyaWVzKWkuX3Njb3JlPTA7ci5fc2NvcmU9MWUzO2JyZWFrfXRoaXMuX2VudHJpZXMuc29ydChrbi5fY29tcGFyZUJ5U2NvcmVBbmRUaW1lKX19c3RhdGljIF9jb21wYXJlQnlTY29yZUFuZFRpbWUoZSx0KXtyZXR1cm4gZS5fc2NvcmU8dC5fc2NvcmU/MTplLl9zY29yZT50Ll9zY29yZT8tMTplLl90aW1lPHQuX3RpbWU/MTplLl90aW1lPnQuX3RpbWU/LTE6MH19dmFyIFNuPWZ1bmN0aW9uKGUsbyxzLGwpe3JldHVybiBuZXcocz1zfHxQcm9taXNlKShmdW5jdGlvbihuLHQpe2Z1bmN0aW9uIHIoZSl7dHJ5e2EobC5uZXh0KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBpKGUpe3RyeXthKGwudGhyb3coZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGEoZSl7dmFyIHQ7ZS5kb25lP24oZS52YWx1ZSk6KCh0PWUudmFsdWUpaW5zdGFuY2VvZiBzP3Q6bmV3IHMoZnVuY3Rpb24oZSl7ZSh0KX0pKS50aGVuKHIsaSl9YSgobD1sLmFwcGx5KGUsb3x8W10pKS5uZXh0KCkpfSl9O2NsYXNzIENuIGV4dGVuZHMgdntjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl9mYWN0b3J5PW4sdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9cmVzb2x2ZSgpe3JldHVybiBTbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSl9X2NyZWF0ZSgpe3JldHVybiBTbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZhY3RvcnkuY3JlYXRlVG9rZW5pemF0aW9uU3VwcG9ydCgpKTt0aGlzLl9pc1Jlc29sdmVkPSEwLGUmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLGUpKX0pfX1jbGFzcyBpe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLGkuX2FsbENvZGljb25zLnB1c2godGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH1zdGF0aWMgZ2V0QWxsKCl7cmV0dXJuIGkuX2FsbENvZGljb25zfX1pLl9hbGxDb2RpY29ucz1bXSxpLmFkZD1uZXcgaSgiYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYwIn0pLGkucGx1cz1uZXcgaSgicGx1cyIsaS5hZGQuZGVmaW5pdGlvbiksaS5naXN0TmV3PW5ldyBpKCJnaXN0LW5ldyIsaS5hZGQuZGVmaW5pdGlvbiksaS5yZXBvQ3JlYXRlPW5ldyBpKCJyZXBvLWNyZWF0ZSIsaS5hZGQuZGVmaW5pdGlvbiksaS5saWdodGJ1bGI9bmV3IGkoImxpZ2h0YnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLmxpZ2h0QnVsYj1uZXcgaSgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLnJlcG89bmV3IGkoInJlcG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5yZXBvRGVsZXRlPW5ldyBpKCJyZXBvLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxpLmdpc3RGb3JrPW5ldyBpKCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5yZXBvRm9ya2VkPW5ldyBpKCJyZXBvLWZvcmtlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MyJ9KSxpLmdpdFB1bGxSZXF1ZXN0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkuZ2l0UHVsbFJlcXVlc3RBYmFuZG9uZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkucmVjb3JkS2V5cz1uZXcgaSgicmVjb3JkLWtleXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS5rZXlib2FyZD1uZXcgaSgia2V5Ym9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS50YWc9bmV3IGkoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ0FkZD1uZXcgaSgidGFnLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ1JlbW92ZT1uZXcgaSgidGFnLXJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnBlcnNvbj1uZXcgaSgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRm9sbG93PW5ldyBpKCJwZXJzb24tZm9sbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uT3V0bGluZT1uZXcgaSgicGVyc29uLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5wZXJzb25GaWxsZWQ9bmV3IGkoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5naXRCcmFuY2g9bmV3IGkoImdpdC1icmFuY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5naXRCcmFuY2hDcmVhdGU9bmV3IGkoImdpdC1icmFuY2gtY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoRGVsZXRlPW5ldyBpKCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLnNvdXJjZUNvbnRyb2w9bmV3IGkoInNvdXJjZS1jb250cm9sIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkubWlycm9yPW5ldyBpKCJtaXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5taXJyb3JQdWJsaWM9bmV3IGkoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5zdGFyPW5ldyBpKCJzdGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckFkZD1uZXcgaSgic3Rhci1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRGVsZXRlPW5ldyBpKCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJFbXB0eT1uZXcgaSgic3Rhci1lbXB0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLmNvbW1lbnQ9bmV3IGkoImNvbW1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5jb21tZW50QWRkPW5ldyBpKCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxpLmFsZXJ0PW5ldyBpKCJhbGVydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YyJ9KSxpLndhcm5pbmc9bmV3IGkoIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS5zZWFyY2g9bmV3IGkoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLnNlYXJjaFNhdmU9bmV3IGkoInNlYXJjaC1zYXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTZkIn0pLGkubG9nT3V0PW5ldyBpKCJsb2ctb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkuc2lnbk91dD1uZXcgaSgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksaS5sb2dJbj1uZXcgaSgibG9nLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuc2lnbkluPW5ldyBpKCJzaWduLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuZXllPW5ldyBpKCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVVbndhdGNoPW5ldyBpKCJleWUtdW53YXRjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MCJ9KSxpLmV5ZVdhdGNoPW5ldyBpKCJleWUtd2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5jaXJjbGVGaWxsZWQ9bmV3IGkoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5wcmltaXRpdmVEb3Q9bmV3IGkoInByaW1pdGl2ZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5jbG9zZURpcnR5PW5ldyBpKCJjbG9zZS1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludD1uZXcgaSgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludERpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuZGVidWdIaW50PW5ldyBpKCJkZWJ1Zy1oaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlU3F1YXJlPW5ldyBpKCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLGkuZWRpdD1uZXcgaSgiZWRpdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLnBlbmNpbD1uZXcgaSgicGVuY2lsIix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLGkuaW5mbz1uZXcgaSgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxpLmlzc3VlT3BlbmVkPW5ldyBpKCJpc3N1ZS1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5naXN0UHJpdmF0ZT1uZXcgaSgiZ2lzdC1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuZ2l0Rm9ya1ByaXZhdGU9bmV3IGkoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5sb2NrPW5ldyBpKCJsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubWlycm9yUHJpdmF0ZT1uZXcgaSgibWlycm9yLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5jbG9zZT1uZXcgaSgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZW1vdmVDbG9zZT1uZXcgaSgicmVtb3ZlLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkueD1uZXcgaSgieCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLnJlcG9TeW5jPW5ldyBpKCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksaS5zeW5jPW5ldyBpKCJzeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuY2xvbmU9bmV3IGkoImNsb25lIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuZGVza3RvcERvd25sb2FkPW5ldyBpKCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuYmVha2VyPW5ldyBpKCJiZWFrZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzkifSksaS5taWNyb3Njb3BlPW5ldyBpKCJtaWNyb3Njb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkudm09bmV3IGkoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZGV2aWNlRGVza3RvcD1uZXcgaSgiZGV2aWNlLWRlc2t0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2EifSksaS5maWxlPW5ldyBpKCJmaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLGkuZmlsZVRleHQ9bmV3IGkoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLm1vcmU9bmV3IGkoIm1vcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5lbGxpcHNpcz1uZXcgaSgiZWxsaXBzaXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5rZWJhYkhvcml6b250YWw9bmV3IGkoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5tYWlsUmVwbHk9bmV3IGkoIm1haWwtcmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5yZXBseT1uZXcgaSgicmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5vcmdhbml6YXRpb249bmV3IGkoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbkZpbGxlZD1uZXcgaSgib3JnYW5pemF0aW9uLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IGkoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLGkubmV3RmlsZT1uZXcgaSgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5maWxlQWRkPW5ldyBpKCJmaWxlLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZiJ9KSxpLm5ld0ZvbGRlcj1uZXcgaSgibmV3LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLmZpbGVEaXJlY3RvcnlDcmVhdGU9bmV3IGkoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLnRyYXNoPW5ldyBpKCJ0cmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLnRyYXNoY2FuPW5ldyBpKCJ0cmFzaGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLmhpc3Rvcnk9bmV3IGkoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5jbG9jaz1uZXcgaSgiY2xvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5mb2xkZXI9bmV3IGkoImZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmZpbGVEaXJlY3Rvcnk9bmV3IGkoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkuc3ltYm9sRm9sZGVyPW5ldyBpKCJzeW1ib2wtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkubG9nb0dpdGh1Yj1uZXcgaSgibG9nby1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5tYXJrR2l0aHViPW5ldyBpKCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLmdpdGh1Yj1uZXcgaSgiZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkudGVybWluYWw9bmV3IGkoInRlcm1pbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuY29uc29sZT1uZXcgaSgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLnJlcGw9bmV3IGkoInJlcGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS56YXA9bmV3IGkoInphcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxpLnN5bWJvbEV2ZW50PW5ldyBpKCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5lcnJvcj1uZXcgaSgiZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhODcifSksaS5zdG9wPW5ldyBpKCJzdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkudmFyaWFibGU9bmV3IGkoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLGkuc3ltYm9sVmFyaWFibGU9bmV3IGkoInN5bWJvbC12YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLmFycmF5PW5ldyBpKCJhcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxpLnN5bWJvbEFycmF5PW5ldyBpKCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xNb2R1bGU9bmV3IGkoInN5bWJvbC1tb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xQYWNrYWdlPW5ldyBpKCJzeW1ib2wtcGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE5hbWVzcGFjZT1uZXcgaSgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE9iamVjdD1uZXcgaSgic3ltYm9sLW9iamVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE1ldGhvZD1uZXcgaSgic3ltYm9sLW1ldGhvZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEZ1bmN0aW9uPW5ldyBpKCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xDb25zdHJ1Y3Rvcj1uZXcgaSgic3ltYm9sLWNvbnN0cnVjdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQm9vbGVhbj1uZXcgaSgic3ltYm9sLWJvb2xlYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdWxsPW5ldyBpKCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxpLnN5bWJvbE51bWVyaWM9bmV3IGkoInN5bWJvbC1udW1lcmljIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sTnVtYmVyPW5ldyBpKCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sU3RydWN0dXJlPW5ldyBpKCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sU3RydWN0PW5ldyBpKCJzeW1ib2wtc3RydWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sUGFyYW1ldGVyPW5ldyBpKCJzeW1ib2wtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sVHlwZVBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sS2V5PW5ldyBpKCJzeW1ib2wta2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sVGV4dD1uZXcgaSgic3ltYm9sLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksaS5zeW1ib2xSZWZlcmVuY2U9bmV3IGkoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5nb1RvRmlsZT1uZXcgaSgiZ28tdG8tZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NCJ9KSxpLnN5bWJvbEVudW09bmV3IGkoInN5bWJvbC1lbnVtIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLGkuc3ltYm9sVmFsdWU9bmV3IGkoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFJ1bGVyPW5ldyBpKCJzeW1ib2wtcnVsZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5zeW1ib2xVbml0PW5ldyBpKCJzeW1ib2wtdW5pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxpLmFjdGl2YXRlQnJlYWtwb2ludHM9bmV3IGkoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLGkuYXJjaGl2ZT1uZXcgaSgiYXJjaGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OCJ9KSxpLmFycm93Qm90aD1uZXcgaSgiYXJyb3ctYm90aCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OSJ9KSxpLmFycm93RG93bj1uZXcgaSgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxpLmFycm93TGVmdD1uZXcgaSgiYXJyb3ctbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YiJ9KSxpLmFycm93UmlnaHQ9bmV3IGkoImFycm93LXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTljIn0pLGkuYXJyb3dTbWFsbERvd249bmV3IGkoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksaS5hcnJvd1NtYWxsTGVmdD1uZXcgaSgiYXJyb3ctc21hbGwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5ZSJ9KSxpLmFycm93U21hbGxSaWdodD1uZXcgaSgiYXJyb3ctc21hbGwtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWYifSksaS5hcnJvd1NtYWxsVXA9bmV3IGkoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLGkuYXJyb3dVcD1uZXcgaSgiYXJyb3ctdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTEifSksaS5iZWxsPW5ldyBpKCJiZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWEyIn0pLGkuYm9sZD1uZXcgaSgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxpLmJvb2s9bmV3IGkoImJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYTQifSksaS5ib29rbWFyaz1uZXcgaSgiYm9va21hcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTUifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYWE3In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGE9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLGkuZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZz1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ciLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5icmllZmNhc2U9bmV3IGkoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxpLmJyb2FkY2FzdD1uZXcgaSgiYnJvYWRjYXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWFkIn0pLGkuYnJvd3Nlcj1uZXcgaSgiYnJvd3NlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZSJ9KSxpLmJ1Zz1uZXcgaSgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLGkuY2FsZW5kYXI9bmV3IGkoImNhbGVuZGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWIwIn0pLGkuY2FzZVNlbnNpdGl2ZT1uZXcgaSgiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksaS5jaGVjaz1uZXcgaSgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksaS5jaGVja2xpc3Q9bmV3IGkoImNoZWNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMyJ9KSxpLmNoZXZyb25Eb3duPW5ldyBpKCJjaGV2cm9uLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYjQifSksaS5kcm9wRG93bkJ1dHRvbj1uZXcgaSgiZHJvcC1kb3duLWJ1dHRvbiIsaS5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxpLmNoZXZyb25MZWZ0PW5ldyBpKCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksaS5jaGV2cm9uUmlnaHQ9bmV3IGkoImNoZXZyb24tcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjYifSksaS5jaGV2cm9uVXA9bmV3IGkoImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksaS5jaHJvbWVDbG9zZT1uZXcgaSgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLGkuY2hyb21lTWF4aW1pemU9bmV3IGkoImNocm9tZS1tYXhpbWl6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOSJ9KSxpLmNocm9tZU1pbmltaXplPW5ldyBpKCJjaHJvbWUtbWluaW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmEifSksaS5jaHJvbWVSZXN0b3JlPW5ldyBpKCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxpLmNpcmNsZU91dGxpbmU9bmV3IGkoImNpcmNsZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuY2lyY2xlU2xhc2g9bmV3IGkoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxpLmNpcmN1aXRCb2FyZD1uZXcgaSgiY2lyY3VpdC1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZSJ9KSxpLmNsZWFyQWxsPW5ldyBpKCJjbGVhci1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmYifSksaS5jbGlwcHk9bmV3IGkoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxpLmNsb3NlQWxsPW5ldyBpKCJjbG9zZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzEifSksaS5jbG91ZERvd25sb2FkPW5ldyBpKCJjbG91ZC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMiJ9KSxpLmNsb3VkVXBsb2FkPW5ldyBpKCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksaS5jb2RlPW5ldyBpKCJjb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWM0In0pLGkuY29sbGFwc2VBbGw9bmV3IGkoImNvbGxhcHNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNSJ9KSxpLmNvbG9yTW9kZT1uZXcgaSgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxpLmNvbW1lbnREaXNjdXNzaW9uPW5ldyBpKCJjb21tZW50LWRpc2N1c3Npb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYzcifSksaS5jb21wYXJlQ2hhbmdlcz1uZXcgaSgiY29tcGFyZS1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuY3JlZGl0Q2FyZD1uZXcgaSgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksaS5kYXNoPW5ldyBpKCJkYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYWNjIn0pLGkuZGFzaGJvYXJkPW5ldyBpKCJkYXNoYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2QifSksaS5kYXRhYmFzZT1uZXcgaSgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksaS5kZWJ1Z0NvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjZiJ9KSxpLmRlYnVnRGlzY29ubmVjdD1uZXcgaSgiZGVidWctZGlzY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMCJ9KSxpLmRlYnVnUGF1c2U9bmV3IGkoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLGkuZGVidWdSZXN0YXJ0PW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQyIn0pLGkuZGVidWdTdGFydD1uZXcgaSgiZGVidWctc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDMifSksaS5kZWJ1Z1N0ZXBJbnRvPW5ldyBpKCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksaS5kZWJ1Z1N0ZXBPdXQ9bmV3IGkoImRlYnVnLXN0ZXAtb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQ1In0pLGkuZGVidWdTdGVwT3Zlcj1uZXcgaSgiZGVidWctc3RlcC1vdmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ2In0pLGkuZGVidWdTdG9wPW5ldyBpKCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLGkuZGVidWc9bmV3IGkoImRlYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ4In0pLGkuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IGkoImRldmljZS1jYW1lcmEtdmlkZW8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDkifSksaS5kZXZpY2VDYW1lcmE9bmV3IGkoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksaS5kZXZpY2VNb2JpbGU9bmV3IGkoImRldmljZS1tb2JpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGIifSksaS5kaWZmQWRkZWQ9bmV3IGkoImRpZmYtYWRkZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGMifSksaS5kaWZmSWdub3JlZD1uZXcgaSgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLGkuZGlmZk1vZGlmaWVkPW5ldyBpKCJkaWZmLW1vZGlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRlIn0pLGkuZGlmZlJlbW92ZWQ9bmV3IGkoImRpZmYtcmVtb3ZlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZiJ9KSxpLmRpZmZSZW5hbWVkPW5ldyBpKCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksaS5kaWZmPW5ldyBpKCJkaWZmIix7Zm9udENoYXJhY3RlcjoiXFxlYWUxIn0pLGkuZGlzY2FyZD1uZXcgaSgiZGlzY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMiJ9KSxpLmVkaXRvckxheW91dD1uZXcgaSgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxpLmVtcHR5V2luZG93PW5ldyBpKCJlbXB0eS13aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhZTQifSksaS5leGNsdWRlPW5ldyBpKCJleGNsdWRlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU1In0pLGkuZXh0ZW5zaW9ucz1uZXcgaSgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxpLmV5ZUNsb3NlZD1uZXcgaSgiZXllLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNyJ9KSxpLmZpbGVCaW5hcnk9bmV3IGkoImZpbGUtYmluYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU4In0pLGkuZmlsZUNvZGU9bmV3IGkoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxpLmZpbGVNZWRpYT1uZXcgaSgiZmlsZS1tZWRpYSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYSJ9KSxpLmZpbGVQZGY9bmV3IGkoImZpbGUtcGRmIix7Zm9udENoYXJhY3RlcjoiXFxlYWViIn0pLGkuZmlsZVN1Ym1vZHVsZT1uZXcgaSgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksaS5maWxlU3ltbGlua0RpcmVjdG9yeT1uZXcgaSgiZmlsZS1zeW1saW5rLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZCJ9KSxpLmZpbGVTeW1saW5rRmlsZT1uZXcgaSgiZmlsZS1zeW1saW5rLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWUifSksaS5maWxlWmlwPW5ldyBpKCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxpLmZpbGVzPW5ldyBpKCJmaWxlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMCJ9KSxpLmZpbHRlcj1uZXcgaSgiZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWYxIn0pLGkuZmxhbWU9bmV3IGkoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLGkuZm9sZERvd249bmV3IGkoImZvbGQtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMyJ9KSxpLmZvbGRVcD1uZXcgaSgiZm9sZC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNCJ9KSxpLmZvbGQ9bmV3IGkoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksaS5mb2xkZXJBY3RpdmU9bmV3IGkoImZvbGRlci1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjYifSksaS5mb2xkZXJPcGVuZWQ9bmV3IGkoImZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjcifSksaS5nZWFyPW5ldyBpKCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLGkuZ2lmdD1uZXcgaSgiZ2lmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOSJ9KSxpLmdpc3RTZWNyZXQ9bmV3IGkoImdpc3Qtc2VjcmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZhIn0pLGkuZ2lzdD1uZXcgaSgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxpLmdpdENvbW1pdD1uZXcgaSgiZ2l0LWNvbW1pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYyJ9KSxpLmdpdENvbXBhcmU9bmV3IGkoImdpdC1jb21wYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuZ2l0TWVyZ2U9bmV3IGkoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxpLmdpdGh1YkFjdGlvbj1uZXcgaSgiZ2l0aHViLWFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZiJ9KSxpLmdpdGh1YkFsdD1uZXcgaSgiZ2l0aHViLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMCJ9KSxpLmdsb2JlPW5ldyBpKCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxpLmdyYWJiZXI9bmV3IGkoImdyYWJiZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMDIifSksaS5ncmFwaD1uZXcgaSgiZ3JhcGgiLHtmb250Q2hhcmFjdGVyOiJcXGViMDMifSksaS5ncmlwcGVyPW5ldyBpKCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLGkuaGVhcnQ9bmV3IGkoImhlYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA1In0pLGkuaG9tZT1uZXcgaSgiaG9tZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNiJ9KSxpLmhvcml6b250YWxSdWxlPW5ldyBpKCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksaS5odWJvdD1uZXcgaSgiaHVib3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMDgifSksaS5pbmJveD1uZXcgaSgiaW5ib3giLHtmb250Q2hhcmFjdGVyOiJcXGViMDkifSksaS5pc3N1ZUNsb3NlZD1uZXcgaSgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLGkuaXNzdWVSZW9wZW5lZD1uZXcgaSgiaXNzdWUtcmVvcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMGIifSksaS5pc3N1ZXM9bmV3IGkoImlzc3VlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYyJ9KSxpLml0YWxpYz1uZXcgaSgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLGkuamVyc2V5PW5ldyBpKCJqZXJzZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMGUifSksaS5qc29uPW5ldyBpKCJqc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYjBmIn0pLGkua2ViYWJWZXJ0aWNhbD1uZXcgaSgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksaS5rZXk9bmV3IGkoImtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMSJ9KSxpLmxhdz1uZXcgaSgibGF3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEyIn0pLGkubGlnaHRidWxiQXV0b2ZpeD1uZXcgaSgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksaS5saW5rRXh0ZXJuYWw9bmV3IGkoImxpbmstZXh0ZXJuYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTQifSksaS5saW5rPW5ldyBpKCJsaW5rIix7Zm9udENoYXJhY3RlcjoiXFxlYjE1In0pLGkubGlzdE9yZGVyZWQ9bmV3IGkoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxpLmxpc3RVbm9yZGVyZWQ9bmV3IGkoImxpc3QtdW5vcmRlcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjE3In0pLGkubGl2ZVNoYXJlPW5ldyBpKCJsaXZlLXNoYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYjE4In0pLGkubG9hZGluZz1uZXcgaSgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxpLmxvY2F0aW9uPW5ldyBpKCJsb2NhdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYSJ9KSxpLm1haWxSZWFkPW5ldyBpKCJtYWlsLXJlYWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMWIifSksaS5tYWlsPW5ldyBpKCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLGkubWFya2Rvd249bmV3IGkoIm1hcmtkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjFkIn0pLGkubWVnYXBob25lPW5ldyBpKCJtZWdhcGhvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMWUifSksaS5tZW50aW9uPW5ldyBpKCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLGkubWlsZXN0b25lPW5ldyBpKCJtaWxlc3RvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjAifSksaS5tb3J0YXJCb2FyZD1uZXcgaSgibW9ydGFyLWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYjIxIn0pLGkubW92ZT1uZXcgaSgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxpLm11bHRpcGxlV2luZG93cz1uZXcgaSgibXVsdGlwbGUtd2luZG93cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMyJ9KSxpLm11dGU9bmV3IGkoIm11dGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjQifSksaS5ub05ld2xpbmU9bmV3IGkoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksaS5ub3RlPW5ldyBpKCJub3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI2In0pLGkub2N0b2ZhY2U9bmV3IGkoIm9jdG9mYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI3In0pLGkub3BlblByZXZpZXc9bmV3IGkoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxpLnBhY2thZ2VfPW5ldyBpKCJwYWNrYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI5In0pLGkucGFpbnRjYW49bmV3IGkoInBhaW50Y2FuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJhIn0pLGkucGluPW5ldyBpKCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksaS5wbGF5PW5ldyBpKCJwbGF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucnVuPW5ldyBpKCJydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksaS5wbHVnPW5ldyBpKCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLGkucHJlc2VydmVDYXNlPW5ldyBpKCJwcmVzZXJ2ZS1jYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjJlIn0pLGkucHJldmlldz1uZXcgaSgicHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZiJ9KSxpLnByb2plY3Q9bmV3IGkoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksaS5wdWxzZT1uZXcgaSgicHVsc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMzEifSksaS5xdWVzdGlvbj1uZXcgaSgicXVlc3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMzIifSksaS5xdW90ZT1uZXcgaSgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksaS5yYWRpb1Rvd2VyPW5ldyBpKCJyYWRpby10b3dlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNCJ9KSxpLnJlYWN0aW9ucz1uZXcgaSgicmVhY3Rpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYjM1In0pLGkucmVmZXJlbmNlcz1uZXcgaSgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxpLnJlZnJlc2g9bmV3IGkoInJlZnJlc2giLHtmb250Q2hhcmFjdGVyOiJcXGViMzcifSksaS5yZWdleD1uZXcgaSgicmVnZXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMzgifSksaS5yZW1vdGVFeHBsb3Jlcj1uZXcgaSgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLGkucmVtb3RlPW5ldyBpKCJyZW1vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2EifSksaS5yZW1vdmU9bmV3IGkoInJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYiJ9KSxpLnJlcGxhY2VBbGw9bmV3IGkoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLGkucmVwbGFjZT1uZXcgaSgicmVwbGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZCJ9KSxpLnJlcG9DbG9uZT1uZXcgaSgicmVwby1jbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZSJ9KSxpLnJlcG9Gb3JjZVB1c2g9bmV3IGkoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxpLnJlcG9QdWxsPW5ldyBpKCJyZXBvLXB1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDAifSksaS5yZXBvUHVzaD1uZXcgaSgicmVwby1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjQxIn0pLGkucmVwb3J0PW5ldyBpKCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksaS5yZXF1ZXN0Q2hhbmdlcz1uZXcgaSgicmVxdWVzdC1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQzIn0pLGkucm9ja2V0PW5ldyBpKCJyb2NrZXQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDQifSksaS5yb290Rm9sZGVyT3BlbmVkPW5ldyBpKCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksaS5yb290Rm9sZGVyPW5ldyBpKCJyb290LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NiJ9KSxpLnJzcz1uZXcgaSgicnNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ3In0pLGkucnVieT1uZXcgaSgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxpLnNhdmVBbGw9bmV3IGkoInNhdmUtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ5In0pLGkuc2F2ZUFzPW5ldyBpKCJzYXZlLWFzIix7Zm9udENoYXJhY3RlcjoiXFxlYjRhIn0pLGkuc2F2ZT1uZXcgaSgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxpLnNjcmVlbkZ1bGw9bmV3IGkoInNjcmVlbi1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRjIn0pLGkuc2NyZWVuTm9ybWFsPW5ldyBpKCJzY3JlZW4tbm9ybWFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRkIn0pLGkuc2VhcmNoU3RvcD1uZXcgaSgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksaS5zZXJ2ZXI9bmV3IGkoInNlcnZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MCJ9KSxpLnNldHRpbmdzR2Vhcj1uZXcgaSgic2V0dGluZ3MtZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MSJ9KSxpLnNldHRpbmdzPW5ldyBpKCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxpLnNoaWVsZD1uZXcgaSgic2hpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjUzIn0pLGkuc21pbGV5PW5ldyBpKCJzbWlsZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViNTQifSksaS5zb3J0UHJlY2VkZW5jZT1uZXcgaSgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLGkuc3BsaXRIb3Jpem9udGFsPW5ldyBpKCJzcGxpdC1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU2In0pLGkuc3BsaXRWZXJ0aWNhbD1uZXcgaSgic3BsaXQtdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTcifSksaS5zcXVpcnJlbD1uZXcgaSgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksaS5zdGFyRnVsbD1uZXcgaSgic3Rhci1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU5In0pLGkuc3RhckhhbGY9bmV3IGkoInN0YXItaGFsZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YSJ9KSxpLnN5bWJvbENsYXNzPW5ldyBpKCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksaS5zeW1ib2xDb2xvcj1uZXcgaSgic3ltYm9sLWNvbG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjVjIn0pLGkuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IGkoInN5bWJvbC1jdXN0b21jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbENvbnN0YW50PW5ldyBpKCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksaS5zeW1ib2xFbnVtTWVtYmVyPW5ldyBpKCJzeW1ib2wtZW51bS1tZW1iZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNWUifSksaS5zeW1ib2xGaWVsZD1uZXcgaSgic3ltYm9sLWZpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjVmIn0pLGkuc3ltYm9sRmlsZT1uZXcgaSgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksaS5zeW1ib2xJbnRlcmZhY2U9bmV3IGkoInN5bWJvbC1pbnRlcmZhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNjEifSksaS5zeW1ib2xLZXl3b3JkPW5ldyBpKCJzeW1ib2wta2V5d29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MiJ9KSxpLnN5bWJvbE1pc2M9bmV3IGkoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLGkuc3ltYm9sT3BlcmF0b3I9bmV3IGkoInN5bWJvbC1vcGVyYXRvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NCJ9KSxpLnN5bWJvbFByb3BlcnR5PW5ldyBpKCJzeW1ib2wtcHJvcGVydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2g9bmV3IGkoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLndyZW5jaFN1YmFjdGlvbj1uZXcgaSgid3JlbmNoLXN1YmFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLnN5bWJvbFNuaXBwZXQ9bmV3IGkoInN5bWJvbC1zbmlwcGV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY2In0pLGkudGFza2xpc3Q9bmV3IGkoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLGkudGVsZXNjb3BlPW5ldyBpKCJ0ZWxlc2NvcGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjgifSksaS50ZXh0U2l6ZT1uZXcgaSgidGV4dC1zaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYjY5In0pLGkudGhyZWVCYXJzPW5ldyBpKCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLGkudGh1bWJzZG93bj1uZXcgaSgidGh1bWJzZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YiJ9KSxpLnRodW1ic3VwPW5ldyBpKCJ0aHVtYnN1cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YyJ9KSxpLnRvb2xzPW5ldyBpKCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxpLnRyaWFuZ2xlRG93bj1uZXcgaSgidHJpYW5nbGUtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZSJ9KSxpLnRyaWFuZ2xlTGVmdD1uZXcgaSgidHJpYW5nbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZiJ9KSxpLnRyaWFuZ2xlUmlnaHQ9bmV3IGkoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLGkudHJpYW5nbGVVcD1uZXcgaSgidHJpYW5nbGUtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNzEifSksaS50d2l0dGVyPW5ldyBpKCJ0d2l0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjcyIn0pLGkudW5mb2xkPW5ldyBpKCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksaS51bmxvY2s9bmV3IGkoInVubG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NCJ9KSxpLnVubXV0ZT1uZXcgaSgidW5tdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc1In0pLGkudW52ZXJpZmllZD1uZXcgaSgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxpLnZlcmlmaWVkPW5ldyBpKCJ2ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NyJ9KSxpLnZlcnNpb25zPW5ldyBpKCJ2ZXJzaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OCJ9KSxpLnZtQWN0aXZlPW5ldyBpKCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksaS52bU91dGxpbmU9bmV3IGkoInZtLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViN2EifSksaS52bVJ1bm5pbmc9bmV3IGkoInZtLXJ1bm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViN2IifSksaS53YXRjaD1uZXcgaSgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksaS53aGl0ZXNwYWNlPW5ldyBpKCJ3aGl0ZXNwYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjdkIn0pLGkud2hvbGVXb3JkPW5ldyBpKCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLGkud2luZG93PW5ldyBpKCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksaS53b3JkV3JhcD1uZXcgaSgid29yZC13cmFwIix7Zm9udENoYXJhY3RlcjoiXFxlYjgwIn0pLGkuem9vbUluPW5ldyBpKCJ6b29tLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYjgxIn0pLGkuem9vbU91dD1uZXcgaSgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksaS5saXN0RmlsdGVyPW5ldyBpKCJsaXN0LWZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MyJ9KSxpLmxpc3RGbGF0PW5ldyBpKCJsaXN0LWZsYXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODQifSksaS5saXN0U2VsZWN0aW9uPW5ldyBpKCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLnNlbGVjdGlvbj1uZXcgaSgic2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLGkubGlzdFRyZWU9bmV3IGkoImxpc3QtdHJlZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NiJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb249bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODgifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdTdGFja2ZyYW1lQWN0aXZlPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxpLmRlYnVnU3RhY2tmcmFtZURvdD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksaS5kZWJ1Z1N0YWNrZnJhbWU9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z1N0YWNrZnJhbWVGb2N1c2VkPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWZvY3VzZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YyJ9KSxpLnN5bWJvbFN0cmluZz1uZXcgaSgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxpLmRlYnVnUmV2ZXJzZUNvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1yZXZlcnNlLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYjhlIn0pLGkuZGVidWdTdGVwQmFjaz1uZXcgaSgiZGVidWctc3RlcC1iYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjhmIn0pLGkuZGVidWdSZXN0YXJ0RnJhbWU9bmV3IGkoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksaS5jYWxsSW5jb21pbmc9bmV3IGkoImNhbGwtaW5jb21pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTIifSksaS5jYWxsT3V0Z29pbmc9bmV3IGkoImNhbGwtb3V0Z29pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTMifSksaS5tZW51PW5ldyBpKCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLGkuZXhwYW5kQWxsPW5ldyBpKCJleHBhbmQtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjk1In0pLGkuZmVlZGJhY2s9bmV3IGkoImZlZWRiYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjk2In0pLGkuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLGkudW5ncm91cEJ5UmVmVHlwZT1uZXcgaSgidW5ncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5OCJ9KSxpLmFjY291bnQ9bmV3IGkoImFjY291bnQiLHtmb250Q2hhcmFjdGVyOiJcXGViOTkifSksaS5iZWxsRG90PW5ldyBpKCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxpLmRlYnVnQ29uc29sZT1uZXcgaSgiZGVidWctY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YiJ9KSxpLmxpYnJhcnk9bmV3IGkoImxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViOWMifSksaS5vdXRwdXQ9bmV3IGkoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxpLnJ1bkFsbD1uZXcgaSgicnVuLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZSJ9KSxpLnN5bmNJZ25vcmVkPW5ldyBpKCJzeW5jLWlnbm9yZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWYifSksaS5waW5uZWQ9bmV3IGkoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxpLmdpdGh1YkludmVydGVkPW5ldyBpKCJnaXRodWItaW52ZXJ0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTEifSksaS5kZWJ1Z0FsdD1uZXcgaSgiZGVidWctYWx0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjkxIn0pLGkuc2VydmVyUHJvY2Vzcz1uZXcgaSgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksaS5zZXJ2ZXJFbnZpcm9ubWVudD1uZXcgaSgic2VydmVyLWVudmlyb25tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYmEzIn0pLGkucGFzcz1uZXcgaSgicGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLnN0b3BDaXJjbGU9bmV3IGkoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLGkucGxheUNpcmNsZT1uZXcgaSgicGxheS1jaXJjbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYTYifSksaS5yZWNvcmQ9bmV3IGkoInJlY29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNyJ9KSxpLmRlYnVnQWx0U21hbGw9bmV3IGkoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxpLnZtQ29ubmVjdD1uZXcgaSgidm0tY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOSJ9KSxpLmNsb3VkPW5ldyBpKCJjbG91ZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYSJ9KSxpLm1lcmdlPW5ldyBpKCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxpLmV4cG9ydEljb249bmV3IGkoImV4cG9ydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYyJ9KSxpLmdyYXBoTGVmdD1uZXcgaSgiZ3JhcGgtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZCJ9KSxpLm1hZ25ldD1uZXcgaSgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLGkubm90ZWJvb2s9bmV3IGkoIm5vdGVib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYmFmIn0pLGkucmVkbz1uZXcgaSgicmVkbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMCJ9KSxpLmNoZWNrQWxsPW5ldyBpKCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksaS5waW5uZWREaXJ0eT1uZXcgaSgicGlubmVkLWRpcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmIyIn0pLGkucGFzc0ZpbGxlZD1uZXcgaSgicGFzcy1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjMifSksaS5jaXJjbGVMYXJnZUZpbGxlZD1uZXcgaSgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxpLmNpcmNsZUxhcmdlT3V0bGluZT1uZXcgaSgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjUifSksaS5jb21iaW5lPW5ldyBpKCJjb21iaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkuZ2F0aGVyPW5ldyBpKCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksaS50YWJsZT1uZXcgaSgidGFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjcifSksaS52YXJpYWJsZUdyb3VwPW5ldyBpKCJ2YXJpYWJsZS1ncm91cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOCJ9KSxpLnR5cGVIaWVyYXJjaHk9bmV3IGkoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLGkudHlwZUhpZXJhcmNoeVN1Yj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3ViIix7Zm9udENoYXJhY3RlcjoiXFxlYmJhIn0pLGkudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBpKCJ0eXBlLWhpZXJhcmNoeS1zdXBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYiJ9KSxpLmdpdFB1bGxSZXF1ZXN0Q3JlYXRlPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxpLnJ1bkFib3ZlPW5ldyBpKCJydW4tYWJvdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmQifSksaS5ydW5CZWxvdz1uZXcgaSgicnVuLWJlbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYmJlIn0pLGkubm90ZWJvb2tUZW1wbGF0ZT1uZXcgaSgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksaS5kZWJ1Z1JlcnVuPW5ldyBpKCJkZWJ1Zy1yZXJ1biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMCJ9KSxpLndvcmtzcGFjZVRydXN0ZWQ9bmV3IGkoIndvcmtzcGFjZS10cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMxIn0pLGkud29ya3NwYWNlVW50cnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLGkud29ya3NwYWNlVW5zcGVjaWZpZWQ9bmV3IGkoIndvcmtzcGFjZS11bnNwZWNpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMyJ9KSxpLnRlcm1pbmFsQ21kPW5ldyBpKCJ0ZXJtaW5hbC1jbWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzQifSksaS50ZXJtaW5hbERlYmlhbj1uZXcgaSgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLGkudGVybWluYWxMaW51eD1uZXcgaSgidGVybWluYWwtbGludXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzYifSksaS50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IGkoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYzcifSksaS50ZXJtaW5hbFRtdXg9bmV3IGkoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksaS50ZXJtaW5hbFVidW50dT1uZXcgaSgidGVybWluYWwtdWJ1bnR1Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM5In0pLGkudGVybWluYWxCYXNoPW5ldyBpKCJ0ZXJtaW5hbC1iYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYmNhIn0pLGkuYXJyb3dTd2FwPW5ldyBpKCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLGkuY29weT1uZXcgaSgiY29weSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYyJ9KSxpLnBlcnNvbkFkZD1uZXcgaSgicGVyc29uLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZCJ9KSxpLmZpbHRlckZpbGxlZD1uZXcgaSgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxpLndhbmQ9bmV3IGkoIndhbmQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2YifSksaS5kZWJ1Z0xpbmVCeUxpbmU9bmV3IGkoImRlYnVnLWxpbmUtYnktbGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMCJ9KSxpLmluc3BlY3Q9bmV3IGkoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksaS5sYXllcnM9bmV3IGkoImxheWVycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMiJ9KSxpLmxheWVyc0RvdD1uZXcgaSgibGF5ZXJzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMyJ9KSxpLmxheWVyc0FjdGl2ZT1uZXcgaSgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxpLmNvbXBhc3M9bmV3IGkoImNvbXBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViZDUifSksaS5jb21wYXNzRG90PW5ldyBpKCJjb21wYXNzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNiJ9KSxpLmNvbXBhc3NBY3RpdmU9bmV3IGkoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLGkuYXp1cmU9bmV3IGkoImF6dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ4In0pLGkuaXNzdWVEcmFmdD1uZXcgaSgiaXNzdWUtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZDkifSksaS5naXRQdWxsUmVxdWVzdENsb3NlZD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksaS5naXRQdWxsUmVxdWVzdERyYWZ0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRiIn0pLGkuZGVidWdBbGw9bmV3IGkoImRlYnVnLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYyJ9KSxpLmRlYnVnQ292ZXJhZ2U9bmV3IGkoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLGkucnVuRXJyb3JzPW5ldyBpKCJydW4tZXJyb3JzIix7Zm9udENoYXJhY3RlcjoiXFxlYmRlIn0pLGkuZm9sZGVyTGlicmFyeT1uZXcgaSgiZm9sZGVyLWxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZGYifSksaS5kZWJ1Z0NvbnRpbnVlU21hbGw9bmV3IGkoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLGkuYmVha2VyU3RvcD1uZXcgaSgiYmVha2VyLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViZTEifSksaS5ncmFwaExpbmU9bmV3IGkoImdyYXBoLWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZTIifSksaS5ncmFwaFNjYXR0ZXI9bmV3IGkoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksaS5waWVDaGFydD1uZXcgaSgicGllLWNoYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU0In0pLGkuYnJhY2tldD1uZXcgaSgiYnJhY2tldCIsaS5qc29uLmRlZmluaXRpb24pLGkuYnJhY2tldERvdD1uZXcgaSgiYnJhY2tldC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZTUifSksaS5icmFja2V0RXJyb3I9bmV3IGkoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksaS5sb2NrU21hbGw9bmV3IGkoImxvY2stc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZTcifSksaS5henVyZURldm9wcz1uZXcgaSgiYXp1cmUtZGV2b3BzIix7Zm9udENoYXJhY3RlcjoiXFxlYmU4In0pLGkudmVyaWZpZWRGaWxsZWQ9bmV3IGkoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxpLm5ld0xpbmU9bmV3IGkoIm5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZWEifSksaS5sYXlvdXQ9bmV3IGkoImxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYiJ9KSxpLmxheW91dEFjdGl2aXR5YmFyTGVmdD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksaS5sYXlvdXRBY3Rpdml0eWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWQifSksaS5sYXlvdXRQYW5lbExlZnQ9bmV3IGkoImxheW91dC1wYW5lbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVlIn0pLGkubGF5b3V0UGFuZWxDZW50ZXI9bmV3IGkoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksaS5sYXlvdXRQYW5lbEp1c3RpZnk9bmV3IGkoImxheW91dC1wYW5lbC1qdXN0aWZ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYwIn0pLGkubGF5b3V0UGFuZWxSaWdodD1uZXcgaSgibGF5b3V0LXBhbmVsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYxIn0pLGkubGF5b3V0UGFuZWw9bmV3IGkoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxpLmxheW91dFNpZGViYXJMZWZ0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYzIn0pLGkubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNCJ9KSxpLmxheW91dFN0YXR1c2Jhcj1uZXcgaSgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxpLmxheW91dE1lbnViYXI9bmV3IGkoImxheW91dC1tZW51YmFyIix7Zm9udENoYXJhY3RlcjoiXFxlYmY2In0pLGkubGF5b3V0Q2VudGVyZWQ9bmV3IGkoImxheW91dC1jZW50ZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNyJ9KSxpLnRhcmdldD1uZXcgaSgidGFyZ2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY4In0pLGkuZGlhbG9nRXJyb3I9bmV3IGkoImRpYWxvZy1lcnJvciIsaS5lcnJvci5kZWZpbml0aW9uKSxpLmRpYWxvZ1dhcm5pbmc9bmV3IGkoImRpYWxvZy13YXJuaW5nIixpLndhcm5pbmcuZGVmaW5pdGlvbiksaS5kaWFsb2dJbmZvPW5ldyBpKCJkaWFsb2ctaW5mbyIsaS5pbmZvLmRlZmluaXRpb24pLGkuZGlhbG9nQ2xvc2U9bmV3IGkoImRpYWxvZy1jbG9zZSIsaS5jbG9zZS5kZWZpbml0aW9uKSxpLnRyZWVJdGVtRXhwYW5kZWQ9bmV3IGkoInRyZWUtaXRlbS1leHBhbmRlZCIsaS5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJPblR5cGVPbj1uZXcgaSgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsaS5saXN0RmlsdGVyLmRlZmluaXRpb24pLGkudHJlZUZpbHRlck9uVHlwZU9mZj1uZXcgaSgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLGkubGlzdFNlbGVjdGlvbi5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJDbGVhcj1uZXcgaSgidHJlZS1maWx0ZXItY2xlYXIiLGkuY2xvc2UuZGVmaW5pdGlvbiksaS50cmVlSXRlbUxvYWRpbmc9bmV3IGkoInRyZWUtaXRlbS1sb2FkaW5nIixpLmxvYWRpbmcuZGVmaW5pdGlvbiksaS5tZW51U2VsZWN0aW9uPW5ldyBpKCJtZW51LXNlbGVjdGlvbiIsaS5jaGVjay5kZWZpbml0aW9uKSxpLm1lbnVTdWJtZW51PW5ldyBpKCJtZW51LXN1Ym1lbnUiLGkuY2hldnJvblJpZ2h0LmRlZmluaXRpb24pLGkubWVudUJhck1vcmU9bmV3IGkoIm1lbnViYXItbW9yZSIsaS5tb3JlLmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uTGVmdD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixpLnRyaWFuZ2xlTGVmdC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvblJpZ2h0PW5ldyBpKCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixpLnRyaWFuZ2xlUmlnaHQuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25VcD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsaS50cmlhbmdsZVVwLmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uRG93bj1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixpLnRyaWFuZ2xlRG93bi5kZWZpbml0aW9uKSxpLnRvb2xCYXJNb3JlPW5ldyBpKCJ0b29sYmFyLW1vcmUiLGkubW9yZS5kZWZpbml0aW9uKSxpLnF1aWNrSW5wdXRCYWNrPW5ldyBpKCJxdWljay1pbnB1dC1iYWNrIixpLmFycm93TGVmdC5kZWZpbml0aW9uKTt7dmFyIGU7KGU9cj1yfHx7fSkuaWNvbk5hbWVTZWdtZW50PSJbQS1aYS16MC05XSsiLGUuaWNvbk5hbWVFeHByZXNzaW9uPSJbQS1aYS16MC05LV0rIixlLmljb25Nb2RpZmllckV4cHJlc3Npb249In5bQS1aYS16XSsiLGUuaWNvbk5hbWVDaGFyYWN0ZXI9IltBLVphLXowLTl+LV0iO2NvbnN0IFFhPW5ldyBSZWdFeHAoYF4oJHtlLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7ZS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIHhuKGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtlPVFhLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIHhuKGkuZXJyb3IpO2xldFssdCxuXT1lO2NvbnN0IHI9WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiBuJiZyLnB1c2goImNvZGljb24tbW9kaWZpZXItIituLnN1YnN0cigxKSkscn1lLmFzQ2xhc3NOYW1lQXJyYXk9eG4sZS5hc0NsYXNzTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4geG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK3huKGUpLmpvaW4oIi4iKX19Y2xhc3MgTG57Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1ufXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgQW57Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIEVue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fZW5jb2RlZFRva2VuaXphdGlvblJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19e1U9e307Y29uc3QgWmE9bmV3IE1hcCxhPShaYS5zZXQoMCxpLnN5bWJvbE1ldGhvZCksWmEuc2V0KDEsaS5zeW1ib2xGdW5jdGlvbiksWmEuc2V0KDIsaS5zeW1ib2xDb25zdHJ1Y3RvciksWmEuc2V0KDMsaS5zeW1ib2xGaWVsZCksWmEuc2V0KDQsaS5zeW1ib2xWYXJpYWJsZSksWmEuc2V0KDUsaS5zeW1ib2xDbGFzcyksWmEuc2V0KDYsaS5zeW1ib2xTdHJ1Y3QpLFphLnNldCg3LGkuc3ltYm9sSW50ZXJmYWNlKSxaYS5zZXQoOCxpLnN5bWJvbE1vZHVsZSksWmEuc2V0KDksaS5zeW1ib2xQcm9wZXJ0eSksWmEuc2V0KDEwLGkuc3ltYm9sRXZlbnQpLFphLnNldCgxMSxpLnN5bWJvbE9wZXJhdG9yKSxaYS5zZXQoMTIsaS5zeW1ib2xVbml0KSxaYS5zZXQoMTMsaS5zeW1ib2xWYWx1ZSksWmEuc2V0KDE1LGkuc3ltYm9sRW51bSksWmEuc2V0KDE0LGkuc3ltYm9sQ29uc3RhbnQpLFphLnNldCgxNSxpLnN5bWJvbEVudW0pLFphLnNldCgxNixpLnN5bWJvbEVudW1NZW1iZXIpLFphLnNldCgxNyxpLnN5bWJvbEtleXdvcmQpLFphLnNldCgyNyxpLnN5bWJvbFNuaXBwZXQpLFphLnNldCgxOCxpLnN5bWJvbFRleHQpLFphLnNldCgxOSxpLnN5bWJvbENvbG9yKSxaYS5zZXQoMjAsaS5zeW1ib2xGaWxlKSxaYS5zZXQoMjEsaS5zeW1ib2xSZWZlcmVuY2UpLFphLnNldCgyMixpLnN5bWJvbEN1c3RvbUNvbG9yKSxaYS5zZXQoMjMsaS5zeW1ib2xGb2xkZXIpLFphLnNldCgyNCxpLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLFphLnNldCgyNSxpLmFjY291bnQpLFphLnNldCgyNixpLmlzc3VlcyksVS50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9WmEuZ2V0KGUpO3JldHVybiB0fHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9LG5ldyBNYXApO2Euc2V0KCJtZXRob2QiLDApLGEuc2V0KCJmdW5jdGlvbiIsMSksYS5zZXQoImNvbnN0cnVjdG9yIiwyKSxhLnNldCgiZmllbGQiLDMpLGEuc2V0KCJ2YXJpYWJsZSIsNCksYS5zZXQoImNsYXNzIiw1KSxhLnNldCgic3RydWN0Iiw2KSxhLnNldCgiaW50ZXJmYWNlIiw3KSxhLnNldCgibW9kdWxlIiw4KSxhLnNldCgicHJvcGVydHkiLDkpLGEuc2V0KCJldmVudCIsMTApLGEuc2V0KCJvcGVyYXRvciIsMTEpLGEuc2V0KCJ1bml0IiwxMiksYS5zZXQoInZhbHVlIiwxMyksYS5zZXQoImNvbnN0YW50IiwxNCksYS5zZXQoImVudW0iLDE1KSxhLnNldCgiZW51bS1tZW1iZXIiLDE2KSxhLnNldCgiZW51bU1lbWJlciIsMTYpLGEuc2V0KCJrZXl3b3JkIiwxNyksYS5zZXQoInNuaXBwZXQiLDI3KSxhLnNldCgidGV4dCIsMTgpLGEuc2V0KCJjb2xvciIsMTkpLGEuc2V0KCJmaWxlIiwyMCksYS5zZXQoInJlZmVyZW5jZSIsMjEpLGEuc2V0KCJjdXN0b21jb2xvciIsMjIpLGEuc2V0KCJmb2xkZXIiLDIzKSxhLnNldCgidHlwZS1wYXJhbWV0ZXIiLDI0KSxhLnNldCgidHlwZVBhcmFtZXRlciIsMjQpLGEuc2V0KCJhY2NvdW50IiwyNSksYS5zZXQoImlzc3VlIiwyNiksVS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bGV0IG49YS5nZXQoZSk7cmV0dXJuIG49dm9pZCAwIT09bnx8dD9uOjl9fXt2YXIgTj17fTtjb25zdCBlbz1uZXcgTWFwO2VvLnNldCgwLGkuc3ltYm9sRmlsZSksZW8uc2V0KDEsaS5zeW1ib2xNb2R1bGUpLGVvLnNldCgyLGkuc3ltYm9sTmFtZXNwYWNlKSxlby5zZXQoMyxpLnN5bWJvbFBhY2thZ2UpLGVvLnNldCg0LGkuc3ltYm9sQ2xhc3MpLGVvLnNldCg1LGkuc3ltYm9sTWV0aG9kKSxlby5zZXQoNixpLnN5bWJvbFByb3BlcnR5KSxlby5zZXQoNyxpLnN5bWJvbEZpZWxkKSxlby5zZXQoOCxpLnN5bWJvbENvbnN0cnVjdG9yKSxlby5zZXQoOSxpLnN5bWJvbEVudW0pLGVvLnNldCgxMCxpLnN5bWJvbEludGVyZmFjZSksZW8uc2V0KDExLGkuc3ltYm9sRnVuY3Rpb24pLGVvLnNldCgxMixpLnN5bWJvbFZhcmlhYmxlKSxlby5zZXQoMTMsaS5zeW1ib2xDb25zdGFudCksZW8uc2V0KDE0LGkuc3ltYm9sU3RyaW5nKSxlby5zZXQoMTUsaS5zeW1ib2xOdW1iZXIpLGVvLnNldCgxNixpLnN5bWJvbEJvb2xlYW4pLGVvLnNldCgxNyxpLnN5bWJvbEFycmF5KSxlby5zZXQoMTgsaS5zeW1ib2xPYmplY3QpLGVvLnNldCgxOSxpLnN5bWJvbEtleSksZW8uc2V0KDIwLGkuc3ltYm9sTnVsbCksZW8uc2V0KDIxLGkuc3ltYm9sRW51bU1lbWJlciksZW8uc2V0KDIyLGkuc3ltYm9sU3RydWN0KSxlby5zZXQoMjMsaS5zeW1ib2xFdmVudCksZW8uc2V0KDI0LGkuc3ltYm9sT3BlcmF0b3IpLGVvLnNldCgyNSxpLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLE4udG9JY29uPWZ1bmN0aW9uKGUpe2xldCB0PWVvLmdldChlKTtyZXR1cm4gdHx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLHQ9aS5zeW1ib2xQcm9wZXJ0eSksdH19ZnVuY3Rpb24gTW4oZSx0LG4pe2lmKCFufHxuLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgcjtyZXR1cm4ocj1lP3NlKG4sdCk6MD09PW4uaW5kZXhPZih0KSk/MDx0Lmxlbmd0aD9be3N0YXJ0OjAsZW5kOnQubGVuZ3RofV06W106bnVsbH0obnx8e30pLmlzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCJvYmplY3QiIT10eXBlb2YgZSkmJigic3RyaW5nIj09dHlwZW9mIGUuaWQmJiJzdHJpbmciPT10eXBlb2YgZS50aXRsZSl9LG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBrbixuZXcga24sbmV3IGtuLG5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBaLHRoaXMub25EaWRDaGFuZ2U9dGhpcy5fb25EaWRDaGFuZ2UuZXZlbnQsdGhpcy5fY29sb3JNYXA9bnVsbH1maXJlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLHQpe3JldHVybiB0aGlzLl9tYXAuc2V0KGUsdCksdGhpcy5maXJlKFtlXSksXygoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KX1yZWdpc3RlckZhY3RvcnkodCxlKXt2YXIgbjtudWxsIT09KG49dGhpcy5fZmFjdG9yaWVzLmdldCh0KSkmJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpO2NvbnN0IHI9bmV3IENuKHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldCh0LHIpLF8oKCk9Pntjb25zdCBlPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7ZSYmZT09PXImJih0aGlzLl9mYWN0b3JpZXMuZGVsZXRlKHQpLGUuZGlzcG9zZSgpKX0pfWdldE9yQ3JlYXRlKG4pe3JldHVybiBTbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9dGhpcy5nZXQobik7aWYoZSlyZXR1cm4gZTtjb25zdCB0PXRoaXMuX2ZhY3Rvcmllcy5nZXQobik7cmV0dXJuIXR8fHQuaXNSZXNvbHZlZD9udWxsOih5aWVsZCB0LnJlc29sdmUoKSx0aGlzLmdldChuKSl9KX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl8fG51bGx9aXNSZXNvbHZlZChlKXtpZih0aGlzLmdldChlKSlyZXR1cm4hMDtlPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIShlJiYhZS5pc1Jlc29sdmVkKX1zZXRDb2xvck1hcChlKXt0aGlzLl9jb2xvck1hcD1lLHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6QXJyYXkuZnJvbSh0aGlzLl9tYXAua2V5cygpKSxjaGFuZ2VkQ29sb3JNYXA6ITB9KX1nZXRDb2xvck1hcCgpe3JldHVybiB0aGlzLl9jb2xvck1hcH1nZXREZWZhdWx0QmFja2dyb3VuZCgpe3JldHVybiB0aGlzLl9jb2xvck1hcCYmMjx0aGlzLl9jb2xvck1hcC5sZW5ndGg/dGhpcy5fY29sb3JNYXBbMl06bnVsbH19LCh0PWxyPWxyfHx7fSlbdC5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0Iix0W3QuVW5rbm93bj0wXT0iVW5rbm93biIsdFt0LkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIix0W3QuVGFiPTJdPSJUYWIiLHRbdC5FbnRlcj0zXT0iRW50ZXIiLHRbdC5TaGlmdD00XT0iU2hpZnQiLHRbdC5DdHJsPTVdPSJDdHJsIix0W3QuQWx0PTZdPSJBbHQiLHRbdC5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIix0W3QuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIix0W3QuRXNjYXBlPTldPSJFc2NhcGUiLHRbdC5TcGFjZT0xMF09IlNwYWNlIix0W3QuUGFnZVVwPTExXT0iUGFnZVVwIix0W3QuUGFnZURvd249MTJdPSJQYWdlRG93biIsdFt0LkVuZD0xM109IkVuZCIsdFt0LkhvbWU9MTRdPSJIb21lIix0W3QuTGVmdEFycm93PTE1XT0iTGVmdEFycm93Iix0W3QuVXBBcnJvdz0xNl09IlVwQXJyb3ciLHRbdC5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsdFt0LkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsdFt0Lkluc2VydD0xOV09Ikluc2VydCIsdFt0LkRlbGV0ZT0yMF09IkRlbGV0ZSIsdFt0LkRpZ2l0MD0yMV09IkRpZ2l0MCIsdFt0LkRpZ2l0MT0yMl09IkRpZ2l0MSIsdFt0LkRpZ2l0Mj0yM109IkRpZ2l0MiIsdFt0LkRpZ2l0Mz0yNF09IkRpZ2l0MyIsdFt0LkRpZ2l0ND0yNV09IkRpZ2l0NCIsdFt0LkRpZ2l0NT0yNl09IkRpZ2l0NSIsdFt0LkRpZ2l0Nj0yN109IkRpZ2l0NiIsdFt0LkRpZ2l0Nz0yOF09IkRpZ2l0NyIsdFt0LkRpZ2l0OD0yOV09IkRpZ2l0OCIsdFt0LkRpZ2l0OT0zMF09IkRpZ2l0OSIsdFt0LktleUE9MzFdPSJLZXlBIix0W3QuS2V5Qj0zMl09IktleUIiLHRbdC5LZXlDPTMzXT0iS2V5QyIsdFt0LktleUQ9MzRdPSJLZXlEIix0W3QuS2V5RT0zNV09IktleUUiLHRbdC5LZXlGPTM2XT0iS2V5RiIsdFt0LktleUc9MzddPSJLZXlHIix0W3QuS2V5SD0zOF09IktleUgiLHRbdC5LZXlJPTM5XT0iS2V5SSIsdFt0LktleUo9NDBdPSJLZXlKIix0W3QuS2V5Sz00MV09IktleUsiLHRbdC5LZXlMPTQyXT0iS2V5TCIsdFt0LktleU09NDNdPSJLZXlNIix0W3QuS2V5Tj00NF09IktleU4iLHRbdC5LZXlPPTQ1XT0iS2V5TyIsdFt0LktleVA9NDZdPSJLZXlQIix0W3QuS2V5UT00N109IktleVEiLHRbdC5LZXlSPTQ4XT0iS2V5UiIsdFt0LktleVM9NDldPSJLZXlTIix0W3QuS2V5VD01MF09IktleVQiLHRbdC5LZXlVPTUxXT0iS2V5VSIsdFt0LktleVY9NTJdPSJLZXlWIix0W3QuS2V5Vz01M109IktleVciLHRbdC5LZXlYPTU0XT0iS2V5WCIsdFt0LktleVk9NTVdPSJLZXlZIix0W3QuS2V5Wj01Nl09IktleVoiLHRbdC5NZXRhPTU3XT0iTWV0YSIsdFt0LkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLHRbdC5GMT01OV09IkYxIix0W3QuRjI9NjBdPSJGMiIsdFt0LkYzPTYxXT0iRjMiLHRbdC5GND02Ml09IkY0Iix0W3QuRjU9NjNdPSJGNSIsdFt0LkY2PTY0XT0iRjYiLHRbdC5GNz02NV09IkY3Iix0W3QuRjg9NjZdPSJGOCIsdFt0LkY5PTY3XT0iRjkiLHRbdC5GMTA9NjhdPSJGMTAiLHRbdC5GMTE9NjldPSJGMTEiLHRbdC5GMTI9NzBdPSJGMTIiLHRbdC5GMTM9NzFdPSJGMTMiLHRbdC5GMTQ9NzJdPSJGMTQiLHRbdC5GMTU9NzNdPSJGMTUiLHRbdC5GMTY9NzRdPSJGMTYiLHRbdC5GMTc9NzVdPSJGMTciLHRbdC5GMTg9NzZdPSJGMTgiLHRbdC5GMTk9NzddPSJGMTkiLHRbdC5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsdFt0LlNjcm9sbExvY2s9NzldPSJTY3JvbGxMb2NrIix0W3QuU2VtaWNvbG9uPTgwXT0iU2VtaWNvbG9uIix0W3QuRXF1YWw9ODFdPSJFcXVhbCIsdFt0LkNvbW1hPTgyXT0iQ29tbWEiLHRbdC5NaW51cz04M109Ik1pbnVzIix0W3QuUGVyaW9kPTg0XT0iUGVyaW9kIix0W3QuU2xhc2g9ODVdPSJTbGFzaCIsdFt0LkJhY2txdW90ZT04Nl09IkJhY2txdW90ZSIsdFt0LkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLHRbdC5CYWNrc2xhc2g9ODhdPSJCYWNrc2xhc2giLHRbdC5CcmFja2V0UmlnaHQ9ODldPSJCcmFja2V0UmlnaHQiLHRbdC5RdW90ZT05MF09IlF1b3RlIix0W3QuT0VNXzg9OTFdPSJPRU1fOCIsdFt0LkludGxCYWNrc2xhc2g9OTJdPSJJbnRsQmFja3NsYXNoIix0W3QuTnVtcGFkMD05M109Ik51bXBhZDAiLHRbdC5OdW1wYWQxPTk0XT0iTnVtcGFkMSIsdFt0Lk51bXBhZDI9OTVdPSJOdW1wYWQyIix0W3QuTnVtcGFkMz05Nl09Ik51bXBhZDMiLHRbdC5OdW1wYWQ0PTk3XT0iTnVtcGFkNCIsdFt0Lk51bXBhZDU9OThdPSJOdW1wYWQ1Iix0W3QuTnVtcGFkNj05OV09Ik51bXBhZDYiLHRbdC5OdW1wYWQ3PTEwMF09Ik51bXBhZDciLHRbdC5OdW1wYWQ4PTEwMV09Ik51bXBhZDgiLHRbdC5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLHRbdC5OdW1wYWRNdWx0aXBseT0xMDNdPSJOdW1wYWRNdWx0aXBseSIsdFt0Lk51bXBhZEFkZD0xMDRdPSJOdW1wYWRBZGQiLHRbdC5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLHRbdC5OdW1wYWRTdWJ0cmFjdD0xMDZdPSJOdW1wYWRTdWJ0cmFjdCIsdFt0Lk51bXBhZERlY2ltYWw9MTA3XT0iTnVtcGFkRGVjaW1hbCIsdFt0Lk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLHRbdC5LRVlfSU5fQ09NUE9TSVRJT049MTA5XT0iS0VZX0lOX0NPTVBPU0lUSU9OIix0W3QuQUJOVF9DMT0xMTBdPSJBQk5UX0MxIix0W3QuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIix0W3QuQXVkaW9Wb2x1bWVNdXRlPTExMl09IkF1ZGlvVm9sdW1lTXV0ZSIsdFt0LkF1ZGlvVm9sdW1lVXA9MTEzXT0iQXVkaW9Wb2x1bWVVcCIsdFt0LkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLHRbdC5Ccm93c2VyU2VhcmNoPTExNV09IkJyb3dzZXJTZWFyY2giLHRbdC5Ccm93c2VySG9tZT0xMTZdPSJCcm93c2VySG9tZSIsdFt0LkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIix0W3QuQnJvd3NlckZvcndhcmQ9MTE4XT0iQnJvd3NlckZvcndhcmQiLHRbdC5NZWRpYVRyYWNrTmV4dD0xMTldPSJNZWRpYVRyYWNrTmV4dCIsdFt0Lk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLHRbdC5NZWRpYVN0b3A9MTIxXT0iTWVkaWFTdG9wIix0W3QuTWVkaWFQbGF5UGF1c2U9MTIyXT0iTWVkaWFQbGF5UGF1c2UiLHRbdC5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsdFt0LkxhdW5jaE1haWw9MTI0XT0iTGF1bmNoTWFpbCIsdFt0LkxhdW5jaEFwcDI9MTI1XT0iTGF1bmNoQXBwMiIsdFt0Lk1BWF9WQUxVRT0xMjZdPSJNQVhfVkFMVUUiLChlPWpyPWpyfHx7fSlbZS5UcmFjZT0wXT0iVHJhY2UiLGVbZS5EZWJ1Zz0xXT0iRGVidWciLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz0zXT0iV2FybmluZyIsZVtlLkVycm9yPTRdPSJFcnJvciIsZVtlLkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsZVtlLk9mZj02XT0iT2ZmIiwoTj13cj13cnx8e30pW04uUGFyYWdyYXBoPTBdPSJQYXJhZ3JhcGgiLE5bTi5CcmVhaz0xXT0iQnJlYWsiLChuPVJyPVJyfHx7fSlbbi5IaW50PTFdPSJIaW50IixuW24uSW5mbz0yXT0iSW5mbyIsbltuLldhcm5pbmc9NF09Ildhcm5pbmciLG5bbi5FcnJvcj04XT0iRXJyb3IiLChlPVByPVByfHx7fSlbZS5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLGVbZS5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIiwoTj15cj15cnx8e30pW04uTFRSPTBdPSJMVFIiLE5bTi5SVEw9MV09IlJUTCIsTW4uYmluZCh2b2lkIDAsITEpLE1uLmJpbmQodm9pZCAwLCEwKTtjb25zdCBSbj1uZXcgU2V0OyIoKVtde308PmAnXCItLzs6LC4/ISIuc3BsaXQoIiIpLmZvckVhY2goZT0+Um4uYWRkKGUuY2hhckNvZGVBdCgwKSkpLG5ldyBRdCgxZTQpO2Z1bmN0aW9uIEluKCl7Y29uc3QgdD1bXSxuPVtdO2ZvcihsZXQgZT0wO2U8PTEyODtlKyspbltlXT0wO2ZvcihsZXQgZT0wO2U8PTEyODtlKyspdC5wdXNoKG4uc2xpY2UoMCkpO3JldHVybiB0fWZ1bmN0aW9uIE5uKHQpe2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTw9dDtlKyspbltlXT0wO3JldHVybiBufU5uKDI1NiksTm4oMjU2KSxJbigpLEluKCksSW4oKTt2YXIgVW4sem4sSG4sbj1uZXcgUmVnRXhwKGBcXCRcXCgke3IuaWNvbk5hbWVFeHByZXNzaW9ufSg/OiR7ci5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/XFwpYCwiZyIpO25ldyBSZWdFeHAoci5pY29uTmFtZUNoYXJhY3Rlcik7Y29uc3QgRG49bmV3IFJlZ0V4cCgiKFxcXFwpPyIrbi5zb3VyY2UsImciKTtuZXcgUmVnRXhwKCJcXFxcIituLnNvdXJjZSwiZyIpLG5ldyBSZWdFeHAoYChcXHMpPyhcXFxcKT8ke24uc291cmNlfShcXHMpP2AsImciKTtjbGFzcyBXbntjb25zdHJ1Y3RvcihlPSIiLHQ9ITEpe2lmKHRoaXMudmFsdWU9ZSwic3RyaW5nIiE9dHlwZW9mIHRoaXMudmFsdWUpdGhyb3coZT0idmFsdWUiKT9uZXcgRXJyb3IoIklsbGVnYWwgYXJndW1lbnQ6ICIrZSk6bmV3IEVycm9yKCJJbGxlZ2FsIGFyZ3VtZW50Iik7ImJvb2xlYW4iPT10eXBlb2YgdD8odGhpcy5pc1RydXN0ZWQ9dCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPSExLHRoaXMuc3VwcG9ydEh0bWw9ITEpOih0aGlzLmlzVHJ1c3RlZD1udWxsIT09KGU9dC5pc1RydXN0ZWQpJiZ2b2lkIDAhPT1lP2U6dm9pZCAwLHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM9bnVsbCE9PShlPXQuc3VwcG9ydFRoZW1lSWNvbnMpJiZ2b2lkIDAhPT1lJiZlLHRoaXMuc3VwcG9ydEh0bWw9bnVsbCE9PShlPXQuc3VwcG9ydEh0bWwpJiZ2b2lkIDAhPT1lJiZlKX1hcHBlbmRUZXh0KGUsdD0wKXtyZXR1cm4gdGhpcy52YWx1ZSs9KHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM/ZS5yZXBsYWNlKERuLChlLHQpPT50P2U6IlxcIitlKTplKS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLSFdL2csIlxcJCYiKS5yZXBsYWNlKC8oWyBcdF0rKS9nLChlLHQpPT4iJm5ic3A7Ii5yZXBlYXQodC5sZW5ndGgpKS5yZXBsYWNlKC9cPi9nbSwiXFw+IikucmVwbGFjZSgvXG4vZywxPT09dD8iXFxcbiI6IlxuXG4iKSx0aGlzfWFwcGVuZE1hcmtkb3duKGUpe3JldHVybiB0aGlzLnZhbHVlKz1lLHRoaXN9YXBwZW5kQ29kZWJsb2NrKGUsdCl7cmV0dXJuIHRoaXMudmFsdWUrPSJcbmBgYCIsdGhpcy52YWx1ZSs9ZSx0aGlzLnZhbHVlKz0iXG4iLHRoaXMudmFsdWUrPXQsdGhpcy52YWx1ZSs9IlxuYGBgXG4iLHRoaXN9fWZ1bmN0aW9uIFBuKGUpe2lmKFVuLnNlcnZpY2VJZHMuaGFzKGUpKXJldHVybiBVbi5zZXJ2aWNlSWRzLmdldChlKTtmdW5jdGlvbiBhKGUsdCxuKXtpZigzIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkBJU2VydmljZU5hbWUtZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgdG8gZGVjb3JhdGUgYSBwYXJhbWV0ZXIiKTt2YXIgcixpO3I9YSxuPW4saT0hMSwoZT1lKVtVbi5ESV9UQVJHRVRdPT09ZT9lW1VuLkRJX0RFUEVOREVOQ0lFU10ucHVzaCh7aWQ6cixpbmRleDpuLG9wdGlvbmFsOml9KTooZVtVbi5ESV9ERVBFTkRFTkNJRVNdPVt7aWQ6cixpbmRleDpuLG9wdGlvbmFsOml9XSxlW1VuLkRJX1RBUkdFVF09ZSl9cmV0dXJuIGEudG9TdHJpbmc9KCk9PmUsVW4uc2VydmljZUlkcy5zZXQoZSxhKSxhLDF9KHpuPVVuPVVufHx7fSkuc2VydmljZUlkcz1uZXcgTWFwLHpuLkRJX1RBUkdFVD0iJGRpJHRhcmdldCIsem4uRElfREVQRU5ERU5DSUVTPSIkZGkkZGVwZW5kZW5jaWVzIix6bi5nZXRTZXJ2aWNlRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBlW3puLkRJX0RFUEVOREVOQ0lFU118fFtdfSxQbigiaW5zdGFudGlhdGlvblNlcnZpY2UiKSxQbigibG9nU2VydmljZSIpLFBuKCJsb2dnZXJTZXJ2aWNlIiksKGU9SG49SG58fHt9KVtlLlRyYWNlPTBdPSJUcmFjZSIsZVtlLkRlYnVnPTFdPSJEZWJ1ZyIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTNdPSJXYXJuaW5nIixlW2UuRXJyb3I9NF09IkVycm9yIixlW2UuQ3JpdGljYWw9NV09IkNyaXRpY2FsIixlW2UuT2ZmPTZdPSJPZmYiO2NvbnN0IE9uPUhuLkluZm87Y2xhc3MgcW4gZXh0ZW5kcyB2e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmxldmVsPU9uLHRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWw9dGhpcy5fcmVnaXN0ZXIobmV3IFopLHRoaXMub25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmV2ZW50fXNldExldmVsKGUpe3RoaXMubGV2ZWwhPT1lJiYodGhpcy5sZXZlbD1lLHRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZmlyZSh0aGlzLmxldmVsKSl9Z2V0TGV2ZWwoKXtyZXR1cm4gdGhpcy5sZXZlbH19Y2xhc3MgRm4gZXh0ZW5kcyBxbntjb25zdHJ1Y3RvcihlPU9uKXtzdXBlcigpLHRoaXMuc2V0TGV2ZWwoZSl9dHJhY2UoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUhuLlRyYWNlJiZjb25zb2xlLmxvZygiJWNUUkFDRSIsImNvbG9yOiAjODg4IixlLC4uLnQpfWRlYnVnKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1Ibi5EZWJ1ZyYmY29uc29sZS5sb2coIiVjREVCVUciLCJiYWNrZ3JvdW5kOiAjZWVlOyBjb2xvcjogIzg4OCIsZSwuLi50KX1pbmZvKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1Ibi5JbmZvJiZjb25zb2xlLmxvZygiJWMgSU5GTyIsImNvbG9yOiAjMzNmIixlLC4uLnQpfXdhcm4oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUhuLldhcm5pbmcmJmNvbnNvbGUubG9nKCIlYyBXQVJOIiwiY29sb3I6ICM5OTMiLGUsLi4udCl9ZXJyb3IoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUhuLkVycm9yJiZjb25zb2xlLmxvZygiJWMgIEVSUiIsImNvbG9yOiAjZjMzIixlLC4uLnQpfWNyaXRpY2FsKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1Ibi5Dcml0aWNhbCYmY29uc29sZS5sb2coIiVjQ1JJVEkiLCJiYWNrZ3JvdW5kOiAjZjMzOyBjb2xvcjogd2hpdGUiLGUsLi4udCl9ZGlzcG9zZSgpe31mbHVzaCgpe319Y2xhc3MgVm57c3RhdGljIGNob3JkKGUsdCl7cmV0dXJuKGV8KDY1NTM1JnQpPDwxNj4+PjApPj4+MH19ZnVuY3Rpb24gQm4oZSx0LG4scixpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7aWYoMD09PW4pcmV0dXJuIDE7dmFyIGk9dC5jaGFyQ29kZUF0KG4tMSk7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxO2lmKDEzPT09aXx8MTA9PT1pKXJldHVybiAxO2lmKDA8cil7aT10LmNoYXJDb2RlQXQobik7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxfXJldHVybn0oZSx0LHIsaSkmJmZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYocitpPT09bilyZXR1cm4gMTtpZihuPXQuY2hhckNvZGVBdChyK2kpLDAhPT1lLmdldChuKSlyZXR1cm4gMTtpZigxMz09PW58fDEwPT09bilyZXR1cm4gMTtpZigwPGkpe249dC5jaGFyQ29kZUF0KHIraS0xKTtpZigwIT09ZS5nZXQobikpcmV0dXJuIDF9cmV0dXJufShlLHQsbixyLGkpfVZuLkN0cmxDbWQ9MjA0OCxWbi5TaGlmdD0xMDI0LFZuLkFsdD01MTIsVm4uV2luQ3RybD0yNTY7Y2xhc3MgS257Y29uc3RydWN0b3IoZSx0KXt0aGlzLl93b3JkU2VwYXJhdG9ycz1lLHRoaXMuX3NlYXJjaFJlZ2V4PXQsdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1yZXNldChlKXt0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXg9ZSx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfW5leHQoZSl7dmFyIHQ9ZS5sZW5ndGg7bGV0IG47ZG97aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleCt0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9PT10KXJldHVybiBudWxsO2lmKCEobj10aGlzLl9zZWFyY2hSZWdleC5leGVjKGUpKSlyZXR1cm4gbnVsbDt2YXIgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYociE9PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXh8fGkhPT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cix0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fEJuKHRoaXMuX3dvcmRTZXBhcmF0b3JzLGUsdCxyLGkpKXJldHVybiBufWVsc2V7aWYoMCE9PWkpcmV0dXJuIG51bGw7NjU1MzU8ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuY2hhckNvZGVBdChuKTtpZihsZShyKSYmbisxPHQpe3Q9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoNTYzMjA8PShlPXQpJiZlPD01NzM0MylyZXR1cm4gdC01NjMyMCsoci01NTI5Njw8MTApKzY1NTM2fXJldHVybiByfShlLHQsdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xfX13aGlsZShuKTtyZXR1cm4gbnVsbH19Y2xhc3Mgam57c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LGMsZSl7dmFyIGQ9ZT9lLnN0YXJ0TGluZU51bWJlcjoxLHU9ZT9lLmVuZExpbmVOdW1iZXI6dC5nZXRMaW5lQ291bnQoKTtjb25zdCByPW5ldyBHbihjKTt2YXIgaSxlPXIuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBuO249ImFsbE5vbkJhc2ljQXNjaWkiPT09ZT9uZXcgUmVnRXhwKCJbXlxcdFxcblxcclxceDIwLVxceDdFXSIsImciKTpuZXcgUmVnRXhwKCIiK2Z1bmN0aW9uKGUpe2U9YFske3JlKGUubWFwKGU9PlN0cmluZy5mcm9tQ29kZVBvaW50KGUpKS5qb2luKCIiKSl9XWA7cmV0dXJuIGV9KEFycmF5LmZyb20oZSkpLCJnIik7Y29uc3QgYT1uZXcgS24obnVsbCxuKSxvPVtdO2xldCBzPSExLHA9MCxtPTAsZj0wO2U6Zm9yKGxldCBuPWQsZT11O248PWU7bisrKXtjb25zdCBoPXQuZ2V0TGluZUNvbnRlbnQobik7dmFyIGc9aC5sZW5ndGg7YS5yZXNldCgwKTtkb3tpZihpPWEubmV4dChoKSl7bGV0IGU9aS5pbmRleCx0PWkuaW5kZXgraVswXS5sZW5ndGg7MDxlJiZsZShoLmNoYXJDb2RlQXQoZS0xKSkmJmUtLSx0KzE8ZyYmbGUoaC5jaGFyQ29kZUF0KHQtMSkpJiZ0Kys7dmFyIGw9aC5zdWJzdHJpbmcoZSx0KSxsPXIuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShsKTtpZigwIT09bCl7aWYoMz09PWwpcCsrO2Vsc2UgaWYoMj09PWwpbSsrO2Vsc2V7aWYoMSE9PWwpdGhyb3cgbD12b2lkIDAsW2w9IlVucmVhY2hhYmxlIl09W10sbmV3IEVycm9yKGwpO2YrK31pZigxZTM8PW8ubGVuZ3RoKXtzPSEwO2JyZWFrIGV9by5wdXNoKG5ldyBsdChuLGUrMSxuLHQrMSkpfX19d2hpbGUoaSl9cmV0dXJue3JhbmdlczpvLGhhc01vcmU6cyxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDpwLGludmlzaWJsZUNoYXJhY3RlckNvdW50Om0sbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OmZ9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbihlLHQpe2NvbnN0IG49bmV3IEduKHQpO3N3aXRjaChuLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSkpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDI6cmV0dXJue2tpbmQ6MX07Y2FzZSAzOntjb25zdCBhPWUuY29kZVBvaW50QXQoMCk7dmFyIHI9bi5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldFByaW1hcnlDb25mdXNhYmxlKGEpLGk9aGUuZ2V0TG9jYWxlcygpLmZpbHRlcihlPT4haGUuZ2V0SW5zdGFuY2UobmV3IFNldChbLi4udC5hbGxvd2VkTG9jYWxlcyxlXSkpLmlzQW1iaWd1b3VzKGEpKTtyZXR1cm57a2luZDowLGNvbmZ1c2FibGVXaXRoOlN0cmluZy5mcm9tQ29kZVBvaW50KHIpLG5vdEFtYmlndW91c0luTG9jYWxlczppfX1jYXNlIDE6cmV0dXJue2tpbmQ6Mn19fX1jbGFzcyBHbntjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLmFsbG93ZWRDb2RlUG9pbnRzPW5ldyBTZXQoZS5hbGxvd2VkQ29kZVBvaW50cyksdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzPWhlLmdldEluc3RhbmNlKG5ldyBTZXQoZS5hbGxvd2VkTG9jYWxlcykpfWdldENhbmRpZGF0ZUNvZGVQb2ludHMoKXtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4iYWxsTm9uQmFzaWNBc2NpaSI7Y29uc3QgZT1uZXcgU2V0O2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzKWZvcihjb25zdCB0IG9mIGNlLmNvZGVQb2ludHMpZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IG4gb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQobik7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZShyKTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUpe3ZhciB0PWUuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXModCkpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7aWYodGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMmJighKCIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZSkmJmNlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKHQpKSlyZXR1cm4gMjtyZXR1cm4gdGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KT8zOjB9fXZhciAkbixKbixYbixZbixRbixabixlcix0cixucixycixpcixhcixvcixzcixscixocixjcj1mdW5jdGlvbihlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfTtjbGFzcyBkciBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2Zvcihjb25zdCB0IG9mIGUuY2hhbmdlcyl0aGlzLl9hY2NlcHREZWxldGVSYW5nZSh0LnJhbmdlKSx0aGlzLl9hY2NlcHRJbnNlcnRUZXh0KG5ldyBzdCh0LnJhbmdlLnN0YXJ0TGluZU51bWJlcix0LnJhbmdlLnN0YXJ0Q29sdW1uKSx0LnRleHQpO3RoaXMuX3ZlcnNpb25JZD1lLnZlcnNpb25JZCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1fZW5zdXJlTGluZVN0YXJ0cygpe2lmKCF0aGlzLl9saW5lU3RhcnRzKXt2YXIgdD10aGlzLl9lb2wubGVuZ3RoLG49dGhpcy5fbGluZXMubGVuZ3RoO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KG4pO2ZvcihsZXQgZT0wO2U8bjtlKyspcltlXT10aGlzLl9saW5lc1tlXS5sZW5ndGgrdDt0aGlzLl9saW5lU3RhcnRzPW5ldyB2dChyKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlcilyZXR1cm4gZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1uP3ZvaWQgMDp2b2lkIHRoaXMuX3NldExpbmVUZXh0KGUuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5lbmRDb2x1bW4tMSkpO3RoaXMuX3NldExpbmVUZXh0KGUuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1tlLmVuZExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKSx0aGlzLl9saW5lcy5zcGxpY2UoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKSx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnJlbW92ZVZhbHVlcyhlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXItZS5zdGFydExpbmVOdW1iZXIpfV9hY2NlcHRJbnNlcnRUZXh0KHQsZSl7aWYoMCE9PWUubGVuZ3RoKXtjb25zdCBuPWUuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxIT09bi5sZW5ndGgpe25bbi5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK25bMF0pO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KG4ubGVuZ3RoLTEpO2ZvcihsZXQgZT0xO2U8bi5sZW5ndGg7ZSsrKXRoaXMuX2xpbmVzLnNwbGljZSh0LmxpbmVOdW1iZXIrZS0xLDAsbltlXSkscltlLTFdPW5bZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGg7dGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5pbnNlcnRWYWx1ZXModC5saW5lTnVtYmVyLHIpfWVsc2UgdGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmNvbHVtbi0xKSl9fX17Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXt0PVN0KGUuY29sdW1uLGZ1bmN0aW9uKHQpe2xldCBuPVR0O2lmKHQmJnQgaW5zdGFuY2VvZiBSZWdFeHApaWYodC5nbG9iYWwpbj10O2Vsc2V7bGV0IGU9ImciO3QuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQudW5pY29kZSYmKGUrPSJ1Iiksbj1uZXcgUmVnRXhwKHQuc291cmNlLGUpfXJldHVybiBuLmxhc3RJbmRleD0wLG59KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gdD9uZXcgbHQoZS5saW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXdvcmRzKHQpe2NvbnN0IG49dGhpcy5fbGluZXMscj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLGE9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXt2YXIgZT1hLnN1YnN0cmluZyhzW29dLnN0YXJ0LHNbb10uZW5kKTtvKz0xLHlpZWxkIGV9ZWxzZXtpZighKGk8bi5sZW5ndGgpKWJyZWFrO2E9bltpXSxzPXIoYSx0KSxvPTAsaSs9MX19fX1nZXRMaW5lV29yZHMoZSx0KXtjb25zdCBuPXRoaXMuX2xpbmVzW2UtMV07Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLl93b3JkZW5pemUobix0KSlyLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoaS5zdGFydCxpLmVuZCksc3RhcnRDb2x1bW46aS5zdGFydCsxLGVuZENvbHVtbjppLmVuZCsxfSk7cmV0dXJuIHJ9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107dmFyIHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO3ZhciB0PXRoaXMuX2VvbCxuPWUuc3RhcnRMaW5lTnVtYmVyLTEscj1lLmVuZExpbmVOdW1iZXItMTtjb25zdCBpPVtdO2kucHVzaCh0aGlzLl9saW5lc1tuXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBlPTErbjtlPHI7ZSsrKWkucHVzaCh0aGlzLl9saW5lc1tlXSk7cmV0dXJuIGkucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcoMCxlLmVuZENvbHVtbi0xKSksaS5qb2luKHQpfW9mZnNldEF0KGUpe3JldHVybiBlPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKGUubGluZU51bWJlci0yKSsoZS5jb2x1bW4tMSl9cG9zaXRpb25BdChlKXtlPU1hdGguZmxvb3IoZSksZT1NYXRoLm1heCgwLGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTt2YXIgZT10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksdD10aGlzLl9saW5lc1tlLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStlLmluZGV4LGNvbHVtbjoxK01hdGgubWluKGUucmVtYWluZGVyLHQpfX1fdmFsaWRhdGVSYW5nZShlKXt2YXIgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighc3QuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7dmFyIGk7cmV0dXJuIHQ8MT8odD0xLG49MSxyPSEwKTp0PnRoaXMuX2xpbmVzLmxlbmd0aD8odD10aGlzLl9saW5lcy5sZW5ndGgsbj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLHI9ITApOihpPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzEsbjwxPyhuPTEscj0hMCk6bj5pJiYobj1pLHI9ITApKSxyP3tsaW5lTnVtYmVyOnQsY29sdW1uOm59OmV9fWNsYXNzIHVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKGU9PnQucHVzaCh0aGlzLl9tb2RlbHNbZV0pKSx0fWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IGRyKFllLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZih0aGlzLl9tb2RlbHNbZV0pe2NvbnN0IG49dGhpcy5fbW9kZWxzW2VdO24ub25FdmVudHModCl9fWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsbixyKXtyZXR1cm4gY3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlP2puLmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLG4scik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KX1jb21wdXRlRGlmZihhLG8scyxsKXtyZXR1cm4gY3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoYSksdD10aGlzLl9nZXRNb2RlbChvKTtpZighZXx8IXQpcmV0dXJuIG51bGw7dmFyIG49ZS5nZXRMaW5lc0NvbnRlbnQoKSxyPXQuZ2V0TGluZXNDb250ZW50KCk7Y29uc3QgaT1uZXcgbXQobixyLHtzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMCxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpzLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLG1heENvbXB1dGF0aW9uVGltZTpsfSk7bj1pLmNvbXB1dGVEaWZmKCkscj0hKDA8bi5jaGFuZ2VzLmxlbmd0aCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChlLHQpO3JldHVybntxdWl0RWFybHk6bi5xdWl0RWFybHksaWRlbnRpY2FsOnIsY2hhbmdlczpuLmNoYW5nZXN9fSl9X21vZGVsc0FyZUlkZW50aWNhbCh0LG4pe3ZhciByPXQuZ2V0TGluZUNvdW50KCk7aWYociE9PW4uZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCBlPTE7ZTw9cjtlKyspaWYodC5nZXRMaW5lQ29udGVudChlKSE9PW4uZ2V0TGluZUNvbnRlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHModSxwKXtyZXR1cm4gY3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwodSk7aWYoIWUpcmV0dXJuIHA7Y29uc3QgdD1bXTtsZXQgbj12b2lkIDA7Zm9yKHZhcntyYW5nZTpyLHRleHQ6aSxlb2w6YX1vZiBwPXAuc2xpY2UoMCkuc29ydCgoZSx0KT0+e3JldHVybiBlLnJhbmdlJiZ0LnJhbmdlP2x0LmNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLnJhbmdlLHQucmFuZ2UpOihlLnJhbmdlPzA6MSktKHQucmFuZ2U/MDoxKX0pKWlmKCJudW1iZXIiPT10eXBlb2YgYSYmKG49YSksIWx0LmlzRW1wdHkocil8fGkpe2E9ZS5nZXRWYWx1ZUluUmFuZ2Uocik7aWYoYSE9PShpPWkucmVwbGFjZSgvXHJcbnxcbnxcci9nLGUuZW9sKSkpaWYoTWF0aC5tYXgoaS5sZW5ndGgsYS5sZW5ndGgpPnVyLl9kaWZmTGltaXQpdC5wdXNoKHtyYW5nZTpyLHRleHQ6aX0pO2Vsc2V7YT1hLGM9aSxkPSExO3ZhciBhPW5ldyBMZShuZXcga2UoYSksbmV3IGtlKGMpKS5Db21wdXRlRGlmZihkKS5jaGFuZ2VzLG89ZS5vZmZzZXRBdChsdC5saWZ0KHIpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGggb2YgYSl7dmFyIHM9ZS5wb3NpdGlvbkF0KG8raC5vcmlnaW5hbFN0YXJ0KSxsPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCtoLm9yaWdpbmFsTGVuZ3RoKSxzPXt0ZXh0Omkuc3Vic3RyKGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOmwubGluZU51bWJlcixlbmRDb2x1bW46bC5jb2x1bW59fTtlLmdldFZhbHVlSW5SYW5nZShzLnJhbmdlKSE9PXMudGV4dCYmdC5wdXNoKHMpfX19dmFyIGMsZDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4mJnQucHVzaCh7ZW9sOm4sdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksdH0pfWNvbXB1dGVMaW5rcyh0KXtyZXR1cm4gY3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlPyhlPWUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P010LmNvbXB1dGVMaW5rcyhlKTpbXTpudWxsfSl9dGV4dHVhbFN1Z2dlc3QobyxzLGwsaCl7cmV0dXJuIGNyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPW5ldyBGKCEwKTt2YXIgdD1uZXcgUmVnRXhwKGwsaCk7Y29uc3Qgbj1uZXcgU2V0O2U6Zm9yKHZhciByIG9mIG8pe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwocik7aWYoYSlmb3IodmFyIGkgb2YgYS53b3Jkcyh0KSlpZihpIT09cyYmaXNOYU4oTnVtYmVyKGkpKSYmKG4uYWRkKGkpLG4uc2l6ZT51ci5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShuKSxkdXJhdGlvbjplLmVsYXBzZWQoKX19KX1jb21wdXRlV29yZFJhbmdlcyh0LGEsbyxzKXtyZXR1cm4gY3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIWUpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7dmFyIG49bmV3IFJlZ0V4cChvLHMpO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQ9YS5zdGFydExpbmVOdW1iZXI7dDxhLmVuZExpbmVOdW1iZXI7dCsrKWZvcihjb25zdCBpIG9mIGUuZ2V0TGluZVdvcmRzKHQsbikpaWYoaXNOYU4oTnVtYmVyKGkud29yZCkpKXtsZXQgZT1yW2kud29yZF07ZXx8KGU9W10scltpLndvcmRdPWUpLGUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOnQsc3RhcnRDb2x1bW46aS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOmkuZW5kQ29sdW1ufSl9cmV0dXJuIHJ9KX1uYXZpZ2F0ZVZhbHVlU2V0KGksYSxvLHMsbCl7cmV0dXJuIGNyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGkpO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PW5ldyBSZWdFeHAocyxsKSxuPShhLnN0YXJ0Q29sdW1uPT09YS5lbmRDb2x1bW4mJihhPXtzdGFydExpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46YS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOmEuZW5kTGluZU51bWJlcixlbmRDb2x1bW46YS5lbmRDb2x1bW4rMX0pLGUuZ2V0VmFsdWVJblJhbmdlKGEpKSx0PWUuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmEuc3RhcnRDb2x1bW59LHQpO2lmKCF0KXJldHVybiBudWxsO3ZhciByPWUuZ2V0VmFsdWVJblJhbmdlKHQpO3JldHVybiBSdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KGEsbix0LHIsbyl9KX1sb2FkRm9yZWlnbk1vZHVsZShlLHQsbil7bj10ZShuLChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnkoe2hvc3Q6bixnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfSx0KSxQcm9taXNlLnJlc29sdmUoZWUodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fXVyLl9kaWZmTGltaXQ9MWU1LHVyLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKEUubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsZXh0cmE6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOlV0LEVtaXR0ZXI6WixLZXlDb2RlOmxyLEtleU1vZDpWbixQb3NpdGlvbjpzdCxSYW5nZTpsdCxTZWxlY3Rpb246anQsVXJpOlllLFRva2VuOkxuLE1hcmtkb3duU3RyaW5nOlduLE1hcmtkb3duU3RyaW5nVGV4dE5ld2xpbmVTdHlsZTp3cixEaXNwb3NhYmxlOnYsRGlzcG9zYWJsZVN0b3JlOncsRXJyb3JIYW5kbGVyOnMsQWJzdHJhY3RMb2dnZXI6cW4sQ29uc29sZUxvZ2dlcjpGbixUb2tlbml6YXRpb25SZXN1bHQ6QW4sRW5jb2RlZFRva2VuaXphdGlvblJlc3VsdDpFbixTZWxlY3Rpb25EaXJlY3Rpb246eXIsTWFya2VyU2V2ZXJpdHk6UnIsTWFya2VyVGFnOlByLExvZ0xldmVsOmpyLGVycm9ySGFuZGxlcjpsfSk7bGV0IHByPSExO2Z1bmN0aW9uIG1yKHQpe2lmKCFwcil7cHI9ITA7Y29uc3Qgbj1uZXcgdmUoZT0+e3NlbGYucG9zdE1lc3NhZ2UoZSl9LGU9Pm5ldyB1cihlLHQpKTtzZWxmLm9ubWVzc2FnZT1lPT57bi5vbm1lc3NhZ2UoZS5kYXRhKX19fWZ1bmN0aW9uIGZyKGUsdCwuLi5uKXt7dmFyIHI9bjtsZXQgZTtyZXR1cm4gZT0wPT09ci5sZW5ndGg/dDp0LnJlcGxhY2UoL1x7KFxkKylcfS9nLChlLHQpPT57dD10WzBdO3JldHVybiB2b2lkIDAhPT1yW3RdP3JbdF06ZX0pfX1zZWxmLm9ubWVzc2FnZT1lPT57cHJ8fG1yKG51bGwpfSwoTj0kbj0kbnx8e30pLk1JTl9WQUxVRT0wLE4uTUFYX1ZBTFVFPTIxNDc0ODM2NDcsKHI9Sm49Sm58fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bGluZTplPWU9PT1OdW1iZXIuTUFYX1ZBTFVFPyRuLk1BWF9WQUxVRTplLGNoYXJhY3Rlcjp0PXQ9PT1OdW1iZXIuTUFYX1ZBTFVFPyRuLk1BWF9WQUxVRTp0fX0sci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5vYmplY3RMaXRlcmFsKGUpJiZvLnVpbnRlZ2VyKGUubGluZSkmJm8udWludGVnZXIoZS5jaGFyYWN0ZXIpfSwobj1Ybj1Ybnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtpZihvLnVpbnRlZ2VyKGUpJiZvLnVpbnRlZ2VyKHQpJiZvLnVpbnRlZ2VyKG4pJiZvLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDpKbi5jcmVhdGUoZSx0KSxlbmQ6Sm4uY3JlYXRlKG4scil9O2lmKEpuLmlzKGUpJiZKbi5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LG4uaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmSm4uaXMoZS5zdGFydCkmJkpuLmlzKGUuZW5kKX0sKGU9WW49WW58fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUscmFuZ2U6dH19LGUuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmWG4uaXMoZS5yYW5nZSkmJihvLnN0cmluZyhlLnVyaSl8fG8udW5kZWZpbmVkKGUudXJpKSl9LChscj1sYT1sYXx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57cmVkOmUsZ3JlZW46dCxibHVlOm4sYWxwaGE6cn19LGxyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLm51bWJlclJhbmdlKGUucmVkLDAsMSkmJm8ubnVtYmVyUmFuZ2UoZS5ncmVlbiwwLDEpJiZvLm51bWJlclJhbmdlKGUuYmx1ZSwwLDEpJiZvLm51bWJlclJhbmdlKGUuYWxwaGEsMCwxKX0sKHdyPVFuPVFufHx7fSkuQ29tbWVudD0iY29tbWVudCIsd3IuSW1wb3J0cz0iaW1wb3J0cyIsd3IuUmVnaW9uPSJyZWdpb24iLCh5cj1abj1abnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntsb2NhdGlvbjplLG1lc3NhZ2U6dH19LHlyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmluZWQoZSkmJlluLmlzKGUubG9jYXRpb24pJiZvLnN0cmluZyhlLm1lc3NhZ2UpfSwoQ3J8fHt9KS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmby5zdHJpbmcoZS5ocmVmKX0sKFJyPUxyPUxyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXtyZXR1cm4gZT17cmFuZ2U6ZSxtZXNzYWdlOnR9LG8uZGVmaW5lZChuKSYmKGUuc2V2ZXJpdHk9biksby5kZWZpbmVkKHIpJiYoZS5jb2RlPXIpLG8uZGVmaW5lZChpKSYmKGUuc291cmNlPWkpLG8uZGVmaW5lZChhKSYmKGUucmVsYXRlZEluZm9ybWF0aW9uPWEpLGV9LFJyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBvLmRlZmluZWQoZSkmJlhuLmlzKGUucmFuZ2UpJiZvLnN0cmluZyhlLm1lc3NhZ2UpJiYoby5udW1iZXIoZS5zZXZlcml0eSl8fG8udW5kZWZpbmVkKGUuc2V2ZXJpdHkpKSYmKG8uaW50ZWdlcihlLmNvZGUpfHxvLnN0cmluZyhlLmNvZGUpfHxvLnVuZGVmaW5lZChlLmNvZGUpKSYmKG8udW5kZWZpbmVkKGUuY29kZURlc2NyaXB0aW9uKXx8by5zdHJpbmcobnVsbD09PSh0PWUuY29kZURlc2NyaXB0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5ocmVmKSkmJihvLnN0cmluZyhlLnNvdXJjZSl8fG8udW5kZWZpbmVkKGUuc291cmNlKSkmJihvLnVuZGVmaW5lZChlLnJlbGF0ZWRJbmZvcm1hdGlvbil8fG8udHlwZWRBcnJheShlLnJlbGF0ZWRJbmZvcm1hdGlvbixabi5pcykpfSwoUHI9SHI9SHJ8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTtyZXR1cm4gZT17dGl0bGU6ZSxjb21tYW5kOnR9LG8uZGVmaW5lZChuKSYmMDxuLmxlbmd0aCYmKGUuYXJndW1lbnRzPW4pLGV9LFByLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmluZWQoZSkmJm8uc3RyaW5nKGUudGl0bGUpJiZvLnN0cmluZyhlLmNvbW1hbmQpfSwoanI9ZXI9ZXJ8fHt9KS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0fX0sanIuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJue3JhbmdlOntzdGFydDplLGVuZDplfSxuZXdUZXh0OnR9fSxqci5kZWw9ZnVuY3Rpb24oZSl7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDoiIn19LGpyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLm9iamVjdExpdGVyYWwoZSkmJm8uc3RyaW5nKGUubmV3VGV4dCkmJlhuLmlzKGUucmFuZ2UpfSwoTj10cj10cnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9e2xhYmVsOmV9LHZvaWQgMCE9PXQmJihlLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihlLmRlc2NyaXB0aW9uPW4pLGV9LE4uaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJm8ub2JqZWN0TGl0ZXJhbChlKSYmby5zdHJpbmcoZS5sYWJlbCkmJihvLmJvb2xlYW4oZS5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PWUubmVlZHNDb25maXJtYXRpb24pJiYoby5zdHJpbmcoZS5kZXNjcmlwdGlvbil8fHZvaWQgMD09PWUuZGVzY3JpcHRpb24pfSwobnJ8fChucj17fSkpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0sKHI9cnI9cnJ8fHt9KS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OnQsYW5ub3RhdGlvbklkOm59fSxyLmluc2VydD1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOntzdGFydDplLGVuZDplfSxuZXdUZXh0OnQsYW5ub3RhdGlvbklkOm59fSxyLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSxyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlci5pcyhlKSYmKHRyLmlzKGUuYW5ub3RhdGlvbklkKXx8bnIuaXMoZS5hbm5vdGF0aW9uSWQpKX0sKG49aXI9aXJ8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LG4uaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmX3IuaXMoZS50ZXh0RG9jdW1lbnQpJiZBcnJheS5pc0FycmF5KGUuZWRpdHMpfSwoZT1hcj1hcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9e2tpbmQ6ImNyZWF0ZSIsdXJpOmV9LHZvaWQgMD09PXR8fHZvaWQgMD09PXQub3ZlcndyaXRlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmRXhpc3RzfHwoZS5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihlLmFubm90YXRpb25JZD1uKSxlfSxlLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiY3JlYXRlIj09PWUua2luZCYmby5zdHJpbmcoZS51cmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLm92ZXJ3cml0ZXx8by5ib29sZWFuKGUub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHxuci5pcyhlLmFubm90YXRpb25JZCkpfSwobGE9b3I9b3J8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGU9e2tpbmQ6InJlbmFtZSIsb2xkVXJpOmUsbmV3VXJpOnR9LHZvaWQgMD09PW58fHZvaWQgMD09PW4ub3ZlcndyaXRlJiZ2b2lkIDA9PT1uLmlnbm9yZUlmRXhpc3RzfHwoZS5vcHRpb25zPW4pLHZvaWQgMCE9PXImJihlLmFubm90YXRpb25JZD1yKSxlfSxsYS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmInJlbmFtZSI9PT1lLmtpbmQmJm8uc3RyaW5nKGUub2xkVXJpKSYmby5zdHJpbmcoZS5uZXdVcmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLm92ZXJ3cml0ZXx8by5ib29sZWFuKGUub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHxuci5pcyhlLmFubm90YXRpb25JZCkpfSwobHI9c3I9c3J8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPXtraW5kOiJkZWxldGUiLHVyaTplfSx2b2lkIDA9PT10fHx2b2lkIDA9PT10LnJlY3Vyc2l2ZSYmdm9pZCAwPT09dC5pZ25vcmVJZk5vdEV4aXN0c3x8KGUub3B0aW9ucz10KSx2b2lkIDAhPT1uJiYoZS5hbm5vdGF0aW9uSWQ9biksZX0sbHIuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJkZWxldGUiPT09ZS5raW5kJiZvLnN0cmluZyhlLnVyaSkmJih2b2lkIDA9PT1lLm9wdGlvbnN8fCh2b2lkIDA9PT1lLm9wdGlvbnMucmVjdXJzaXZlfHxvLmJvb2xlYW4oZS5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09ZS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHxvLmJvb2xlYW4oZS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzKSkpJiYodm9pZCAwPT09ZS5hbm5vdGF0aW9uSWR8fG5yLmlzKGUuYW5ub3RhdGlvbklkKSl9LChocnx8KGhyPXt9KSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJih2b2lkIDAhPT1lLmNoYW5nZXN8fHZvaWQgMCE9PWUuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PWUuZG9jdW1lbnRDaGFuZ2VzfHxlLmRvY3VtZW50Q2hhbmdlcy5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gby5zdHJpbmcoZS5raW5kKT9hci5pcyhlKXx8b3IuaXMoZSl8fHNyLmlzKGUpOmlyLmlzKGUpfSkpfTtici5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixuPXZvaWQgMD09PW4/ZXIuaW5zZXJ0KGUsdCk6bnIuaXMobik/cnIuaW5zZXJ0KGUsdCxyPW4pOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHI9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UobikscnIuaW5zZXJ0KGUsdCxyKSk7aWYodGhpcy5lZGl0cy5wdXNoKG4pLHZvaWQgMCE9PXIpcmV0dXJuIHJ9LGJyLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixuPXZvaWQgMD09PW4/ZXIucmVwbGFjZShlLHQpOm5yLmlzKG4pP3JyLnJlcGxhY2UoZSx0LHI9bik6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucykscj10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyci5yZXBsYWNlKGUsdCxyKSk7aWYodGhpcy5lZGl0cy5wdXNoKG4pLHZvaWQgMCE9PXIpcmV0dXJuIHJ9LGJyLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix0PXZvaWQgMD09PXQ/ZXIuZGVsKGUpOm5yLmlzKHQpP3JyLmRlbChlLG49dCk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksbj10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZSh0KSxyci5kZWwoZSxuKSk7aWYodGhpcy5lZGl0cy5wdXNoKHQpLHZvaWQgMCE9PW4pcmV0dXJuIG59LGJyLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxici5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRpdHN9LGJyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZWRpdHMuc3BsaWNlKDAsdGhpcy5lZGl0cy5sZW5ndGgpfSxici5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX07dmFyIGdyPWJyO2Z1bmN0aW9uIGJyKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1Cci5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQnIucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksQnIucHJvdG90eXBlLm1hbmFnZT1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKG5yLmlzKGUpP249ZToobj10aGlzLm5leHRJZCgpLHQ9ZSksdm9pZCAwIT09dGhpcy5fYW5ub3RhdGlvbnNbbl0pdGhyb3cgbmV3IEVycm9yKCJJZCAiK24rIiBpcyBhbHJlYWR5IGluIHVzZS4iKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiTm8gYW5ub3RhdGlvbiBwcm92aWRlZCBmb3IgaWQgIituKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbnNbbl09dCx0aGlzLl9zaXplKyssbn0sQnIucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfTt2YXIgX3Isd3IsdnIseXIsVHIsa3IsU3IsQ3IseHIsTHIsQXIsRXIsTXIsUnIsSXIsTnIsVXIsenIsSHIsRHIsV3IsUHIsT3IscXIsRnIsVnI9QnI7ZnVuY3Rpb24gQnIoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1mdW5jdGlvbiBLcihuKXt2YXIgcj10aGlzO3RoaXMuX3RleHRFZGl0Q2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpLHZvaWQgMCE9PW4/KHRoaXMuX3dvcmtzcGFjZUVkaXQ9bikuZG9jdW1lbnRDaGFuZ2VzPyh0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgVnIobi5jaGFuZ2VBbm5vdGF0aW9ucyksbi5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSxuLmRvY3VtZW50Q2hhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0O2lyLmlzKGUpJiYodD1uZXcgZ3IoZS5lZGl0cyxyLl9jaGFuZ2VBbm5vdGF0aW9ucyksci5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09dCl9KSk6bi5jaGFuZ2VzJiZPYmplY3Qua2V5cyhuLmNoYW5nZXMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGdyKG4uY2hhbmdlc1tlXSk7ci5fdGV4dEVkaXRDaGFuZ2VzW2VdPXR9KTp0aGlzLl93b3Jrc3BhY2VFZGl0PXt9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShLci5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLEtyLnByb3RvdHlwZS5nZXRUZXh0RWRpdENoYW5nZT1mdW5jdGlvbihlKXtpZihfci5pcyhlKSl7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgdD17dXJpOmUudXJpLHZlcnNpb246ZS52ZXJzaW9ufTtyZXR1cm4obj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKXx8KHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goe3RleHREb2N1bWVudDp0LGVkaXRzOnI9W119KSxuPW5ldyBncihyLHRoaXMuX2NoYW5nZUFubm90YXRpb25zKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldPW4pLG59aWYodGhpcy5pbml0Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBub3JtYWwgdGV4dCBlZGl0IGNoYW5nZXMuIik7dmFyIG4scjtyZXR1cm4obj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pfHwodGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzW2VdPXI9W10sbj1uZXcgZ3IociksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdPW4pLG59LEtyLnByb3RvdHlwZS5pbml0RG9jdW1lbnRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBWcix0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcz1bXSx0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKX0sS3IucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sS3IucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaTtpZih0ci5pcyh0KXx8bnIuaXModCk/cj10Om49dCx0PXZvaWQgMD09PXI/YXIuY3JlYXRlKGUsbik6KGk9bnIuaXMocik/cjp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UociksYXIuY3JlYXRlKGUsbixpKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaCh0KSx2b2lkIDAhPT1pKXJldHVybiBpfSxLci5wcm90b3R5cGUucmVuYW1lRmlsZT1mdW5jdGlvbihlLHQsbixyKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciBpLGE7aWYodHIuaXMobil8fG5yLmlzKG4pP2k9bjpyPW4sbj12b2lkIDA9PT1pP29yLmNyZWF0ZShlLHQscik6KGE9bnIuaXMoaSk/aTp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoaSksb3IuY3JlYXRlKGUsdCxyLGEpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKG4pLHZvaWQgMCE9PWEpcmV0dXJuIGF9LEtyLnByb3RvdHlwZS5kZWxldGVGaWxlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciByLGk7aWYodHIuaXModCl8fG5yLmlzKHQpP3I9dDpuPXQsdD12b2lkIDA9PT1yP3NyLmNyZWF0ZShlLG4pOihpPW5yLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLHNyLmNyZWF0ZShlLG4saSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2godCksdm9pZCAwIT09aSlyZXR1cm4gaX0sKHdyPV9yPV9yfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHZlcnNpb246dH19LHdyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmluZWQoZSkmJm8uc3RyaW5nKGUudXJpKSYmKG51bGw9PT1lLnZlcnNpb258fG8uaW50ZWdlcihlLnZlcnNpb24pKX0sKHlyPXZyPXZyfHx7fSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLHlyLk1hcmtkb3duPSJtYXJrZG93biIsKFRyPXZyPXZyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1Uci5QbGFpblRleHR8fGU9PT1Uci5NYXJrZG93bn0sKGtyfHwoa3I9e30pKS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBvLm9iamVjdExpdGVyYWwoZSkmJnZyLmlzKHQua2luZCkmJm8uc3RyaW5nKHQudmFsdWUpfSwoQ3I9U3I9U3J8fHt9KS5UZXh0PTEsQ3IuTWV0aG9kPTIsQ3IuRnVuY3Rpb249MyxDci5Db25zdHJ1Y3Rvcj00LENyLkZpZWxkPTUsQ3IuVmFyaWFibGU9NixDci5DbGFzcz03LENyLkludGVyZmFjZT04LENyLk1vZHVsZT05LENyLlByb3BlcnR5PTEwLENyLlVuaXQ9MTEsQ3IuVmFsdWU9MTIsQ3IuRW51bT0xMyxDci5LZXl3b3JkPTE0LENyLlNuaXBwZXQ9MTUsQ3IuQ29sb3I9MTYsQ3IuRmlsZT0xNyxDci5SZWZlcmVuY2U9MTgsQ3IuRm9sZGVyPTE5LENyLkVudW1NZW1iZXI9MjAsQ3IuQ29uc3RhbnQ9MjEsQ3IuU3RydWN0PTIyLENyLkV2ZW50PTIzLENyLk9wZXJhdG9yPTI0LENyLlR5cGVQYXJhbWV0ZXI9MjUsKExyPXhyPXhyfHx7fSkuUGxhaW5UZXh0PTEsTHIuU25pcHBldD0yLChBcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm57bGFiZWw6ZX19LChFcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntpdGVtczplfHxbXSxpc0luY29tcGxldGU6ISF0fX0sKFJyPU1yPU1yfHx7fSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LFJyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLnN0cmluZyhlKXx8by5vYmplY3RMaXRlcmFsKGUpJiZvLnN0cmluZyhlLmxhbmd1YWdlKSYmby5zdHJpbmcoZS52YWx1ZSl9LChJcnx8e30pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuISF0JiZvLm9iamVjdExpdGVyYWwodCkmJihrci5pcyh0LmNvbnRlbnRzKXx8TXIuaXModC5jb250ZW50cyl8fG8udHlwZWRBcnJheSh0LmNvbnRlbnRzLE1yLmlzKSkmJih2b2lkIDA9PT1lLnJhbmdlfHxYbi5pcyhlLnJhbmdlKSl9LChOcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwoVXJ8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTtyZXR1cm4gZT17bGFiZWw6ZX0sby5kZWZpbmVkKHQpJiYoZS5kb2N1bWVudGF0aW9uPXQpLG8uZGVmaW5lZChuKT9lLnBhcmFtZXRlcnM9bjplLnBhcmFtZXRlcnM9W10sZX0sKEhyPXpyPXpyfHx7fSkuVGV4dD0xLEhyLlJlYWQ9MixIci5Xcml0ZT0zLChEcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPXtyYW5nZTplfSxvLm51bWJlcih0KSYmKGUua2luZD10KSxlfSwoUHI9V3I9V3J8fHt9KS5GaWxlPTEsUHIuTW9kdWxlPTIsUHIuTmFtZXNwYWNlPTMsUHIuUGFja2FnZT00LFByLkNsYXNzPTUsUHIuTWV0aG9kPTYsUHIuUHJvcGVydHk9NyxQci5GaWVsZD04LFByLkNvbnN0cnVjdG9yPTksUHIuRW51bT0xMCxQci5JbnRlcmZhY2U9MTEsUHIuRnVuY3Rpb249MTIsUHIuVmFyaWFibGU9MTMsUHIuQ29uc3RhbnQ9MTQsUHIuU3RyaW5nPTE1LFByLk51bWJlcj0xNixQci5Cb29sZWFuPTE3LFByLkFycmF5PTE4LFByLk9iamVjdD0xOSxQci5LZXk9MjAsUHIuTnVsbD0yMSxQci5FbnVtTWVtYmVyPTIyLFByLlN0cnVjdD0yMyxQci5FdmVudD0yNCxQci5PcGVyYXRvcj0yNSxQci5UeXBlUGFyYW1ldGVyPTI2LChPcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiBlPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX0saSYmKGUuY29udGFpbmVyTmFtZT1pKSxlfSwoRnI9cXI9cXJ8fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxwYXJlbnQ6dH19LEZyLmlzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiZYbi5pcyhlLnJhbmdlKSYmKHZvaWQgMD09PWUucGFyZW50fHxGci5pcyhlLnBhcmVudCkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJHIucHJvdG90eXBlLCJ1cmkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXJpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkci5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJHIucHJvdG90eXBlLCJ2ZXJzaW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksJHIucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGU/KHQ9dGhpcy5vZmZzZXRBdChlLnN0YXJ0KSxlPXRoaXMub2Zmc2V0QXQoZS5lbmQpLHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsZSkpOnRoaXMuX2NvbnRlbnR9LCRyLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb250ZW50PWUudGV4dCx0aGlzLl92ZXJzaW9uPXQsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfSwkci5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKSxuPSJcciI9PT1pfHwiXG4iPT09aTsiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJjA8dC5sZW5ndGgmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LCRyLnByb3RvdHlwZS5wb3NpdGlvbkF0PWZ1bmN0aW9uKGUpe2U9TWF0aC5tYXgoTWF0aC5taW4oZSx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpLG49MCxyPXQubGVuZ3RoO2lmKDA9PT1yKXJldHVybiBKbi5jcmVhdGUoMCxlKTtmb3IoO248cjspe3ZhciBpPU1hdGguZmxvb3IoKG4rcikvMik7dFtpXT5lP3I9aTpuPWkrMX12YXIgYT1uLTE7cmV0dXJuIEpuLmNyZWF0ZShhLGUtdFthXSl9LCRyLnByb3RvdHlwZS5vZmZzZXRBdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCk7aWYoZS5saW5lPj10Lmxlbmd0aClyZXR1cm4gdGhpcy5fY29udGVudC5sZW5ndGg7aWYoZS5saW5lPDApcmV0dXJuIDA7dmFyIG49dFtlLmxpbmVdLHQ9ZS5saW5lKzE8dC5sZW5ndGg/dFtlLmxpbmUrMV06dGhpcy5fY29udGVudC5sZW5ndGg7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKG4rZS5jaGFyYWN0ZXIsdCksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkci5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBvLGpyLEdyO2Z1bmN0aW9uICRyKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl92ZXJzaW9uPW4sdGhpcy5fY29udGVudD1yLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1qcj1vPW98fHt9LEdyPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsanIuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZX0sanIudW5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lfSxqci5ib29sZWFuPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZXx8ITE9PT1lfSxqci5zdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1Hci5jYWxsKGUpfSxqci5udW1iZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1Hci5jYWxsKGUpfSxqci5udW1iZXJSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1Hci5jYWxsKGUpJiZ0PD1lJiZlPD1ufSxqci5pbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09R3IuY2FsbChlKSYmLTIxNDc0ODM2NDg8PWUmJmU8PTIxNDc0ODM2NDd9LGpyLnVpbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09R3IuY2FsbChlKSYmMDw9ZSYmZTw9MjE0NzQ4MzY0N30sanIuZnVuYz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09R3IuY2FsbChlKX0sanIub2JqZWN0TGl0ZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX0sanIudHlwZWRBcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KHQpfTt2YXIgSnIsTSxyLFIsWHIsWXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PXIsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWdldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBsYW5ndWFnZUlkKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn1nZXRUZXh0KGUpe3ZhciB0O3JldHVybiBlPyh0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksZT10aGlzLm9mZnNldEF0KGUuZW5kKSx0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LGUpKTp0aGlzLl9jb250ZW50fXVwZGF0ZShlLHQpe2Zvcih2YXIgciBvZiBlKWlmKFlyLmlzSW5jcmVtZW50YWwocikpe3ZhciBpPVpyKHIucmFuZ2UpLGE9dGhpcy5vZmZzZXRBdChpLnN0YXJ0KSxvPXRoaXMub2Zmc2V0QXQoaS5lbmQpLHM9KHRoaXMuX2NvbnRlbnQ9dGhpcy5fY29udGVudC5zdWJzdHJpbmcoMCxhKStyLnRleHQrdGhpcy5fY29udGVudC5zdWJzdHJpbmcobyx0aGlzLl9jb250ZW50Lmxlbmd0aCksTWF0aC5tYXgoaS5zdGFydC5saW5lLDApKSxpPU1hdGgubWF4KGkuZW5kLmxpbmUsMCk7bGV0IG49dGhpcy5fbGluZU9mZnNldHM7dmFyIGw9UXIoci50ZXh0LCExLGEpO2lmKGktcz09PWwubGVuZ3RoKWZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyluW2UrcysxXT1sW2VdO2Vsc2UgbC5sZW5ndGg8MWU0P24uc3BsaWNlKHMrMSxpLXMsLi4ubCk6dGhpcy5fbGluZU9mZnNldHM9bj1uLnNsaWNlKDAscysxKS5jb25jYXQobCxuLnNsaWNlKGkrMSkpO3ZhciBoPXIudGV4dC5sZW5ndGgtKG8tYSk7aWYoMCE9aClmb3IobGV0IGU9cysxK2wubGVuZ3RoLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdPW5bZV0raH1lbHNle2lmKCFZci5pc0Z1bGwocikpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNoYW5nZSBldmVudCByZWNlaXZlZCIpO3RoaXMuX2NvbnRlbnQ9ci50ZXh0LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH10aGlzLl92ZXJzaW9uPXR9Z2V0TGluZU9mZnNldHMoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fbGluZU9mZnNldHMmJih0aGlzLl9saW5lT2Zmc2V0cz1Rcih0aGlzLl9jb250ZW50LCEwKSksdGhpcy5fbGluZU9mZnNldHN9cG9zaXRpb25BdChlKXtlPU1hdGgubWF4KE1hdGgubWluKGUsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtsZXQgbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9dmFyIGE9bi0xO3JldHVybntsaW5lOmEsY2hhcmFjdGVyOmUtdFthXX19b2Zmc2V0QXQoZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSx0PWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHQpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtyZXR1cm4gbnVsbCE9ZSYmInN0cmluZyI9PXR5cGVvZiBlLnRleHQmJnZvaWQgMCE9PWUucmFuZ2UmJih2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIGUucmFuZ2VMZW5ndGgpfXN0YXRpYyBpc0Z1bGwoZSl7cmV0dXJuIG51bGwhPWUmJiJzdHJpbmciPT10eXBlb2YgZS50ZXh0JiZ2b2lkIDA9PT1lLnJhbmdlJiZ2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofX07ZnVuY3Rpb24gUXIodCxlLG49MCl7Y29uc3Qgcj1lP1tuXTpbXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9dC5jaGFyQ29kZUF0KGUpOzEzIT09aSYmMTAhPT1pfHwoMTM9PT1pJiZlKzE8dC5sZW5ndGgmJjEwPT09dC5jaGFyQ29kZUF0KGUrMSkmJmUrKyxyLnB1c2gobitlKzEpKX1yZXR1cm4gcn1mdW5jdGlvbiBacihlKXt2YXIgdD1lLnN0YXJ0LG49ZS5lbmQ7cmV0dXJuIHQubGluZT5uLmxpbmV8fHQubGluZT09PW4ubGluZSYmdC5jaGFyYWN0ZXI+bi5jaGFyYWN0ZXI/e3N0YXJ0Om4sZW5kOnR9OmV9ZnVuY3Rpb24gZWkoZSl7dmFyIHQ9WnIoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfShOPUpyPUpyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgWXIoZSx0LG4scil9LE4udXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZihlIGluc3RhbmNlb2YgWXIpcmV0dXJuIGUudXBkYXRlKHQsbiksZTt0aHJvdyBuZXcgRXJyb3IoIlRleHREb2N1bWVudC51cGRhdGU6IGRvY3VtZW50IG11c3QgYmUgY3JlYXRlZCBieSBUZXh0RG9jdW1lbnQuY3JlYXRlIil9LE4uYXBwbHlFZGl0cz1mdW5jdGlvbihlLHQpe2xldCBuPWUuZ2V0VGV4dCgpLHI9MDtjb25zdCBpPVtdO2Zvcihjb25zdCBvIG9mIGZ1bmN0aW9uIGUodCxuKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm4gdDtjb25zdCByPXQubGVuZ3RoLzJ8MDtjb25zdCBpPXQuc2xpY2UoMCxyKTtjb25zdCBhPXQuc2xpY2Uocik7ZShpLG4pO2UoYSxuKTtsZXQgbz0wO2xldCBzPTA7bGV0IGw9MDtmb3IoO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXtsZXQgZT1uKGlbb10sYVtzXSk7ZTw9MD90W2wrK109aVtvKytdOnRbbCsrXT1hW3MrK119Zm9yKDtvPGkubGVuZ3RoOyl0W2wrK109aVtvKytdO2Zvcig7czxhLmxlbmd0aDspdFtsKytdPWFbcysrXTtyZXR1cm4gdH0odC5tYXAoZWkpLChlLHQpPT57dmFyIG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpe3ZhciBhPWUub2Zmc2V0QXQoby5yYW5nZS5zdGFydCk7aWYoYTxyKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO2E+ciYmaS5wdXNoKG4uc3Vic3RyaW5nKHIsYSkpLG8ubmV3VGV4dC5sZW5ndGgmJmkucHVzaChvLm5ld1RleHQpLHI9ZS5vZmZzZXRBdChvLnJhbmdlLmVuZCl9cmV0dXJuIGkucHVzaChuLnN1YnN0cihyKSksaS5qb2luKCIiKX0sKHI9TT1NfHx7fSlbci5TdGFydENvbW1lbnRUYWc9MF09IlN0YXJ0Q29tbWVudFRhZyIscltyLkNvbW1lbnQ9MV09IkNvbW1lbnQiLHJbci5FbmRDb21tZW50VGFnPTJdPSJFbmRDb21tZW50VGFnIixyW3IuU3RhcnRUYWdPcGVuPTNdPSJTdGFydFRhZ09wZW4iLHJbci5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixyW3IuU3RhcnRUYWdTZWxmQ2xvc2U9NV09IlN0YXJ0VGFnU2VsZkNsb3NlIixyW3IuU3RhcnRUYWc9Nl09IlN0YXJ0VGFnIixyW3IuRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIscltyLkVuZFRhZ0Nsb3NlPThdPSJFbmRUYWdDbG9zZSIscltyLkVuZFRhZz05XT0iRW5kVGFnIixyW3IuRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixyW3IuQXR0cmlidXRlTmFtZT0xMV09IkF0dHJpYnV0ZU5hbWUiLHJbci5BdHRyaWJ1dGVWYWx1ZT0xMl09IkF0dHJpYnV0ZVZhbHVlIixyW3IuU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixyW3IuRG9jdHlwZT0xNF09IkRvY3R5cGUiLHJbci5FbmREb2N0eXBlVGFnPTE1XT0iRW5kRG9jdHlwZVRhZyIscltyLkNvbnRlbnQ9MTZdPSJDb250ZW50IixyW3IuV2hpdGVzcGFjZT0xN109IldoaXRlc3BhY2UiLHJbci5Vbmtub3duPTE4XT0iVW5rbm93biIscltyLlNjcmlwdD0xOV09IlNjcmlwdCIscltyLlN0eWxlcz0yMF09IlN0eWxlcyIscltyLkVPUz0yMV09IkVPUyIsKG49Uj1SfHx7fSlbbi5XaXRoaW5Db250ZW50PTBdPSJXaXRoaW5Db250ZW50IixuW24uQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixuW24uQWZ0ZXJPcGVuaW5nRW5kVGFnPTJdPSJBZnRlck9wZW5pbmdFbmRUYWciLG5bbi5XaXRoaW5Eb2N0eXBlPTNdPSJXaXRoaW5Eb2N0eXBlIixuW24uV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLG5bbi5XaXRoaW5FbmRUYWc9NV09IldpdGhpbkVuZFRhZyIsbltuLldpdGhpbkNvbW1lbnQ9Nl09IldpdGhpbkNvbW1lbnQiLG5bbi5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixuW24uV2l0aGluU3R5bGVDb250ZW50PThdPSJXaXRoaW5TdHlsZUNvbnRlbnQiLG5bbi5BZnRlckF0dHJpYnV0ZU5hbWU9OV09IkFmdGVyQXR0cmlidXRlTmFtZSIsbltuLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLHZyLk1hcmtkb3duLHZyLlBsYWluVGV4dCx2ci5NYXJrZG93bix2ci5QbGFpblRleHQsKGU9WHI9WHJ8fHt9KVtlLlVua25vd249MF09IlVua25vd24iLGVbZS5GaWxlPTFdPSJGaWxlIixlW2UuRGlyZWN0b3J5PTJdPSJEaXJlY3RvcnkiLGVbZS5TeW1ib2xpY0xpbms9NjRdPSJTeW1ib2xpY0xpbmsiO3ZhciB0aT1mcixuaT0ocmkucHJvdG90eXBlLmVvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn0scmkucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZX0scmkucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxyaS5wcm90b3R5cGUuZ29CYWNrVG89ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbj1lfSxyaS5wcm90b3R5cGUuZ29CYWNrPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24tPWV9LHJpLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LHJpLnByb3RvdHlwZS5nb1RvRW5kPWZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvbj10aGlzLnNvdXJjZS5sZW5ndGh9LHJpLnByb3RvdHlwZS5uZXh0Q2hhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rKyl8fDB9LHJpLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyhlPXZvaWQgMD09PWU/MDplKSl8fDB9LHJpLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LHJpLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuIHRoaXMuYWR2YW5jZSh0KSwhMH0scmkucHJvdG90eXBlLmFkdmFuY2VJZlJlZ0V4cD1mdW5jdGlvbihlKXtlPXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gZT8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK2UuaW5kZXgrZVswXS5sZW5ndGgsZVswXSk6IiJ9LHJpLnByb3RvdHlwZS5hZHZhbmNlVW50aWxSZWdFeHA9ZnVuY3Rpb24oZSl7ZT10aGlzLnNvdXJjZS5zdWJzdHIodGhpcy5wb3NpdGlvbikubWF0Y2goZSk7cmV0dXJuIGU/KHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbitlLmluZGV4LGVbMF0pOih0aGlzLmdvVG9FbmQoKSwiIil9LHJpLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFyPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5wb3NpdGlvbjx0aGlzLnNvdXJjZS5sZW5ndGg7KXtpZih0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pPT09ZSlyZXR1cm4hMDt0aGlzLmFkdmFuY2UoMSl9cmV0dXJuITF9LHJpLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0scmkucHJvdG90eXBlLnNraXBXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5hZHZhbmNlV2hpbGVDaGFyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09Zml8fGU9PT1naXx8ZT09PXVpfHxlPT09bWl8fGU9PT1waX0pfSxyaS5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0scmkpO2Z1bmN0aW9uIHJpKGUsdCl7dGhpcy5zb3VyY2U9ZSx0aGlzLmxlbj1lLmxlbmd0aCx0aGlzLnBvc2l0aW9uPXR9dmFyIGlpPSIhIi5jaGFyQ29kZUF0KDApLGFpPSItIi5jaGFyQ29kZUF0KDApLG9pPSI8Ii5jaGFyQ29kZUF0KDApLHNpPSI+Ii5jaGFyQ29kZUF0KDApLGxpPSIvIi5jaGFyQ29kZUF0KDApLGhpPSI9Ii5jaGFyQ29kZUF0KDApLGNpPSciJy5jaGFyQ29kZUF0KDApLGRpPSInIi5jaGFyQ29kZUF0KDApLHVpPSJcbiIuY2hhckNvZGVBdCgwKSxwaT0iXHIiLmNoYXJDb2RlQXQoMCksbWk9IlxmIi5jaGFyQ29kZUF0KDApLGZpPSIgIi5jaGFyQ29kZUF0KDApLGdpPSJcdCIuY2hhckNvZGVBdCgwKSxiaT17InRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIjohMCwidGV4dC9odG1sIjohMH07ZnVuY3Rpb24gX2kodCxlLG4sbyl7dm9pZCAwPT09biYmKG49Ui5XaXRoaW5Db250ZW50KSx2b2lkIDA9PT1vJiYobz0hMSk7dmFyIGkscyxsLGgsYyxkPW5ldyBuaSh0LGU9dm9pZCAwPT09ZT8wOmUpLHU9bixyPTAsYT1NLlVua25vd247ZnVuY3Rpb24gbSgpe3JldHVybiBkLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmKCl7cmV0dXJuIGQuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIHI9ZSxpPW4sYT10fXJldHVybntzY2FuOmZ1bmN0aW9uKCl7dmFyIGU9ZC5wb3MoKSx0PXUsbj1mdW5jdGlvbiBlKCl7dmFyIHQ9ZC5wb3MoKTtpZihkLmVvcygpKXJldHVybiBwKHQsTS5FT1MpO3ZhciBuO3N3aXRjaCh1KXtjYXNlIFIuV2l0aGluQ29tbWVudDpyZXR1cm4gZC5hZHZhbmNlSWZDaGFycyhbYWksYWksc2ldKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kQ29tbWVudFRhZykpOihkLmFkdmFuY2VVbnRpbENoYXJzKFthaSxhaSxzaV0pLHAodCxNLkNvbW1lbnQpKTtjYXNlIFIuV2l0aGluRG9jdHlwZTpyZXR1cm4gZC5hZHZhbmNlSWZDaGFyKHNpKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kRG9jdHlwZVRhZykpOihkLmFkdmFuY2VVbnRpbENoYXIoc2kpLHAodCxNLkRvY3R5cGUpKTtjYXNlIFIuV2l0aGluQ29udGVudDppZihkLmFkdmFuY2VJZkNoYXIob2kpKXtpZighZC5lb3MoKSYmZC5wZWVrQ2hhcigpPT09aWkpe2lmKGQuYWR2YW5jZUlmQ2hhcnMoW2lpLGFpLGFpXSkpcmV0dXJuIHU9Ui5XaXRoaW5Db21tZW50LHAodCxNLlN0YXJ0Q29tbWVudFRhZyk7aWYoZC5hZHZhbmNlSWZSZWdFeHAoL14hZG9jdHlwZS9pKSlyZXR1cm4gdT1SLldpdGhpbkRvY3R5cGUscCh0LE0uU3RhcnREb2N0eXBlVGFnKX1yZXR1cm4gZC5hZHZhbmNlSWZDaGFyKGxpKT8odT1SLkFmdGVyT3BlbmluZ0VuZFRhZyxwKHQsTS5FbmRUYWdPcGVuKSk6KHU9Ui5BZnRlck9wZW5pbmdTdGFydFRhZyxwKHQsTS5TdGFydFRhZ09wZW4pKX1yZXR1cm4gZC5hZHZhbmNlVW50aWxDaGFyKG9pKSxwKHQsTS5Db250ZW50KTtjYXNlIFIuQWZ0ZXJPcGVuaW5nRW5kVGFnOnZhciByPW0oKTtyZXR1cm4gMDxyLmxlbmd0aD8odT1SLldpdGhpbkVuZFRhZyxwKHQsTS5FbmRUYWcpKTpkLnNraXBXaGl0ZXNwYWNlKCk/cCh0LE0uV2hpdGVzcGFjZSx0aSgiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKToodT1SLldpdGhpbkVuZFRhZyxkLmFkdmFuY2VVbnRpbENoYXIoc2kpLHQ8ZC5wb3MoKT9wKHQsTS5Vbmtub3duLHRpKCJlcnJvci5lbmRUYWdOYW1lRXhwZWN0ZWQiLCJFbmQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmUoKSk7Y2FzZSBSLldpdGhpbkVuZFRhZzppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO2lmKGQuYWR2YW5jZUlmQ2hhcihzaSkpcmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLkVuZFRhZ0Nsb3NlKTtpZihvJiZkLnBlZWtDaGFyKCk9PT1vaSlyZXR1cm4gdT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kVGFnQ2xvc2UsdGkoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKTtuPXRpKCJlcnJvci5jbG9zaW5nQnJhY2tldEV4cGVjdGVkIiwiQ2xvc2luZyBicmFja2V0IGV4cGVjdGVkLiIpO2JyZWFrO2Nhc2UgUi5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4obD1tKCksaD1jPXZvaWQgMCwwPGwubGVuZ3RoKT8ocz0hMSx1PVIuV2l0aGluVGFnLHAodCxNLlN0YXJ0VGFnKSk6ZC5za2lwV2hpdGVzcGFjZSgpP3AodCxNLldoaXRlc3BhY2UsdGkoImVycm9yLnVuZXhwZWN0ZWRXaGl0ZXNwYWNlIiwiVGFnIG5hbWUgbXVzdCBkaXJlY3RseSBmb2xsb3cgdGhlIG9wZW4gYnJhY2tldC4iKSk6KHU9Ui5XaXRoaW5UYWcsZC5hZHZhbmNlVW50aWxDaGFyKHNpKSx0PGQucG9zKCk/cCh0LE0uVW5rbm93bix0aSgiZXJyb3Iuc3RhcnRUYWdOYW1lRXhwZWN0ZWQiLCJTdGFydCB0YWcgbmFtZSBleHBlY3RlZC4iKSk6ZSgpKTtjYXNlIFIuV2l0aGluVGFnOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOnMmJjA8KGg9ZigpKS5sZW5ndGg/KHU9Ui5BZnRlckF0dHJpYnV0ZU5hbWUscz0hMSxwKHQsTS5BdHRyaWJ1dGVOYW1lKSk6ZC5hZHZhbmNlSWZDaGFycyhbbGksc2ldKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uU3RhcnRUYWdTZWxmQ2xvc2UpKTpkLmFkdmFuY2VJZkNoYXIoc2kpPyh1PSJzY3JpcHQiPT09bD9jJiZiaVtjXT9SLldpdGhpbkNvbnRlbnQ6Ui5XaXRoaW5TY3JpcHRDb250ZW50OiJzdHlsZSI9PT1sP1IuV2l0aGluU3R5bGVDb250ZW50OlIuV2l0aGluQ29udGVudCxwKHQsTS5TdGFydFRhZ0Nsb3NlKSk6byYmZC5wZWVrQ2hhcigpPT09b2k/KHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLlN0YXJ0VGFnQ2xvc2UsdGkoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGQuYWR2YW5jZSgxKSxwKHQsTS5Vbmtub3duLHRpKCJlcnJvci51bmV4cGVjdGVkQ2hhcmFjdGVySW5UYWciLCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiB0YWcuIikpKTtjYXNlIFIuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOmQuYWR2YW5jZUlmQ2hhcihoaSk/KHU9Ui5CZWZvcmVBdHRyaWJ1dGVWYWx1ZSxwKHQsTS5EZWxpbWl0ZXJBc3NpZ24pKToodT1SLldpdGhpblRhZyxlKCkpO2Nhc2UgUi5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO3I9ZC5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZigwPHIubGVuZ3RoKXJldHVybiBkLnBlZWtDaGFyKCk9PT1zaSYmZC5wZWVrQ2hhcigtMSk9PT1saSYmKGQuZ29CYWNrKDEpLHI9ci5zdWJzdHIoMCxyLmxlbmd0aC0xKSksInR5cGUiPT09aCYmKGM9ciksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKTtyPWQucGVla0NoYXIoKTtyZXR1cm4gcj09PWRpfHxyPT09Y2k/KGQuYWR2YW5jZSgxKSxkLmFkdmFuY2VVbnRpbENoYXIocikmJmQuYWR2YW5jZSgxKSwidHlwZSI9PT1oJiYoYz1kLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsZC5wb3MoKS0xKSksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKSk6KHU9Ui5XaXRoaW5UYWcscz0hMSxlKCkpO2Nhc2UgUi5XaXRoaW5TY3JpcHRDb250ZW50OmZvcih2YXIgaT0xOyFkLmVvcygpOyl7dmFyIGE9ZC5hZHZhbmNlSWZSZWdFeHAoLzwhLS18LS0+fDxcLz9zY3JpcHRccypcLz8+Py9pKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIGQuZ29Ub0VuZCgpLHAodCxNLlNjcmlwdCk7aWYoIlx4M2MhLS0iPT09YSkxPT09aSYmKGk9Mik7ZWxzZSBpZigiLS1ceDNlIj09PWEpaT0xO2Vsc2UgaWYoIi8iIT09YVsxXSkyPT09aSYmKGk9Myk7ZWxzZXtpZigzIT09aSl7ZC5nb0JhY2soYS5sZW5ndGgpO2JyZWFrfWk9Mn19cmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHQ8ZC5wb3MoKT9wKHQsTS5TY3JpcHQpOmUoKTtjYXNlIFIuV2l0aGluU3R5bGVDb250ZW50OnJldHVybiBkLmFkdmFuY2VVbnRpbFJlZ0V4cCgvPFwvc3R5bGUvaSksdT1SLldpdGhpbkNvbnRlbnQsdDxkLnBvcygpP3AodCxNLlN0eWxlcyk6ZSgpfWQuYWR2YW5jZSgxKTt1PVIuV2l0aGluQ29udGVudDtyZXR1cm4gcCh0LE0uVW5rbm93bixuKX0oKTtyZXR1cm4gbj09PU0uRU9TfHxlIT09ZC5wb3MoKXx8byYmKG49PT1NLlN0YXJ0VGFnQ2xvc2V8fG49PT1NLkVuZFRhZ0Nsb3NlKT9uOihjb25zb2xlLmxvZygiU2Nhbm5lci5zY2FuIGhhcyBub3QgYWR2YW5jZWQgYXQgb2Zmc2V0ICIrZSsiLCBzdGF0ZSBiZWZvcmU6ICIrdCsiIGFmdGVyOiAiK3UpLGQuYWR2YW5jZSgxKSxwKGUsTS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiByfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBkLnBvcygpLXJ9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGQucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBkLmdldFNvdXJjZSgpLnN1YnN0cmluZyhyLGQucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gd2koZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciB2aT1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIHlpKGUpe3JldHVybiBlJiYwPD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1lLmxlbmd0aC0xO3I8PWk7KXt2YXIgYT0ocitpKS8yfDAsbz1uKGVbYV0sdCk7aWYobzwwKXI9MSthO2Vsc2V7aWYoISgwPG8pKXJldHVybiBhO2k9YS0xfX1yZXR1cm4tKHIrMSl9KHZpLGUudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlLHQpe3JldHVybiBlLmxvY2FsZUNvbXBhcmUodCl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoa2kucHJvdG90eXBlLCJhdHRyaWJ1dGVOYW1lcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXM/T2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKTpbXX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxraS5wcm90b3R5cGUuaXNTYW1lVGFnPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT10aGlzLnRhZz92b2lkIDA9PT1lOnZvaWQgMCE9PWUmJnRoaXMudGFnLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLnRhZy50b0xvd2VyQ2FzZSgpPT09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGtpLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShraS5wcm90b3R5cGUsImxhc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOnZvaWQgMH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxraS5wcm90b3R5cGUuZmluZE5vZGVCZWZvcmU9ZnVuY3Rpb24odCl7dmFyIGU9d2kodGhpcy5jaGlsZHJlbixmdW5jdGlvbihlKXtyZXR1cm4gdDw9ZS5zdGFydH0pLTE7aWYoMDw9ZSl7ZT10aGlzLmNoaWxkcmVuW2VdO2lmKHQ+ZS5zdGFydCl7aWYodDxlLmVuZClyZXR1cm4gZS5maW5kTm9kZUJlZm9yZSh0KTt2YXIgbj1lLmxhc3RDaGlsZDtyZXR1cm4gbiYmbi5lbmQ9PT1lLmVuZD9lLmZpbmROb2RlQmVmb3JlKHQpOmV9fXJldHVybiB0aGlzfSxraS5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbih0KXt2YXIgZT13aSh0aGlzLmNoaWxkcmVuLGZ1bmN0aW9uKGUpe3JldHVybiB0PD1lLnN0YXJ0fSktMTtpZigwPD1lKXtlPXRoaXMuY2hpbGRyZW5bZV07aWYodD5lLnN0YXJ0JiZ0PD1lLmVuZClyZXR1cm4gZS5maW5kTm9kZUF0KHQpfXJldHVybiB0aGlzfTt2YXIgVGk9a2k7ZnVuY3Rpb24ga2koZSx0LG4scil7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PXIsdGhpcy5jbG9zZWQ9ITF9ZnVuY3Rpb24gU2koZSl7Zm9yKHZhciB0PV9pKGUsdm9pZCAwLHZvaWQgMCwhMCksbj1uZXcgVGkoMCxlLmxlbmd0aCxbXSx2b2lkIDApLHI9bixpPS0xLGE9dm9pZCAwLG89bnVsbCxzPXQuc2NhbigpO3MhPT1NLkVPUzspe3N3aXRjaChzKXtjYXNlIE0uU3RhcnRUYWdPcGVuOnZhciBjPW5ldyBUaSh0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGMpLHI9YzticmVhaztjYXNlIE0uU3RhcnRUYWc6ci50YWc9dC5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE0uU3RhcnRUYWdDbG9zZTpyLnBhcmVudCYmKHIuZW5kPXQuZ2V0VG9rZW5FbmQoKSx0LmdldFRva2VuTGVuZ3RoKCk/KHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHIudGFnJiZ5aShyLnRhZykmJihyLmNsb3NlZD0hMCxyPXIucGFyZW50KSk6cj1yLnBhcmVudCk7YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgTS5FbmRUYWdPcGVuOmk9dC5nZXRUb2tlbk9mZnNldCgpLGE9dm9pZCAwO2JyZWFrO2Nhc2UgTS5FbmRUYWc6YT10LmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBNLkVuZFRhZ0Nsb3NlOmZvcih2YXIgbD1yOyFsLmlzU2FtZVRhZyhhKSYmbC5wYXJlbnQ7KWw9bC5wYXJlbnQ7aWYobC5wYXJlbnQpe2Zvcig7ciE9PWw7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6bz10LmdldFRva2VuVGV4dCgpOyhoPXIuYXR0cmlidXRlcyl8fChyLmF0dHJpYnV0ZXM9aD17fSksaFtvXT1udWxsO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZTp2YXIgaCxjPXQuZ2V0VG9rZW5UZXh0KCk7KGg9ci5hdHRyaWJ1dGVzKSYmbyYmKGhbb109YyxvPW51bGwpfXM9dC5zY2FuKCl9Zm9yKDtyLnBhcmVudDspci5lbmQ9ZS5sZW5ndGgsci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyZXR1cm57cm9vdHM6bi5jaGlsZHJlbixmaW5kTm9kZUJlZm9yZTpuLmZpbmROb2RlQmVmb3JlLmJpbmQobiksZmluZE5vZGVBdDpuLmZpbmROb2RlQXQuYmluZChuKX19dmFyIENpPXsiQWFjdXRlOyI6IsOBIixBYWN1dGU6IsOBIiwiYWFjdXRlOyI6IsOhIixhYWN1dGU6IsOhIiwiQWJyZXZlOyI6IsSCIiwiYWJyZXZlOyI6IsSDIiwiYWM7Ijoi4oi+IiwiYWNkOyI6IuKIvyIsImFjRTsiOiLiiL7MsyIsIkFjaXJjOyI6IsOCIixBY2lyYzoiw4IiLCJhY2lyYzsiOiLDoiIsYWNpcmM6IsOiIiwiYWN1dGU7IjoiwrQiLGFjdXRlOiLCtCIsIkFjeTsiOiLQkCIsImFjeTsiOiLQsCIsIkFFbGlnOyI6IsOGIixBRWxpZzoiw4YiLCJhZWxpZzsiOiLDpiIsYWVsaWc6IsOmIiwiYWY7Ijoi4oGhIiwiQWZyOyI6IvCdlIQiLCJhZnI7Ijoi8J2UniIsIkFncmF2ZTsiOiLDgCIsQWdyYXZlOiLDgCIsImFncmF2ZTsiOiLDoCIsYWdyYXZlOiLDoCIsImFsZWZzeW07Ijoi4oS1IiwiYWxlcGg7Ijoi4oS1IiwiQWxwaGE7IjoizpEiLCJhbHBoYTsiOiLOsSIsIkFtYWNyOyI6IsSAIiwiYW1hY3I7IjoixIEiLCJhbWFsZzsiOiLiqL8iLCJBTVA7IjoiJiIsQU1QOiImIiwiYW1wOyI6IiYiLGFtcDoiJiIsIkFuZDsiOiLiqZMiLCJhbmQ7Ijoi4oinIiwiYW5kYW5kOyI6IuKplSIsImFuZGQ7Ijoi4qmcIiwiYW5kc2xvcGU7Ijoi4qmYIiwiYW5kdjsiOiLiqZoiLCJhbmc7Ijoi4oigIiwiYW5nZTsiOiLipqQiLCJhbmdsZTsiOiLiiKAiLCJhbmdtc2Q7Ijoi4oihIiwiYW5nbXNkYWE7Ijoi4qaoIiwiYW5nbXNkYWI7Ijoi4qapIiwiYW5nbXNkYWM7Ijoi4qaqIiwiYW5nbXNkYWQ7Ijoi4qarIiwiYW5nbXNkYWU7Ijoi4qasIiwiYW5nbXNkYWY7Ijoi4qatIiwiYW5nbXNkYWc7Ijoi4qauIiwiYW5nbXNkYWg7Ijoi4qavIiwiYW5ncnQ7Ijoi4oifIiwiYW5ncnR2YjsiOiLiir4iLCJhbmdydHZiZDsiOiLipp0iLCJhbmdzcGg7Ijoi4oiiIiwiYW5nc3Q7Ijoiw4UiLCJhbmd6YXJyOyI6IuKNvCIsIkFvZ29uOyI6IsSEIiwiYW9nb247IjoixIUiLCJBb3BmOyI6IvCdlLgiLCJhb3BmOyI6IvCdlZIiLCJhcDsiOiLiiYgiLCJhcGFjaXI7Ijoi4qmvIiwiYXBFOyI6IuKpsCIsImFwZTsiOiLiiYoiLCJhcGlkOyI6IuKJiyIsImFwb3M7IjoiJyIsIkFwcGx5RnVuY3Rpb247Ijoi4oGhIiwiYXBwcm94OyI6IuKJiCIsImFwcHJveGVxOyI6IuKJiiIsIkFyaW5nOyI6IsOFIixBcmluZzoiw4UiLCJhcmluZzsiOiLDpSIsYXJpbmc6IsOlIiwiQXNjcjsiOiLwnZKcIiwiYXNjcjsiOiLwnZK2IiwiQXNzaWduOyI6IuKJlCIsImFzdDsiOiIqIiwiYXN5bXA7Ijoi4omIIiwiYXN5bXBlcTsiOiLiiY0iLCJBdGlsZGU7Ijoiw4MiLEF0aWxkZToiw4MiLCJhdGlsZGU7Ijoiw6MiLGF0aWxkZToiw6MiLCJBdW1sOyI6IsOEIixBdW1sOiLDhCIsImF1bWw7Ijoiw6QiLGF1bWw6IsOkIiwiYXdjb25pbnQ7Ijoi4oizIiwiYXdpbnQ7Ijoi4qiRIiwiYmFja2Nvbmc7Ijoi4omMIiwiYmFja2Vwc2lsb247Ijoiz7YiLCJiYWNrcHJpbWU7Ijoi4oC1IiwiYmFja3NpbTsiOiLiiL0iLCJiYWNrc2ltZXE7Ijoi4ouNIiwiQmFja3NsYXNoOyI6IuKIliIsIkJhcnY7Ijoi4qunIiwiYmFydmVlOyI6IuKKvSIsIkJhcndlZDsiOiLijIYiLCJiYXJ3ZWQ7Ijoi4oyFIiwiYmFyd2VkZ2U7Ijoi4oyFIiwiYmJyazsiOiLijrUiLCJiYnJrdGJyazsiOiLijrYiLCJiY29uZzsiOiLiiYwiLCJCY3k7Ijoi0JEiLCJiY3k7Ijoi0LEiLCJiZHF1bzsiOiLigJ4iLCJiZWNhdXM7Ijoi4oi1IiwiQmVjYXVzZTsiOiLiiLUiLCJiZWNhdXNlOyI6IuKItSIsImJlbXB0eXY7Ijoi4qawIiwiYmVwc2k7Ijoiz7YiLCJiZXJub3U7Ijoi4oSsIiwiQmVybm91bGxpczsiOiLihKwiLCJCZXRhOyI6Is6SIiwiYmV0YTsiOiLOsiIsImJldGg7Ijoi4oS2IiwiYmV0d2VlbjsiOiLiiawiLCJCZnI7Ijoi8J2UhSIsImJmcjsiOiLwnZSfIiwiYmlnY2FwOyI6IuKLgiIsImJpZ2NpcmM7Ijoi4pevIiwiYmlnY3VwOyI6IuKLgyIsImJpZ29kb3Q7Ijoi4qiAIiwiYmlnb3BsdXM7Ijoi4qiBIiwiYmlnb3RpbWVzOyI6IuKogiIsImJpZ3NxY3VwOyI6IuKohiIsImJpZ3N0YXI7Ijoi4piFIiwiYmlndHJpYW5nbGVkb3duOyI6IuKWvSIsImJpZ3RyaWFuZ2xldXA7Ijoi4pazIiwiYmlndXBsdXM7Ijoi4qiEIiwiYmlndmVlOyI6IuKLgSIsImJpZ3dlZGdlOyI6IuKLgCIsImJrYXJvdzsiOiLipI0iLCJibGFja2xvemVuZ2U7Ijoi4qerIiwiYmxhY2tzcXVhcmU7Ijoi4paqIiwiYmxhY2t0cmlhbmdsZTsiOiLilrQiLCJibGFja3RyaWFuZ2xlZG93bjsiOiLilr4iLCJibGFja3RyaWFuZ2xlbGVmdDsiOiLil4IiLCJibGFja3RyaWFuZ2xlcmlnaHQ7Ijoi4pa4IiwiYmxhbms7Ijoi4pCjIiwiYmxrMTI7Ijoi4paSIiwiYmxrMTQ7Ijoi4paRIiwiYmxrMzQ7Ijoi4paTIiwiYmxvY2s7Ijoi4paIIiwiYm5lOyI6Ij3ig6UiLCJibmVxdWl2OyI6IuKJoeKDpSIsImJOb3Q7Ijoi4qutIiwiYm5vdDsiOiLijJAiLCJCb3BmOyI6IvCdlLkiLCJib3BmOyI6IvCdlZMiLCJib3Q7Ijoi4oqlIiwiYm90dG9tOyI6IuKKpSIsImJvd3RpZTsiOiLii4giLCJib3hib3g7Ijoi4qeJIiwiYm94REw7Ijoi4pWXIiwiYm94RGw7Ijoi4pWWIiwiYm94ZEw7Ijoi4pWVIiwiYm94ZGw7Ijoi4pSQIiwiYm94RFI7Ijoi4pWUIiwiYm94RHI7Ijoi4pWTIiwiYm94ZFI7Ijoi4pWSIiwiYm94ZHI7Ijoi4pSMIiwiYm94SDsiOiLilZAiLCJib3hoOyI6IuKUgCIsImJveEhEOyI6IuKVpiIsImJveEhkOyI6IuKVpCIsImJveGhEOyI6IuKVpSIsImJveGhkOyI6IuKUrCIsImJveEhVOyI6IuKVqSIsImJveEh1OyI6IuKVpyIsImJveGhVOyI6IuKVqCIsImJveGh1OyI6IuKUtCIsImJveG1pbnVzOyI6IuKKnyIsImJveHBsdXM7Ijoi4oqeIiwiYm94dGltZXM7Ijoi4oqgIiwiYm94VUw7Ijoi4pWdIiwiYm94VWw7Ijoi4pWcIiwiYm94dUw7Ijoi4pWbIiwiYm94dWw7Ijoi4pSYIiwiYm94VVI7Ijoi4pWaIiwiYm94VXI7Ijoi4pWZIiwiYm94dVI7Ijoi4pWYIiwiYm94dXI7Ijoi4pSUIiwiYm94VjsiOiLilZEiLCJib3h2OyI6IuKUgiIsImJveFZIOyI6IuKVrCIsImJveFZoOyI6IuKVqyIsImJveHZIOyI6IuKVqiIsImJveHZoOyI6IuKUvCIsImJveFZMOyI6IuKVoyIsImJveFZsOyI6IuKVoiIsImJveHZMOyI6IuKVoSIsImJveHZsOyI6IuKUpCIsImJveFZSOyI6IuKVoCIsImJveFZyOyI6IuKVnyIsImJveHZSOyI6IuKVniIsImJveHZyOyI6IuKUnCIsImJwcmltZTsiOiLigLUiLCJCcmV2ZTsiOiLLmCIsImJyZXZlOyI6IsuYIiwiYnJ2YmFyOyI6IsKmIixicnZiYXI6IsKmIiwiQnNjcjsiOiLihKwiLCJic2NyOyI6IvCdkrciLCJic2VtaTsiOiLigY8iLCJic2ltOyI6IuKIvSIsImJzaW1lOyI6IuKLjSIsImJzb2w7IjoiXFwiLCJic29sYjsiOiLip4UiLCJic29saHN1YjsiOiLin4giLCJidWxsOyI6IuKAoiIsImJ1bGxldDsiOiLigKIiLCJidW1wOyI6IuKJjiIsImJ1bXBFOyI6IuKqriIsImJ1bXBlOyI6IuKJjyIsIkJ1bXBlcTsiOiLiiY4iLCJidW1wZXE7Ijoi4omPIiwiQ2FjdXRlOyI6IsSGIiwiY2FjdXRlOyI6IsSHIiwiQ2FwOyI6IuKLkiIsImNhcDsiOiLiiKkiLCJjYXBhbmQ7Ijoi4qmEIiwiY2FwYnJjdXA7Ijoi4qmJIiwiY2FwY2FwOyI6IuKpiyIsImNhcGN1cDsiOiLiqYciLCJjYXBkb3Q7Ijoi4qmAIiwiQ2FwaXRhbERpZmZlcmVudGlhbEQ7Ijoi4oWFIiwiY2FwczsiOiLiiKnvuIAiLCJjYXJldDsiOiLigYEiLCJjYXJvbjsiOiLLhyIsIkNheWxleXM7Ijoi4oStIiwiY2NhcHM7Ijoi4qmNIiwiQ2Nhcm9uOyI6IsSMIiwiY2Nhcm9uOyI6IsSNIiwiQ2NlZGlsOyI6IsOHIixDY2VkaWw6IsOHIiwiY2NlZGlsOyI6IsOnIixjY2VkaWw6IsOnIiwiQ2NpcmM7IjoixIgiLCJjY2lyYzsiOiLEiSIsIkNjb25pbnQ7Ijoi4oiwIiwiY2N1cHM7Ijoi4qmMIiwiY2N1cHNzbTsiOiLiqZAiLCJDZG90OyI6IsSKIiwiY2RvdDsiOiLEiyIsImNlZGlsOyI6IsK4IixjZWRpbDoiwrgiLCJDZWRpbGxhOyI6IsK4IiwiY2VtcHR5djsiOiLiprIiLCJjZW50OyI6IsKiIixjZW50OiLCoiIsIkNlbnRlckRvdDsiOiLCtyIsImNlbnRlcmRvdDsiOiLCtyIsIkNmcjsiOiLihK0iLCJjZnI7Ijoi8J2UoCIsIkNIY3k7Ijoi0KciLCJjaGN5OyI6ItGHIiwiY2hlY2s7Ijoi4pyTIiwiY2hlY2ttYXJrOyI6IuKckyIsIkNoaTsiOiLOpyIsImNoaTsiOiLPhyIsImNpcjsiOiLil4siLCJjaXJjOyI6IsuGIiwiY2lyY2VxOyI6IuKJlyIsImNpcmNsZWFycm93bGVmdDsiOiLihroiLCJjaXJjbGVhcnJvd3JpZ2h0OyI6IuKGuyIsImNpcmNsZWRhc3Q7Ijoi4oqbIiwiY2lyY2xlZGNpcmM7Ijoi4oqaIiwiY2lyY2xlZGRhc2g7Ijoi4oqdIiwiQ2lyY2xlRG90OyI6IuKKmSIsImNpcmNsZWRSOyI6IsKuIiwiY2lyY2xlZFM7Ijoi4pOIIiwiQ2lyY2xlTWludXM7Ijoi4oqWIiwiQ2lyY2xlUGx1czsiOiLiipUiLCJDaXJjbGVUaW1lczsiOiLiipciLCJjaXJFOyI6IuKngyIsImNpcmU7Ijoi4omXIiwiY2lyZm5pbnQ7Ijoi4qiQIiwiY2lybWlkOyI6IuKrryIsImNpcnNjaXI7Ijoi4qeCIiwiQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyI6IuKIsiIsIkNsb3NlQ3VybHlEb3VibGVRdW90ZTsiOiLigJ0iLCJDbG9zZUN1cmx5UXVvdGU7Ijoi4oCZIiwiY2x1YnM7Ijoi4pmjIiwiY2x1YnN1aXQ7Ijoi4pmjIiwiQ29sb247Ijoi4oi3IiwiY29sb247IjoiOiIsIkNvbG9uZTsiOiLiqbQiLCJjb2xvbmU7Ijoi4omUIiwiY29sb25lcTsiOiLiiZQiLCJjb21tYTsiOiIsIiwiY29tbWF0OyI6IkAiLCJjb21wOyI6IuKIgSIsImNvbXBmbjsiOiLiiJgiLCJjb21wbGVtZW50OyI6IuKIgSIsImNvbXBsZXhlczsiOiLihIIiLCJjb25nOyI6IuKJhSIsImNvbmdkb3Q7Ijoi4qmtIiwiQ29uZ3J1ZW50OyI6IuKJoSIsIkNvbmludDsiOiLiiK8iLCJjb25pbnQ7Ijoi4oiuIiwiQ29udG91ckludGVncmFsOyI6IuKIriIsIkNvcGY7Ijoi4oSCIiwiY29wZjsiOiLwnZWUIiwiY29wcm9kOyI6IuKIkCIsIkNvcHJvZHVjdDsiOiLiiJAiLCJDT1BZOyI6IsKpIixDT1BZOiLCqSIsImNvcHk7IjoiwqkiLGNvcHk6IsKpIiwiY29weXNyOyI6IuKElyIsIkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oizIiwiY3JhcnI7Ijoi4oa1IiwiQ3Jvc3M7Ijoi4qivIiwiY3Jvc3M7Ijoi4pyXIiwiQ3NjcjsiOiLwnZKeIiwiY3NjcjsiOiLwnZK4IiwiY3N1YjsiOiLiq48iLCJjc3ViZTsiOiLiq5EiLCJjc3VwOyI6IuKrkCIsImNzdXBlOyI6IuKrkiIsImN0ZG90OyI6IuKLryIsImN1ZGFycmw7Ijoi4qS4IiwiY3VkYXJycjsiOiLipLUiLCJjdWVwcjsiOiLii54iLCJjdWVzYzsiOiLii58iLCJjdWxhcnI7Ijoi4oa2IiwiY3VsYXJycDsiOiLipL0iLCJDdXA7Ijoi4ouTIiwiY3VwOyI6IuKIqiIsImN1cGJyY2FwOyI6IuKpiCIsIkN1cENhcDsiOiLiiY0iLCJjdXBjYXA7Ijoi4qmGIiwiY3VwY3VwOyI6IuKpiiIsImN1cGRvdDsiOiLiio0iLCJjdXBvcjsiOiLiqYUiLCJjdXBzOyI6IuKIqu+4gCIsImN1cmFycjsiOiLihrciLCJjdXJhcnJtOyI6IuKkvCIsImN1cmx5ZXFwcmVjOyI6IuKLniIsImN1cmx5ZXFzdWNjOyI6IuKLnyIsImN1cmx5dmVlOyI6IuKLjiIsImN1cmx5d2VkZ2U7Ijoi4ouPIiwiY3VycmVuOyI6IsKkIixjdXJyZW46IsKkIiwiY3VydmVhcnJvd2xlZnQ7Ijoi4oa2IiwiY3VydmVhcnJvd3JpZ2h0OyI6IuKGtyIsImN1dmVlOyI6IuKLjiIsImN1d2VkOyI6IuKLjyIsImN3Y29uaW50OyI6IuKIsiIsImN3aW50OyI6IuKIsSIsImN5bGN0eTsiOiLijK0iLCJEYWdnZXI7Ijoi4oChIiwiZGFnZ2VyOyI6IuKAoCIsImRhbGV0aDsiOiLihLgiLCJEYXJyOyI6IuKGoSIsImRBcnI7Ijoi4oeTIiwiZGFycjsiOiLihpMiLCJkYXNoOyI6IuKAkCIsIkRhc2h2OyI6IuKrpCIsImRhc2h2OyI6IuKKoyIsImRia2Fyb3c7Ijoi4qSPIiwiZGJsYWM7Ijoiy50iLCJEY2Fyb247IjoixI4iLCJkY2Fyb247IjoixI8iLCJEY3k7Ijoi0JQiLCJkY3k7Ijoi0LQiLCJERDsiOiLihYUiLCJkZDsiOiLihYYiLCJkZGFnZ2VyOyI6IuKAoSIsImRkYXJyOyI6IuKHiiIsIkREb3RyYWhkOyI6IuKkkSIsImRkb3RzZXE7Ijoi4qm3IiwiZGVnOyI6IsKwIixkZWc6IsKwIiwiRGVsOyI6IuKIhyIsIkRlbHRhOyI6Is6UIiwiZGVsdGE7IjoizrQiLCJkZW1wdHl2OyI6IuKmsSIsImRmaXNodDsiOiLipb8iLCJEZnI7Ijoi8J2UhyIsImRmcjsiOiLwnZShIiwiZEhhcjsiOiLipaUiLCJkaGFybDsiOiLih4MiLCJkaGFycjsiOiLih4IiLCJEaWFjcml0aWNhbEFjdXRlOyI6IsK0IiwiRGlhY3JpdGljYWxEb3Q7Ijoiy5kiLCJEaWFjcml0aWNhbERvdWJsZUFjdXRlOyI6IsudIiwiRGlhY3JpdGljYWxHcmF2ZTsiOiJgIiwiRGlhY3JpdGljYWxUaWxkZTsiOiLLnCIsImRpYW07Ijoi4ouEIiwiRGlhbW9uZDsiOiLii4QiLCJkaWFtb25kOyI6IuKLhCIsImRpYW1vbmRzdWl0OyI6IuKZpiIsImRpYW1zOyI6IuKZpiIsImRpZTsiOiLCqCIsIkRpZmZlcmVudGlhbEQ7Ijoi4oWGIiwiZGlnYW1tYTsiOiLPnSIsImRpc2luOyI6IuKLsiIsImRpdjsiOiLDtyIsImRpdmlkZTsiOiLDtyIsZGl2aWRlOiLDtyIsImRpdmlkZW9udGltZXM7Ijoi4ouHIiwiZGl2b254OyI6IuKLhyIsIkRKY3k7Ijoi0IIiLCJkamN5OyI6ItGSIiwiZGxjb3JuOyI6IuKMniIsImRsY3JvcDsiOiLijI0iLCJkb2xsYXI7IjoiJCIsIkRvcGY7Ijoi8J2UuyIsImRvcGY7Ijoi8J2VlSIsIkRvdDsiOiLCqCIsImRvdDsiOiLLmSIsIkRvdERvdDsiOiLig5wiLCJkb3RlcTsiOiLiiZAiLCJkb3RlcWRvdDsiOiLiiZEiLCJEb3RFcXVhbDsiOiLiiZAiLCJkb3RtaW51czsiOiLiiLgiLCJkb3RwbHVzOyI6IuKIlCIsImRvdHNxdWFyZTsiOiLiiqEiLCJkb3VibGViYXJ3ZWRnZTsiOiLijIYiLCJEb3VibGVDb250b3VySW50ZWdyYWw7Ijoi4oivIiwiRG91YmxlRG90OyI6IsKoIiwiRG91YmxlRG93bkFycm93OyI6IuKHkyIsIkRvdWJsZUxlZnRBcnJvdzsiOiLih5AiLCJEb3VibGVMZWZ0UmlnaHRBcnJvdzsiOiLih5QiLCJEb3VibGVMZWZ0VGVlOyI6IuKrpCIsIkRvdWJsZUxvbmdMZWZ0QXJyb3c7Ijoi4p+4IiwiRG91YmxlTG9uZ0xlZnRSaWdodEFycm93OyI6IuKfuiIsIkRvdWJsZUxvbmdSaWdodEFycm93OyI6IuKfuSIsIkRvdWJsZVJpZ2h0QXJyb3c7Ijoi4oeSIiwiRG91YmxlUmlnaHRUZWU7Ijoi4oqoIiwiRG91YmxlVXBBcnJvdzsiOiLih5EiLCJEb3VibGVVcERvd25BcnJvdzsiOiLih5UiLCJEb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKUiLCJEb3duQXJyb3c7Ijoi4oaTIiwiRG93bmFycm93OyI6IuKHkyIsImRvd25hcnJvdzsiOiLihpMiLCJEb3duQXJyb3dCYXI7Ijoi4qSTIiwiRG93bkFycm93VXBBcnJvdzsiOiLih7UiLCJEb3duQnJldmU7IjoizJEiLCJkb3duZG93bmFycm93czsiOiLih4oiLCJkb3duaGFycG9vbmxlZnQ7Ijoi4oeDIiwiZG93bmhhcnBvb25yaWdodDsiOiLih4IiLCJEb3duTGVmdFJpZ2h0VmVjdG9yOyI6IuKlkCIsIkRvd25MZWZ0VGVlVmVjdG9yOyI6IuKlniIsIkRvd25MZWZ0VmVjdG9yOyI6IuKGvSIsIkRvd25MZWZ0VmVjdG9yQmFyOyI6IuKlliIsIkRvd25SaWdodFRlZVZlY3RvcjsiOiLipZ8iLCJEb3duUmlnaHRWZWN0b3I7Ijoi4oeBIiwiRG93blJpZ2h0VmVjdG9yQmFyOyI6IuKllyIsIkRvd25UZWU7Ijoi4oqkIiwiRG93blRlZUFycm93OyI6IuKGpyIsImRyYmthcm93OyI6IuKkkCIsImRyY29ybjsiOiLijJ8iLCJkcmNyb3A7Ijoi4oyMIiwiRHNjcjsiOiLwnZKfIiwiZHNjcjsiOiLwnZK5IiwiRFNjeTsiOiLQhSIsImRzY3k7Ijoi0ZUiLCJkc29sOyI6IuKntiIsIkRzdHJvazsiOiLEkCIsImRzdHJvazsiOiLEkSIsImR0ZG90OyI6IuKLsSIsImR0cmk7Ijoi4pa/IiwiZHRyaWY7Ijoi4pa+IiwiZHVhcnI7Ijoi4oe1IiwiZHVoYXI7Ijoi4qWvIiwiZHdhbmdsZTsiOiLipqYiLCJEWmN5OyI6ItCPIiwiZHpjeTsiOiLRnyIsImR6aWdyYXJyOyI6IuKfvyIsIkVhY3V0ZTsiOiLDiSIsRWFjdXRlOiLDiSIsImVhY3V0ZTsiOiLDqSIsZWFjdXRlOiLDqSIsImVhc3RlcjsiOiLiqa4iLCJFY2Fyb247IjoixJoiLCJlY2Fyb247IjoixJsiLCJlY2lyOyI6IuKJliIsIkVjaXJjOyI6IsOKIixFY2lyYzoiw4oiLCJlY2lyYzsiOiLDqiIsZWNpcmM6IsOqIiwiZWNvbG9uOyI6IuKJlSIsIkVjeTsiOiLQrSIsImVjeTsiOiLRjSIsImVERG90OyI6IuKptyIsIkVkb3Q7IjoixJYiLCJlRG90OyI6IuKJkSIsImVkb3Q7IjoixJciLCJlZTsiOiLihYciLCJlZkRvdDsiOiLiiZIiLCJFZnI7Ijoi8J2UiCIsImVmcjsiOiLwnZSiIiwiZWc7Ijoi4qqaIiwiRWdyYXZlOyI6IsOIIixFZ3JhdmU6IsOIIiwiZWdyYXZlOyI6IsOoIixlZ3JhdmU6IsOoIiwiZWdzOyI6IuKqliIsImVnc2RvdDsiOiLiqpgiLCJlbDsiOiLiqpkiLCJFbGVtZW50OyI6IuKIiCIsImVsaW50ZXJzOyI6IuKPpyIsImVsbDsiOiLihJMiLCJlbHM7Ijoi4qqVIiwiZWxzZG90OyI6IuKqlyIsIkVtYWNyOyI6IsSSIiwiZW1hY3I7IjoixJMiLCJlbXB0eTsiOiLiiIUiLCJlbXB0eXNldDsiOiLiiIUiLCJFbXB0eVNtYWxsU3F1YXJlOyI6IuKXuyIsImVtcHR5djsiOiLiiIUiLCJFbXB0eVZlcnlTbWFsbFNxdWFyZTsiOiLilqsiLCJlbXNwOyI6IuKAgyIsImVtc3AxMzsiOiLigIQiLCJlbXNwMTQ7Ijoi4oCFIiwiRU5HOyI6IsWKIiwiZW5nOyI6IsWLIiwiZW5zcDsiOiLigIIiLCJFb2dvbjsiOiLEmCIsImVvZ29uOyI6IsSZIiwiRW9wZjsiOiLwnZS8IiwiZW9wZjsiOiLwnZWWIiwiZXBhcjsiOiLii5UiLCJlcGFyc2w7Ijoi4qejIiwiZXBsdXM7Ijoi4qmxIiwiZXBzaTsiOiLOtSIsIkVwc2lsb247IjoizpUiLCJlcHNpbG9uOyI6Is61IiwiZXBzaXY7Ijoiz7UiLCJlcWNpcmM7Ijoi4omWIiwiZXFjb2xvbjsiOiLiiZUiLCJlcXNpbTsiOiLiiYIiLCJlcXNsYW50Z3RyOyI6IuKqliIsImVxc2xhbnRsZXNzOyI6IuKqlSIsIkVxdWFsOyI6IuKptSIsImVxdWFsczsiOiI9IiwiRXF1YWxUaWxkZTsiOiLiiYIiLCJlcXVlc3Q7Ijoi4omfIiwiRXF1aWxpYnJpdW07Ijoi4oeMIiwiZXF1aXY7Ijoi4omhIiwiZXF1aXZERDsiOiLiqbgiLCJlcXZwYXJzbDsiOiLip6UiLCJlcmFycjsiOiLipbEiLCJlckRvdDsiOiLiiZMiLCJFc2NyOyI6IuKEsCIsImVzY3I7Ijoi4oSvIiwiZXNkb3Q7Ijoi4omQIiwiRXNpbTsiOiLiqbMiLCJlc2ltOyI6IuKJgiIsIkV0YTsiOiLOlyIsImV0YTsiOiLOtyIsIkVUSDsiOiLDkCIsRVRIOiLDkCIsImV0aDsiOiLDsCIsZXRoOiLDsCIsIkV1bWw7Ijoiw4siLEV1bWw6IsOLIiwiZXVtbDsiOiLDqyIsZXVtbDoiw6siLCJldXJvOyI6IuKCrCIsImV4Y2w7IjoiISIsImV4aXN0OyI6IuKIgyIsIkV4aXN0czsiOiLiiIMiLCJleHBlY3RhdGlvbjsiOiLihLAiLCJFeHBvbmVudGlhbEU7Ijoi4oWHIiwiZXhwb25lbnRpYWxlOyI6IuKFhyIsImZhbGxpbmdkb3RzZXE7Ijoi4omSIiwiRmN5OyI6ItCkIiwiZmN5OyI6ItGEIiwiZmVtYWxlOyI6IuKZgCIsImZmaWxpZzsiOiLvrIMiLCJmZmxpZzsiOiLvrIAiLCJmZmxsaWc7Ijoi76yEIiwiRmZyOyI6IvCdlIkiLCJmZnI7Ijoi8J2UoyIsImZpbGlnOyI6Iu+sgSIsIkZpbGxlZFNtYWxsU3F1YXJlOyI6IuKXvCIsIkZpbGxlZFZlcnlTbWFsbFNxdWFyZTsiOiLilqoiLCJmamxpZzsiOiJmaiIsImZsYXQ7Ijoi4pmtIiwiZmxsaWc7Ijoi76yCIiwiZmx0bnM7Ijoi4paxIiwiZm5vZjsiOiLGkiIsIkZvcGY7Ijoi8J2UvSIsImZvcGY7Ijoi8J2VlyIsIkZvckFsbDsiOiLiiIAiLCJmb3JhbGw7Ijoi4oiAIiwiZm9yazsiOiLii5QiLCJmb3JrdjsiOiLiq5kiLCJGb3VyaWVydHJmOyI6IuKEsSIsImZwYXJ0aW50OyI6IuKojSIsImZyYWMxMjsiOiLCvSIsZnJhYzEyOiLCvSIsImZyYWMxMzsiOiLihZMiLCJmcmFjMTQ7IjoiwrwiLGZyYWMxNDoiwrwiLCJmcmFjMTU7Ijoi4oWVIiwiZnJhYzE2OyI6IuKFmSIsImZyYWMxODsiOiLihZsiLCJmcmFjMjM7Ijoi4oWUIiwiZnJhYzI1OyI6IuKFliIsImZyYWMzNDsiOiLCviIsZnJhYzM0OiLCviIsImZyYWMzNTsiOiLihZciLCJmcmFjMzg7Ijoi4oWcIiwiZnJhYzQ1OyI6IuKFmCIsImZyYWM1NjsiOiLihZoiLCJmcmFjNTg7Ijoi4oWdIiwiZnJhYzc4OyI6IuKFniIsImZyYXNsOyI6IuKBhCIsImZyb3duOyI6IuKMoiIsIkZzY3I7Ijoi4oSxIiwiZnNjcjsiOiLwnZK7IiwiZ2FjdXRlOyI6Ise1IiwiR2FtbWE7IjoizpMiLCJnYW1tYTsiOiLOsyIsIkdhbW1hZDsiOiLPnCIsImdhbW1hZDsiOiLPnSIsImdhcDsiOiLiqoYiLCJHYnJldmU7IjoixJ4iLCJnYnJldmU7IjoixJ8iLCJHY2VkaWw7IjoixKIiLCJHY2lyYzsiOiLEnCIsImdjaXJjOyI6IsSdIiwiR2N5OyI6ItCTIiwiZ2N5OyI6ItCzIiwiR2RvdDsiOiLEoCIsImdkb3Q7IjoixKEiLCJnRTsiOiLiiaciLCJnZTsiOiLiiaUiLCJnRWw7Ijoi4qqMIiwiZ2VsOyI6IuKLmyIsImdlcTsiOiLiiaUiLCJnZXFxOyI6IuKJpyIsImdlcXNsYW50OyI6IuKpviIsImdlczsiOiLiqb4iLCJnZXNjYzsiOiLiqqkiLCJnZXNkb3Q7Ijoi4qqAIiwiZ2VzZG90bzsiOiLiqoIiLCJnZXNkb3RvbDsiOiLiqoQiLCJnZXNsOyI6IuKLm++4gCIsImdlc2xlczsiOiLiqpQiLCJHZnI7Ijoi8J2UiiIsImdmcjsiOiLwnZSkIiwiR2c7Ijoi4ouZIiwiZ2c7Ijoi4omrIiwiZ2dnOyI6IuKLmSIsImdpbWVsOyI6IuKEtyIsIkdKY3k7Ijoi0IMiLCJnamN5OyI6ItGTIiwiZ2w7Ijoi4om3IiwiZ2xhOyI6IuKqpSIsImdsRTsiOiLiqpIiLCJnbGo7Ijoi4qqkIiwiZ25hcDsiOiLiqooiLCJnbmFwcHJveDsiOiLiqooiLCJnbkU7Ijoi4ompIiwiZ25lOyI6IuKqiCIsImduZXE7Ijoi4qqIIiwiZ25lcXE7Ijoi4ompIiwiZ25zaW07Ijoi4ounIiwiR29wZjsiOiLwnZS+IiwiZ29wZjsiOiLwnZWYIiwiZ3JhdmU7IjoiYCIsIkdyZWF0ZXJFcXVhbDsiOiLiiaUiLCJHcmVhdGVyRXF1YWxMZXNzOyI6IuKLmyIsIkdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnIiwiR3JlYXRlckdyZWF0ZXI7Ijoi4qqiIiwiR3JlYXRlckxlc3M7Ijoi4om3IiwiR3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+IiwiR3JlYXRlclRpbGRlOyI6IuKJsyIsIkdzY3I7Ijoi8J2SoiIsImdzY3I7Ijoi4oSKIiwiZ3NpbTsiOiLiibMiLCJnc2ltZTsiOiLiqo4iLCJnc2ltbDsiOiLiqpAiLCJHVDsiOiI+IixHVDoiPiIsIkd0OyI6IuKJqyIsImd0OyI6Ij4iLGd0OiI+IiwiZ3RjYzsiOiLiqqciLCJndGNpcjsiOiLiqboiLCJndGRvdDsiOiLii5ciLCJndGxQYXI7Ijoi4qaVIiwiZ3RxdWVzdDsiOiLiqbwiLCJndHJhcHByb3g7Ijoi4qqGIiwiZ3RyYXJyOyI6IuKluCIsImd0cmRvdDsiOiLii5ciLCJndHJlcWxlc3M7Ijoi4oubIiwiZ3RyZXFxbGVzczsiOiLiqowiLCJndHJsZXNzOyI6IuKJtyIsImd0cnNpbTsiOiLiibMiLCJndmVydG5lcXE7Ijoi4omp77iAIiwiZ3ZuRTsiOiLiianvuIAiLCJIYWNlazsiOiLLhyIsImhhaXJzcDsiOiLigIoiLCJoYWxmOyI6IsK9IiwiaGFtaWx0OyI6IuKEiyIsIkhBUkRjeTsiOiLQqiIsImhhcmRjeTsiOiLRiiIsImhBcnI7Ijoi4oeUIiwiaGFycjsiOiLihpQiLCJoYXJyY2lyOyI6IuKliCIsImhhcnJ3OyI6IuKGrSIsIkhhdDsiOiJeIiwiaGJhcjsiOiLihI8iLCJIY2lyYzsiOiLEpCIsImhjaXJjOyI6IsSlIiwiaGVhcnRzOyI6IuKZpSIsImhlYXJ0c3VpdDsiOiLimaUiLCJoZWxsaXA7Ijoi4oCmIiwiaGVyY29uOyI6IuKKuSIsIkhmcjsiOiLihIwiLCJoZnI7Ijoi8J2UpSIsIkhpbGJlcnRTcGFjZTsiOiLihIsiLCJoa3NlYXJvdzsiOiLipKUiLCJoa3N3YXJvdzsiOiLipKYiLCJob2FycjsiOiLih78iLCJob210aHQ7Ijoi4oi7IiwiaG9va2xlZnRhcnJvdzsiOiLihqkiLCJob29rcmlnaHRhcnJvdzsiOiLihqoiLCJIb3BmOyI6IuKEjSIsImhvcGY7Ijoi8J2VmSIsImhvcmJhcjsiOiLigJUiLCJIb3Jpem9udGFsTGluZTsiOiLilIAiLCJIc2NyOyI6IuKEiyIsImhzY3I7Ijoi8J2SvSIsImhzbGFzaDsiOiLihI8iLCJIc3Ryb2s7IjoixKYiLCJoc3Ryb2s7IjoixKciLCJIdW1wRG93bkh1bXA7Ijoi4omOIiwiSHVtcEVxdWFsOyI6IuKJjyIsImh5YnVsbDsiOiLigYMiLCJoeXBoZW47Ijoi4oCQIiwiSWFjdXRlOyI6IsONIixJYWN1dGU6IsONIiwiaWFjdXRlOyI6IsOtIixpYWN1dGU6IsOtIiwiaWM7Ijoi4oGjIiwiSWNpcmM7Ijoiw44iLEljaXJjOiLDjiIsImljaXJjOyI6IsOuIixpY2lyYzoiw64iLCJJY3k7Ijoi0JgiLCJpY3k7Ijoi0LgiLCJJZG90OyI6IsSwIiwiSUVjeTsiOiLQlSIsImllY3k7Ijoi0LUiLCJpZXhjbDsiOiLCoSIsaWV4Y2w6IsKhIiwiaWZmOyI6IuKHlCIsIklmcjsiOiLihJEiLCJpZnI7Ijoi8J2UpiIsIklncmF2ZTsiOiLDjCIsSWdyYXZlOiLDjCIsImlncmF2ZTsiOiLDrCIsaWdyYXZlOiLDrCIsImlpOyI6IuKFiCIsImlpaWludDsiOiLiqIwiLCJpaWludDsiOiLiiK0iLCJpaW5maW47Ijoi4qecIiwiaWlvdGE7Ijoi4oSpIiwiSUpsaWc7IjoixLIiLCJpamxpZzsiOiLEsyIsIkltOyI6IuKEkSIsIkltYWNyOyI6IsSqIiwiaW1hY3I7IjoixKsiLCJpbWFnZTsiOiLihJEiLCJJbWFnaW5hcnlJOyI6IuKFiCIsImltYWdsaW5lOyI6IuKEkCIsImltYWdwYXJ0OyI6IuKEkSIsImltYXRoOyI6IsSxIiwiaW1vZjsiOiLiirciLCJpbXBlZDsiOiLGtSIsIkltcGxpZXM7Ijoi4oeSIiwiaW47Ijoi4oiIIiwiaW5jYXJlOyI6IuKEhSIsImluZmluOyI6IuKIniIsImluZmludGllOyI6IuKnnSIsImlub2RvdDsiOiLEsSIsIkludDsiOiLiiKwiLCJpbnQ7Ijoi4oirIiwiaW50Y2FsOyI6IuKKuiIsImludGVnZXJzOyI6IuKEpCIsIkludGVncmFsOyI6IuKIqyIsImludGVyY2FsOyI6IuKKuiIsIkludGVyc2VjdGlvbjsiOiLii4IiLCJpbnRsYXJoazsiOiLiqJciLCJpbnRwcm9kOyI6IuKovCIsIkludmlzaWJsZUNvbW1hOyI6IuKBoyIsIkludmlzaWJsZVRpbWVzOyI6IuKBoiIsIklPY3k7Ijoi0IEiLCJpb2N5OyI6ItGRIiwiSW9nb247IjoixK4iLCJpb2dvbjsiOiLEryIsIklvcGY7Ijoi8J2VgCIsImlvcGY7Ijoi8J2VmiIsIklvdGE7IjoizpkiLCJpb3RhOyI6Is65IiwiaXByb2Q7Ijoi4qi8IiwiaXF1ZXN0OyI6IsK/IixpcXVlc3Q6IsK/IiwiSXNjcjsiOiLihJAiLCJpc2NyOyI6IvCdkr4iLCJpc2luOyI6IuKIiCIsImlzaW5kb3Q7Ijoi4ou1IiwiaXNpbkU7Ijoi4ou5IiwiaXNpbnM7Ijoi4ou0IiwiaXNpbnN2OyI6IuKLsyIsImlzaW52OyI6IuKIiCIsIml0OyI6IuKBoiIsIkl0aWxkZTsiOiLEqCIsIml0aWxkZTsiOiLEqSIsIkl1a2N5OyI6ItCGIiwiaXVrY3k7Ijoi0ZYiLCJJdW1sOyI6IsOPIixJdW1sOiLDjyIsIml1bWw7Ijoiw68iLGl1bWw6IsOvIiwiSmNpcmM7IjoixLQiLCJqY2lyYzsiOiLEtSIsIkpjeTsiOiLQmSIsImpjeTsiOiLQuSIsIkpmcjsiOiLwnZSNIiwiamZyOyI6IvCdlKciLCJqbWF0aDsiOiLItyIsIkpvcGY7Ijoi8J2VgSIsImpvcGY7Ijoi8J2VmyIsIkpzY3I7Ijoi8J2SpSIsImpzY3I7Ijoi8J2SvyIsIkpzZXJjeTsiOiLQiCIsImpzZXJjeTsiOiLRmCIsIkp1a2N5OyI6ItCEIiwianVrY3k7Ijoi0ZQiLCJLYXBwYTsiOiLOmiIsImthcHBhOyI6Is66Iiwia2FwcGF2OyI6Is+wIiwiS2NlZGlsOyI6IsS2Iiwia2NlZGlsOyI6IsS3IiwiS2N5OyI6ItCaIiwia2N5OyI6ItC6IiwiS2ZyOyI6IvCdlI4iLCJrZnI7Ijoi8J2UqCIsImtncmVlbjsiOiLEuCIsIktIY3k7Ijoi0KUiLCJraGN5OyI6ItGFIiwiS0pjeTsiOiLQjCIsImtqY3k7Ijoi0ZwiLCJLb3BmOyI6IvCdlYIiLCJrb3BmOyI6IvCdlZwiLCJLc2NyOyI6IvCdkqYiLCJrc2NyOyI6IvCdk4AiLCJsQWFycjsiOiLih5oiLCJMYWN1dGU7IjoixLkiLCJsYWN1dGU7IjoixLoiLCJsYWVtcHR5djsiOiLiprQiLCJsYWdyYW47Ijoi4oSSIiwiTGFtYmRhOyI6Is6bIiwibGFtYmRhOyI6Is67IiwiTGFuZzsiOiLin6oiLCJsYW5nOyI6IuKfqCIsImxhbmdkOyI6IuKmkSIsImxhbmdsZTsiOiLin6giLCJsYXA7Ijoi4qqFIiwiTGFwbGFjZXRyZjsiOiLihJIiLCJsYXF1bzsiOiLCqyIsbGFxdW86IsKrIiwiTGFycjsiOiLihp4iLCJsQXJyOyI6IuKHkCIsImxhcnI7Ijoi4oaQIiwibGFycmI7Ijoi4oekIiwibGFycmJmczsiOiLipJ8iLCJsYXJyZnM7Ijoi4qSdIiwibGFycmhrOyI6IuKGqSIsImxhcnJscDsiOiLihqsiLCJsYXJycGw7Ijoi4qS5IiwibGFycnNpbTsiOiLipbMiLCJsYXJydGw7Ijoi4oaiIiwibGF0OyI6IuKqqyIsImxBdGFpbDsiOiLipJsiLCJsYXRhaWw7Ijoi4qSZIiwibGF0ZTsiOiLiqq0iLCJsYXRlczsiOiLiqq3vuIAiLCJsQmFycjsiOiLipI4iLCJsYmFycjsiOiLipIwiLCJsYmJyazsiOiLinbIiLCJsYnJhY2U7IjoieyIsImxicmFjazsiOiJbIiwibGJya2U7Ijoi4qaLIiwibGJya3NsZDsiOiLipo8iLCJsYnJrc2x1OyI6IuKmjSIsIkxjYXJvbjsiOiLEvSIsImxjYXJvbjsiOiLEviIsIkxjZWRpbDsiOiLEuyIsImxjZWRpbDsiOiLEvCIsImxjZWlsOyI6IuKMiCIsImxjdWI7IjoieyIsIkxjeTsiOiLQmyIsImxjeTsiOiLQuyIsImxkY2E7Ijoi4qS2IiwibGRxdW87Ijoi4oCcIiwibGRxdW9yOyI6IuKAniIsImxkcmRoYXI7Ijoi4qWnIiwibGRydXNoYXI7Ijoi4qWLIiwibGRzaDsiOiLihrIiLCJsRTsiOiLiiaYiLCJsZTsiOiLiiaQiLCJMZWZ0QW5nbGVCcmFja2V0OyI6IuKfqCIsIkxlZnRBcnJvdzsiOiLihpAiLCJMZWZ0YXJyb3c7Ijoi4oeQIiwibGVmdGFycm93OyI6IuKGkCIsIkxlZnRBcnJvd0JhcjsiOiLih6QiLCJMZWZ0QXJyb3dSaWdodEFycm93OyI6IuKHhiIsImxlZnRhcnJvd3RhaWw7Ijoi4oaiIiwiTGVmdENlaWxpbmc7Ijoi4oyIIiwiTGVmdERvdWJsZUJyYWNrZXQ7Ijoi4p+mIiwiTGVmdERvd25UZWVWZWN0b3I7Ijoi4qWhIiwiTGVmdERvd25WZWN0b3I7Ijoi4oeDIiwiTGVmdERvd25WZWN0b3JCYXI7Ijoi4qWZIiwiTGVmdEZsb29yOyI6IuKMiiIsImxlZnRoYXJwb29uZG93bjsiOiLihr0iLCJsZWZ0aGFycG9vbnVwOyI6IuKGvCIsImxlZnRsZWZ0YXJyb3dzOyI6IuKHhyIsIkxlZnRSaWdodEFycm93OyI6IuKGlCIsIkxlZnRyaWdodGFycm93OyI6IuKHlCIsImxlZnRyaWdodGFycm93OyI6IuKGlCIsImxlZnRyaWdodGFycm93czsiOiLih4YiLCJsZWZ0cmlnaHRoYXJwb29uczsiOiLih4siLCJsZWZ0cmlnaHRzcXVpZ2Fycm93OyI6IuKGrSIsIkxlZnRSaWdodFZlY3RvcjsiOiLipY4iLCJMZWZ0VGVlOyI6IuKKoyIsIkxlZnRUZWVBcnJvdzsiOiLihqQiLCJMZWZ0VGVlVmVjdG9yOyI6IuKlmiIsImxlZnR0aHJlZXRpbWVzOyI6IuKLiyIsIkxlZnRUcmlhbmdsZTsiOiLiirIiLCJMZWZ0VHJpYW5nbGVCYXI7Ijoi4qePIiwiTGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4oq0IiwiTGVmdFVwRG93blZlY3RvcjsiOiLipZEiLCJMZWZ0VXBUZWVWZWN0b3I7Ijoi4qWgIiwiTGVmdFVwVmVjdG9yOyI6IuKGvyIsIkxlZnRVcFZlY3RvckJhcjsiOiLipZgiLCJMZWZ0VmVjdG9yOyI6IuKGvCIsIkxlZnRWZWN0b3JCYXI7Ijoi4qWSIiwibEVnOyI6IuKqiyIsImxlZzsiOiLii5oiLCJsZXE7Ijoi4omkIiwibGVxcTsiOiLiiaYiLCJsZXFzbGFudDsiOiLiqb0iLCJsZXM7Ijoi4qm9IiwibGVzY2M7Ijoi4qqoIiwibGVzZG90OyI6IuKpvyIsImxlc2RvdG87Ijoi4qqBIiwibGVzZG90b3I7Ijoi4qqDIiwibGVzZzsiOiLii5rvuIAiLCJsZXNnZXM7Ijoi4qqTIiwibGVzc2FwcHJveDsiOiLiqoUiLCJsZXNzZG90OyI6IuKLliIsImxlc3NlcWd0cjsiOiLii5oiLCJsZXNzZXFxZ3RyOyI6IuKqiyIsIkxlc3NFcXVhbEdyZWF0ZXI7Ijoi4ouaIiwiTGVzc0Z1bGxFcXVhbDsiOiLiiaYiLCJMZXNzR3JlYXRlcjsiOiLiibYiLCJsZXNzZ3RyOyI6IuKJtiIsIkxlc3NMZXNzOyI6IuKqoSIsImxlc3NzaW07Ijoi4omyIiwiTGVzc1NsYW50RXF1YWw7Ijoi4qm9IiwiTGVzc1RpbGRlOyI6IuKJsiIsImxmaXNodDsiOiLipbwiLCJsZmxvb3I7Ijoi4oyKIiwiTGZyOyI6IvCdlI8iLCJsZnI7Ijoi8J2UqSIsImxnOyI6IuKJtiIsImxnRTsiOiLiqpEiLCJsSGFyOyI6IuKloiIsImxoYXJkOyI6IuKGvSIsImxoYXJ1OyI6IuKGvCIsImxoYXJ1bDsiOiLipaoiLCJsaGJsazsiOiLiloQiLCJMSmN5OyI6ItCJIiwibGpjeTsiOiLRmSIsIkxsOyI6IuKLmCIsImxsOyI6IuKJqiIsImxsYXJyOyI6IuKHhyIsImxsY29ybmVyOyI6IuKMniIsIkxsZWZ0YXJyb3c7Ijoi4oeaIiwibGxoYXJkOyI6IuKlqyIsImxsdHJpOyI6IuKXuiIsIkxtaWRvdDsiOiLEvyIsImxtaWRvdDsiOiLFgCIsImxtb3VzdDsiOiLijrAiLCJsbW91c3RhY2hlOyI6IuKOsCIsImxuYXA7Ijoi4qqJIiwibG5hcHByb3g7Ijoi4qqJIiwibG5FOyI6IuKJqCIsImxuZTsiOiLiqociLCJsbmVxOyI6IuKqhyIsImxuZXFxOyI6IuKJqCIsImxuc2ltOyI6IuKLpiIsImxvYW5nOyI6IuKfrCIsImxvYXJyOyI6IuKHvSIsImxvYnJrOyI6IuKfpiIsIkxvbmdMZWZ0QXJyb3c7Ijoi4p+1IiwiTG9uZ2xlZnRhcnJvdzsiOiLin7giLCJsb25nbGVmdGFycm93OyI6IuKftSIsIkxvbmdMZWZ0UmlnaHRBcnJvdzsiOiLin7ciLCJMb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+6IiwibG9uZ2xlZnRyaWdodGFycm93OyI6IuKftyIsImxvbmdtYXBzdG87Ijoi4p+8IiwiTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+2IiwiTG9uZ3JpZ2h0YXJyb3c7Ijoi4p+5IiwibG9uZ3JpZ2h0YXJyb3c7Ijoi4p+2IiwibG9vcGFycm93bGVmdDsiOiLihqsiLCJsb29wYXJyb3dyaWdodDsiOiLihqwiLCJsb3BhcjsiOiLipoUiLCJMb3BmOyI6IvCdlYMiLCJsb3BmOyI6IvCdlZ0iLCJsb3BsdXM7Ijoi4qitIiwibG90aW1lczsiOiLiqLQiLCJsb3dhc3Q7Ijoi4oiXIiwibG93YmFyOyI6Il8iLCJMb3dlckxlZnRBcnJvdzsiOiLihpkiLCJMb3dlclJpZ2h0QXJyb3c7Ijoi4oaYIiwibG96OyI6IuKXiiIsImxvemVuZ2U7Ijoi4peKIiwibG96ZjsiOiLip6siLCJscGFyOyI6IigiLCJscGFybHQ7Ijoi4qaTIiwibHJhcnI7Ijoi4oeGIiwibHJjb3JuZXI7Ijoi4oyfIiwibHJoYXI7Ijoi4oeLIiwibHJoYXJkOyI6IuKlrSIsImxybTsiOiLigI4iLCJscnRyaTsiOiLiir8iLCJsc2FxdW87Ijoi4oC5IiwiTHNjcjsiOiLihJIiLCJsc2NyOyI6IvCdk4EiLCJMc2g7Ijoi4oawIiwibHNoOyI6IuKGsCIsImxzaW07Ijoi4omyIiwibHNpbWU7Ijoi4qqNIiwibHNpbWc7Ijoi4qqPIiwibHNxYjsiOiJbIiwibHNxdW87Ijoi4oCYIiwibHNxdW9yOyI6IuKAmiIsIkxzdHJvazsiOiLFgSIsImxzdHJvazsiOiLFgiIsIkxUOyI6IjwiLExUOiI8IiwiTHQ7Ijoi4omqIiwibHQ7IjoiPCIsbHQ6IjwiLCJsdGNjOyI6IuKqpiIsImx0Y2lyOyI6IuKpuSIsImx0ZG90OyI6IuKLliIsImx0aHJlZTsiOiLii4siLCJsdGltZXM7Ijoi4ouJIiwibHRsYXJyOyI6IuKltiIsImx0cXVlc3Q7Ijoi4qm7IiwibHRyaTsiOiLil4MiLCJsdHJpZTsiOiLiirQiLCJsdHJpZjsiOiLil4IiLCJsdHJQYXI7Ijoi4qaWIiwibHVyZHNoYXI7Ijoi4qWKIiwibHVydWhhcjsiOiLipaYiLCJsdmVydG5lcXE7Ijoi4omo77iAIiwibHZuRTsiOiLiiajvuIAiLCJtYWNyOyI6IsKvIixtYWNyOiLCryIsIm1hbGU7Ijoi4pmCIiwibWFsdDsiOiLinKAiLCJtYWx0ZXNlOyI6IuKcoCIsIk1hcDsiOiLipIUiLCJtYXA7Ijoi4oamIiwibWFwc3RvOyI6IuKGpiIsIm1hcHN0b2Rvd247Ijoi4oanIiwibWFwc3RvbGVmdDsiOiLihqQiLCJtYXBzdG91cDsiOiLihqUiLCJtYXJrZXI7Ijoi4pauIiwibWNvbW1hOyI6IuKoqSIsIk1jeTsiOiLQnCIsIm1jeTsiOiLQvCIsIm1kYXNoOyI6IuKAlCIsIm1ERG90OyI6IuKIuiIsIm1lYXN1cmVkYW5nbGU7Ijoi4oihIiwiTWVkaXVtU3BhY2U7Ijoi4oGfIiwiTWVsbGludHJmOyI6IuKEsyIsIk1mcjsiOiLwnZSQIiwibWZyOyI6IvCdlKoiLCJtaG87Ijoi4oSnIiwibWljcm87IjoiwrUiLG1pY3JvOiLCtSIsIm1pZDsiOiLiiKMiLCJtaWRhc3Q7IjoiKiIsIm1pZGNpcjsiOiLiq7AiLCJtaWRkb3Q7IjoiwrciLG1pZGRvdDoiwrciLCJtaW51czsiOiLiiJIiLCJtaW51c2I7Ijoi4oqfIiwibWludXNkOyI6IuKIuCIsIm1pbnVzZHU7Ijoi4qiqIiwiTWludXNQbHVzOyI6IuKIkyIsIm1sY3A7Ijoi4qubIiwibWxkcjsiOiLigKYiLCJtbnBsdXM7Ijoi4oiTIiwibW9kZWxzOyI6IuKKpyIsIk1vcGY7Ijoi8J2VhCIsIm1vcGY7Ijoi8J2VniIsIm1wOyI6IuKIkyIsIk1zY3I7Ijoi4oSzIiwibXNjcjsiOiLwnZOCIiwibXN0cG9zOyI6IuKIviIsIk11OyI6Is6cIiwibXU7IjoizrwiLCJtdWx0aW1hcDsiOiLiirgiLCJtdW1hcDsiOiLiirgiLCJuYWJsYTsiOiLiiIciLCJOYWN1dGU7IjoixYMiLCJuYWN1dGU7IjoixYQiLCJuYW5nOyI6IuKIoOKDkiIsIm5hcDsiOiLiiYkiLCJuYXBFOyI6IuKpsMy4IiwibmFwaWQ7Ijoi4omLzLgiLCJuYXBvczsiOiLFiSIsIm5hcHByb3g7Ijoi4omJIiwibmF0dXI7Ijoi4pmuIiwibmF0dXJhbDsiOiLima4iLCJuYXR1cmFsczsiOiLihJUiLCJuYnNwOyI6IsKgIixuYnNwOiLCoCIsIm5idW1wOyI6IuKJjsy4IiwibmJ1bXBlOyI6IuKJj8y4IiwibmNhcDsiOiLiqYMiLCJOY2Fyb247IjoixYciLCJuY2Fyb247IjoixYgiLCJOY2VkaWw7IjoixYUiLCJuY2VkaWw7IjoixYYiLCJuY29uZzsiOiLiiYciLCJuY29uZ2RvdDsiOiLiqa3MuCIsIm5jdXA7Ijoi4qmCIiwiTmN5OyI6ItCdIiwibmN5OyI6ItC9IiwibmRhc2g7Ijoi4oCTIiwibmU7Ijoi4omgIiwibmVhcmhrOyI6IuKkpCIsIm5lQXJyOyI6IuKHlyIsIm5lYXJyOyI6IuKGlyIsIm5lYXJyb3c7Ijoi4oaXIiwibmVkb3Q7Ijoi4omQzLgiLCJOZWdhdGl2ZU1lZGl1bVNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpY2tTcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVRoaW5TcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVZlcnlUaGluU3BhY2U7Ijoi4oCLIiwibmVxdWl2OyI6IuKJoiIsIm5lc2VhcjsiOiLipKgiLCJuZXNpbTsiOiLiiYLMuCIsIk5lc3RlZEdyZWF0ZXJHcmVhdGVyOyI6IuKJqyIsIk5lc3RlZExlc3NMZXNzOyI6IuKJqiIsIk5ld0xpbmU7IjoiXG4iLCJuZXhpc3Q7Ijoi4oiEIiwibmV4aXN0czsiOiLiiIQiLCJOZnI7Ijoi8J2UkSIsIm5mcjsiOiLwnZSrIiwibmdFOyI6IuKJp8y4IiwibmdlOyI6IuKJsSIsIm5nZXE7Ijoi4omxIiwibmdlcXE7Ijoi4omnzLgiLCJuZ2Vxc2xhbnQ7Ijoi4qm+zLgiLCJuZ2VzOyI6IuKpvsy4IiwibkdnOyI6IuKLmcy4IiwibmdzaW07Ijoi4om1Iiwibkd0OyI6IuKJq+KDkiIsIm5ndDsiOiLiia8iLCJuZ3RyOyI6IuKJryIsIm5HdHY7Ijoi4omrzLgiLCJuaEFycjsiOiLih44iLCJuaGFycjsiOiLihq4iLCJuaHBhcjsiOiLiq7IiLCJuaTsiOiLiiIsiLCJuaXM7Ijoi4ou8IiwibmlzZDsiOiLii7oiLCJuaXY7Ijoi4oiLIiwiTkpjeTsiOiLQiiIsIm5qY3k7Ijoi0ZoiLCJubEFycjsiOiLih40iLCJubGFycjsiOiLihpoiLCJubGRyOyI6IuKApSIsIm5sRTsiOiLiiabMuCIsIm5sZTsiOiLiibAiLCJuTGVmdGFycm93OyI6IuKHjSIsIm5sZWZ0YXJyb3c7Ijoi4oaaIiwibkxlZnRyaWdodGFycm93OyI6IuKHjiIsIm5sZWZ0cmlnaHRhcnJvdzsiOiLihq4iLCJubGVxOyI6IuKJsCIsIm5sZXFxOyI6IuKJpsy4IiwibmxlcXNsYW50OyI6IuKpvcy4IiwibmxlczsiOiLiqb3MuCIsIm5sZXNzOyI6IuKJriIsIm5MbDsiOiLii5jMuCIsIm5sc2ltOyI6IuKJtCIsIm5MdDsiOiLiiarig5IiLCJubHQ7Ijoi4omuIiwibmx0cmk7Ijoi4ouqIiwibmx0cmllOyI6IuKLrCIsIm5MdHY7Ijoi4omqzLgiLCJubWlkOyI6IuKIpCIsIk5vQnJlYWs7Ijoi4oGgIiwiTm9uQnJlYWtpbmdTcGFjZTsiOiLCoCIsIk5vcGY7Ijoi4oSVIiwibm9wZjsiOiLwnZWfIiwiTm90OyI6IuKrrCIsIm5vdDsiOiLCrCIsbm90OiLCrCIsIk5vdENvbmdydWVudDsiOiLiiaIiLCJOb3RDdXBDYXA7Ijoi4omtIiwiTm90RG91YmxlVmVydGljYWxCYXI7Ijoi4oimIiwiTm90RWxlbWVudDsiOiLiiIkiLCJOb3RFcXVhbDsiOiLiiaAiLCJOb3RFcXVhbFRpbGRlOyI6IuKJgsy4IiwiTm90RXhpc3RzOyI6IuKIhCIsIk5vdEdyZWF0ZXI7Ijoi4omvIiwiTm90R3JlYXRlckVxdWFsOyI6IuKJsSIsIk5vdEdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnzLgiLCJOb3RHcmVhdGVyR3JlYXRlcjsiOiLiiavMuCIsIk5vdEdyZWF0ZXJMZXNzOyI6IuKJuSIsIk5vdEdyZWF0ZXJTbGFudEVxdWFsOyI6IuKpvsy4IiwiTm90R3JlYXRlclRpbGRlOyI6IuKJtSIsIk5vdEh1bXBEb3duSHVtcDsiOiLiiY7MuCIsIk5vdEh1bXBFcXVhbDsiOiLiiY/MuCIsIm5vdGluOyI6IuKIiSIsIm5vdGluZG90OyI6IuKLtcy4Iiwibm90aW5FOyI6IuKLucy4Iiwibm90aW52YTsiOiLiiIkiLCJub3RpbnZiOyI6IuKLtyIsIm5vdGludmM7Ijoi4ou2IiwiTm90TGVmdFRyaWFuZ2xlOyI6IuKLqiIsIk5vdExlZnRUcmlhbmdsZUJhcjsiOiLip4/MuCIsIk5vdExlZnRUcmlhbmdsZUVxdWFsOyI6IuKLrCIsIk5vdExlc3M7Ijoi4omuIiwiTm90TGVzc0VxdWFsOyI6IuKJsCIsIk5vdExlc3NHcmVhdGVyOyI6IuKJuCIsIk5vdExlc3NMZXNzOyI6IuKJqsy4IiwiTm90TGVzc1NsYW50RXF1YWw7Ijoi4qm9zLgiLCJOb3RMZXNzVGlsZGU7Ijoi4om0IiwiTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4qqizLgiLCJOb3ROZXN0ZWRMZXNzTGVzczsiOiLiqqHMuCIsIm5vdG5pOyI6IuKIjCIsIm5vdG5pdmE7Ijoi4oiMIiwibm90bml2YjsiOiLii74iLCJub3RuaXZjOyI6IuKLvSIsIk5vdFByZWNlZGVzOyI6IuKKgCIsIk5vdFByZWNlZGVzRXF1YWw7Ijoi4qqvzLgiLCJOb3RQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4ougIiwiTm90UmV2ZXJzZUVsZW1lbnQ7Ijoi4oiMIiwiTm90UmlnaHRUcmlhbmdsZTsiOiLii6siLCJOb3RSaWdodFRyaWFuZ2xlQmFyOyI6IuKnkMy4IiwiTm90UmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKLrSIsIk5vdFNxdWFyZVN1YnNldDsiOiLiio/MuCIsIk5vdFNxdWFyZVN1YnNldEVxdWFsOyI6IuKLoiIsIk5vdFNxdWFyZVN1cGVyc2V0OyI6IuKKkMy4IiwiTm90U3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLii6MiLCJOb3RTdWJzZXQ7Ijoi4oqC4oOSIiwiTm90U3Vic2V0RXF1YWw7Ijoi4oqIIiwiTm90U3VjY2VlZHM7Ijoi4oqBIiwiTm90U3VjY2VlZHNFcXVhbDsiOiLiqrDMuCIsIk5vdFN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLii6EiLCJOb3RTdWNjZWVkc1RpbGRlOyI6IuKJv8y4IiwiTm90U3VwZXJzZXQ7Ijoi4oqD4oOSIiwiTm90U3VwZXJzZXRFcXVhbDsiOiLiiokiLCJOb3RUaWxkZTsiOiLiiYEiLCJOb3RUaWxkZUVxdWFsOyI6IuKJhCIsIk5vdFRpbGRlRnVsbEVxdWFsOyI6IuKJhyIsIk5vdFRpbGRlVGlsZGU7Ijoi4omJIiwiTm90VmVydGljYWxCYXI7Ijoi4oikIiwibnBhcjsiOiLiiKYiLCJucGFyYWxsZWw7Ijoi4oimIiwibnBhcnNsOyI6IuKrveKDpSIsIm5wYXJ0OyI6IuKIgsy4IiwibnBvbGludDsiOiLiqJQiLCJucHI7Ijoi4oqAIiwibnByY3VlOyI6IuKLoCIsIm5wcmU7Ijoi4qqvzLgiLCJucHJlYzsiOiLiioAiLCJucHJlY2VxOyI6IuKqr8y4IiwibnJBcnI7Ijoi4oePIiwibnJhcnI7Ijoi4oabIiwibnJhcnJjOyI6IuKks8y4IiwibnJhcnJ3OyI6IuKGncy4IiwiblJpZ2h0YXJyb3c7Ijoi4oePIiwibnJpZ2h0YXJyb3c7Ijoi4oabIiwibnJ0cmk7Ijoi4ourIiwibnJ0cmllOyI6IuKLrSIsIm5zYzsiOiLiioEiLCJuc2NjdWU7Ijoi4ouhIiwibnNjZTsiOiLiqrDMuCIsIk5zY3I7Ijoi8J2SqSIsIm5zY3I7Ijoi8J2TgyIsIm5zaG9ydG1pZDsiOiLiiKQiLCJuc2hvcnRwYXJhbGxlbDsiOiLiiKYiLCJuc2ltOyI6IuKJgSIsIm5zaW1lOyI6IuKJhCIsIm5zaW1lcTsiOiLiiYQiLCJuc21pZDsiOiLiiKQiLCJuc3BhcjsiOiLiiKYiLCJuc3FzdWJlOyI6IuKLoiIsIm5zcXN1cGU7Ijoi4oujIiwibnN1YjsiOiLiioQiLCJuc3ViRTsiOiLiq4XMuCIsIm5zdWJlOyI6IuKKiCIsIm5zdWJzZXQ7Ijoi4oqC4oOSIiwibnN1YnNldGVxOyI6IuKKiCIsIm5zdWJzZXRlcXE7Ijoi4quFzLgiLCJuc3VjYzsiOiLiioEiLCJuc3VjY2VxOyI6IuKqsMy4IiwibnN1cDsiOiLiioUiLCJuc3VwRTsiOiLiq4bMuCIsIm5zdXBlOyI6IuKKiSIsIm5zdXBzZXQ7Ijoi4oqD4oOSIiwibnN1cHNldGVxOyI6IuKKiSIsIm5zdXBzZXRlcXE7Ijoi4quGzLgiLCJudGdsOyI6IuKJuSIsIk50aWxkZTsiOiLDkSIsTnRpbGRlOiLDkSIsIm50aWxkZTsiOiLDsSIsbnRpbGRlOiLDsSIsIm50bGc7Ijoi4om4IiwibnRyaWFuZ2xlbGVmdDsiOiLii6oiLCJudHJpYW5nbGVsZWZ0ZXE7Ijoi4ousIiwibnRyaWFuZ2xlcmlnaHQ7Ijoi4ourIiwibnRyaWFuZ2xlcmlnaHRlcTsiOiLii60iLCJOdTsiOiLOnSIsIm51OyI6Is69IiwibnVtOyI6IiMiLCJudW1lcm87Ijoi4oSWIiwibnVtc3A7Ijoi4oCHIiwibnZhcDsiOiLiiY3ig5IiLCJuVkRhc2g7Ijoi4oqvIiwiblZkYXNoOyI6IuKKriIsIm52RGFzaDsiOiLiiq0iLCJudmRhc2g7Ijoi4oqsIiwibnZnZTsiOiLiiaXig5IiLCJudmd0OyI6Ij7ig5IiLCJudkhhcnI7Ijoi4qSEIiwibnZpbmZpbjsiOiLip54iLCJudmxBcnI7Ijoi4qSCIiwibnZsZTsiOiLiiaTig5IiLCJudmx0OyI6Ijzig5IiLCJudmx0cmllOyI6IuKKtOKDkiIsIm52ckFycjsiOiLipIMiLCJudnJ0cmllOyI6IuKKteKDkiIsIm52c2ltOyI6IuKIvOKDkiIsIm53YXJoazsiOiLipKMiLCJud0FycjsiOiLih5YiLCJud2FycjsiOiLihpYiLCJud2Fycm93OyI6IuKGliIsIm53bmVhcjsiOiLipKciLCJPYWN1dGU7Ijoiw5MiLE9hY3V0ZToiw5MiLCJvYWN1dGU7Ijoiw7MiLG9hY3V0ZToiw7MiLCJvYXN0OyI6IuKKmyIsIm9jaXI7Ijoi4oqaIiwiT2NpcmM7Ijoiw5QiLE9jaXJjOiLDlCIsIm9jaXJjOyI6IsO0IixvY2lyYzoiw7QiLCJPY3k7Ijoi0J4iLCJvY3k7Ijoi0L4iLCJvZGFzaDsiOiLiip0iLCJPZGJsYWM7IjoixZAiLCJvZGJsYWM7IjoixZEiLCJvZGl2OyI6IuKouCIsIm9kb3Q7Ijoi4oqZIiwib2Rzb2xkOyI6IuKmvCIsIk9FbGlnOyI6IsWSIiwib2VsaWc7IjoixZMiLCJvZmNpcjsiOiLipr8iLCJPZnI7Ijoi8J2UkiIsIm9mcjsiOiLwnZSsIiwib2dvbjsiOiLLmyIsIk9ncmF2ZTsiOiLDkiIsT2dyYXZlOiLDkiIsIm9ncmF2ZTsiOiLDsiIsb2dyYXZlOiLDsiIsIm9ndDsiOiLip4EiLCJvaGJhcjsiOiLiprUiLCJvaG07IjoizqkiLCJvaW50OyI6IuKIriIsIm9sYXJyOyI6IuKGuiIsIm9sY2lyOyI6IuKmviIsIm9sY3Jvc3M7Ijoi4qa7Iiwib2xpbmU7Ijoi4oC+Iiwib2x0OyI6IuKngCIsIk9tYWNyOyI6IsWMIiwib21hY3I7IjoixY0iLCJPbWVnYTsiOiLOqSIsIm9tZWdhOyI6Is+JIiwiT21pY3JvbjsiOiLOnyIsIm9taWNyb247Ijoizr8iLCJvbWlkOyI6IuKmtiIsIm9taW51czsiOiLiipYiLCJPb3BmOyI6IvCdlYYiLCJvb3BmOyI6IvCdlaAiLCJvcGFyOyI6IuKmtyIsIk9wZW5DdXJseURvdWJsZVF1b3RlOyI6IuKAnCIsIk9wZW5DdXJseVF1b3RlOyI6IuKAmCIsIm9wZXJwOyI6IuKmuSIsIm9wbHVzOyI6IuKKlSIsIk9yOyI6IuKplCIsIm9yOyI6IuKIqCIsIm9yYXJyOyI6IuKGuyIsIm9yZDsiOiLiqZ0iLCJvcmRlcjsiOiLihLQiLCJvcmRlcm9mOyI6IuKEtCIsIm9yZGY7IjoiwqoiLG9yZGY6IsKqIiwib3JkbTsiOiLCuiIsb3JkbToiwroiLCJvcmlnb2Y7Ijoi4oq2Iiwib3JvcjsiOiLiqZYiLCJvcnNsb3BlOyI6IuKplyIsIm9ydjsiOiLiqZsiLCJvUzsiOiLik4giLCJPc2NyOyI6IvCdkqoiLCJvc2NyOyI6IuKEtCIsIk9zbGFzaDsiOiLDmCIsT3NsYXNoOiLDmCIsIm9zbGFzaDsiOiLDuCIsb3NsYXNoOiLDuCIsIm9zb2w7Ijoi4oqYIiwiT3RpbGRlOyI6IsOVIixPdGlsZGU6IsOVIiwib3RpbGRlOyI6IsO1IixvdGlsZGU6IsO1IiwiT3RpbWVzOyI6IuKotyIsIm90aW1lczsiOiLiipciLCJvdGltZXNhczsiOiLiqLYiLCJPdW1sOyI6IsOWIixPdW1sOiLDliIsIm91bWw7Ijoiw7YiLG91bWw6IsO2Iiwib3ZiYXI7Ijoi4oy9IiwiT3ZlckJhcjsiOiLigL4iLCJPdmVyQnJhY2U7Ijoi4o+eIiwiT3ZlckJyYWNrZXQ7Ijoi4o60IiwiT3ZlclBhcmVudGhlc2lzOyI6IuKPnCIsInBhcjsiOiLiiKUiLCJwYXJhOyI6IsK2IixwYXJhOiLCtiIsInBhcmFsbGVsOyI6IuKIpSIsInBhcnNpbTsiOiLiq7MiLCJwYXJzbDsiOiLiq70iLCJwYXJ0OyI6IuKIgiIsIlBhcnRpYWxEOyI6IuKIgiIsIlBjeTsiOiLQnyIsInBjeTsiOiLQvyIsInBlcmNudDsiOiIlIiwicGVyaW9kOyI6Ii4iLCJwZXJtaWw7Ijoi4oCwIiwicGVycDsiOiLiiqUiLCJwZXJ0ZW5rOyI6IuKAsSIsIlBmcjsiOiLwnZSTIiwicGZyOyI6IvCdlK0iLCJQaGk7IjoizqYiLCJwaGk7Ijoiz4YiLCJwaGl2OyI6Is+VIiwicGhtbWF0OyI6IuKEsyIsInBob25lOyI6IuKYjiIsIlBpOyI6Is6gIiwicGk7Ijoiz4AiLCJwaXRjaGZvcms7Ijoi4ouUIiwicGl2OyI6Is+WIiwicGxhbmNrOyI6IuKEjyIsInBsYW5ja2g7Ijoi4oSOIiwicGxhbmt2OyI6IuKEjyIsInBsdXM7IjoiKyIsInBsdXNhY2lyOyI6IuKooyIsInBsdXNiOyI6IuKKniIsInBsdXNjaXI7Ijoi4qiiIiwicGx1c2RvOyI6IuKIlCIsInBsdXNkdTsiOiLiqKUiLCJwbHVzZTsiOiLiqbIiLCJQbHVzTWludXM7IjoiwrEiLCJwbHVzbW47IjoiwrEiLHBsdXNtbjoiwrEiLCJwbHVzc2ltOyI6IuKopiIsInBsdXN0d287Ijoi4qinIiwicG07IjoiwrEiLCJQb2luY2FyZXBsYW5lOyI6IuKEjCIsInBvaW50aW50OyI6IuKolSIsIlBvcGY7Ijoi4oSZIiwicG9wZjsiOiLwnZWhIiwicG91bmQ7IjoiwqMiLHBvdW5kOiLCoyIsIlByOyI6IuKquyIsInByOyI6IuKJuiIsInByYXA7Ijoi4qq3IiwicHJjdWU7Ijoi4om8IiwicHJFOyI6IuKqsyIsInByZTsiOiLiqq8iLCJwcmVjOyI6IuKJuiIsInByZWNhcHByb3g7Ijoi4qq3IiwicHJlY2N1cmx5ZXE7Ijoi4om8IiwiUHJlY2VkZXM7Ijoi4om6IiwiUHJlY2VkZXNFcXVhbDsiOiLiqq8iLCJQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4om8IiwiUHJlY2VkZXNUaWxkZTsiOiLiib4iLCJwcmVjZXE7Ijoi4qqvIiwicHJlY25hcHByb3g7Ijoi4qq5IiwicHJlY25lcXE7Ijoi4qq1IiwicHJlY25zaW07Ijoi4ouoIiwicHJlY3NpbTsiOiLiib4iLCJQcmltZTsiOiLigLMiLCJwcmltZTsiOiLigLIiLCJwcmltZXM7Ijoi4oSZIiwicHJuYXA7Ijoi4qq5IiwicHJuRTsiOiLiqrUiLCJwcm5zaW07Ijoi4ouoIiwicHJvZDsiOiLiiI8iLCJQcm9kdWN0OyI6IuKIjyIsInByb2ZhbGFyOyI6IuKMriIsInByb2ZsaW5lOyI6IuKMkiIsInByb2ZzdXJmOyI6IuKMkyIsInByb3A7Ijoi4oidIiwiUHJvcG9ydGlvbjsiOiLiiLciLCJQcm9wb3J0aW9uYWw7Ijoi4oidIiwicHJvcHRvOyI6IuKInSIsInByc2ltOyI6IuKJviIsInBydXJlbDsiOiLiirAiLCJQc2NyOyI6IvCdkqsiLCJwc2NyOyI6IvCdk4UiLCJQc2k7IjoizqgiLCJwc2k7Ijoiz4giLCJwdW5jc3A7Ijoi4oCIIiwiUWZyOyI6IvCdlJQiLCJxZnI7Ijoi8J2UriIsInFpbnQ7Ijoi4qiMIiwiUW9wZjsiOiLihJoiLCJxb3BmOyI6IvCdlaIiLCJxcHJpbWU7Ijoi4oGXIiwiUXNjcjsiOiLwnZKsIiwicXNjcjsiOiLwnZOGIiwicXVhdGVybmlvbnM7Ijoi4oSNIiwicXVhdGludDsiOiLiqJYiLCJxdWVzdDsiOiI/IiwicXVlc3RlcTsiOiLiiZ8iLCJRVU9UOyI6JyInLFFVT1Q6JyInLCJxdW90OyI6JyInLHF1b3Q6JyInLCJyQWFycjsiOiLih5siLCJyYWNlOyI6IuKIvcyxIiwiUmFjdXRlOyI6IsWUIiwicmFjdXRlOyI6IsWVIiwicmFkaWM7Ijoi4oiaIiwicmFlbXB0eXY7Ijoi4qazIiwiUmFuZzsiOiLin6siLCJyYW5nOyI6IuKfqSIsInJhbmdkOyI6IuKmkiIsInJhbmdlOyI6IuKmpSIsInJhbmdsZTsiOiLin6kiLCJyYXF1bzsiOiLCuyIscmFxdW86IsK7IiwiUmFycjsiOiLihqAiLCJyQXJyOyI6IuKHkiIsInJhcnI7Ijoi4oaSIiwicmFycmFwOyI6IuKltSIsInJhcnJiOyI6IuKHpSIsInJhcnJiZnM7Ijoi4qSgIiwicmFycmM7Ijoi4qSzIiwicmFycmZzOyI6IuKkniIsInJhcnJoazsiOiLihqoiLCJyYXJybHA7Ijoi4oasIiwicmFycnBsOyI6IuKlhSIsInJhcnJzaW07Ijoi4qW0IiwiUmFycnRsOyI6IuKkliIsInJhcnJ0bDsiOiLihqMiLCJyYXJydzsiOiLihp0iLCJyQXRhaWw7Ijoi4qScIiwicmF0YWlsOyI6IuKkmiIsInJhdGlvOyI6IuKItiIsInJhdGlvbmFsczsiOiLihJoiLCJSQmFycjsiOiLipJAiLCJyQmFycjsiOiLipI8iLCJyYmFycjsiOiLipI0iLCJyYmJyazsiOiLinbMiLCJyYnJhY2U7IjoifSIsInJicmFjazsiOiJdIiwicmJya2U7Ijoi4qaMIiwicmJya3NsZDsiOiLipo4iLCJyYnJrc2x1OyI6IuKmkCIsIlJjYXJvbjsiOiLFmCIsInJjYXJvbjsiOiLFmSIsIlJjZWRpbDsiOiLFliIsInJjZWRpbDsiOiLFlyIsInJjZWlsOyI6IuKMiSIsInJjdWI7IjoifSIsIlJjeTsiOiLQoCIsInJjeTsiOiLRgCIsInJkY2E7Ijoi4qS3IiwicmRsZGhhcjsiOiLipakiLCJyZHF1bzsiOiLigJ0iLCJyZHF1b3I7Ijoi4oCdIiwicmRzaDsiOiLihrMiLCJSZTsiOiLihJwiLCJyZWFsOyI6IuKEnCIsInJlYWxpbmU7Ijoi4oSbIiwicmVhbHBhcnQ7Ijoi4oScIiwicmVhbHM7Ijoi4oSdIiwicmVjdDsiOiLilq0iLCJSRUc7Ijoiwq4iLFJFRzoiwq4iLCJyZWc7Ijoiwq4iLHJlZzoiwq4iLCJSZXZlcnNlRWxlbWVudDsiOiLiiIsiLCJSZXZlcnNlRXF1aWxpYnJpdW07Ijoi4oeLIiwiUmV2ZXJzZVVwRXF1aWxpYnJpdW07Ijoi4qWvIiwicmZpc2h0OyI6IuKlvSIsInJmbG9vcjsiOiLijIsiLCJSZnI7Ijoi4oScIiwicmZyOyI6IvCdlK8iLCJySGFyOyI6IuKlpCIsInJoYXJkOyI6IuKHgSIsInJoYXJ1OyI6IuKHgCIsInJoYXJ1bDsiOiLipawiLCJSaG87IjoizqEiLCJyaG87Ijoiz4EiLCJyaG92OyI6Is+xIiwiUmlnaHRBbmdsZUJyYWNrZXQ7Ijoi4p+pIiwiUmlnaHRBcnJvdzsiOiLihpIiLCJSaWdodGFycm93OyI6IuKHkiIsInJpZ2h0YXJyb3c7Ijoi4oaSIiwiUmlnaHRBcnJvd0JhcjsiOiLih6UiLCJSaWdodEFycm93TGVmdEFycm93OyI6IuKHhCIsInJpZ2h0YXJyb3d0YWlsOyI6IuKGoyIsIlJpZ2h0Q2VpbGluZzsiOiLijIkiLCJSaWdodERvdWJsZUJyYWNrZXQ7Ijoi4p+nIiwiUmlnaHREb3duVGVlVmVjdG9yOyI6IuKlnSIsIlJpZ2h0RG93blZlY3RvcjsiOiLih4IiLCJSaWdodERvd25WZWN0b3JCYXI7Ijoi4qWVIiwiUmlnaHRGbG9vcjsiOiLijIsiLCJyaWdodGhhcnBvb25kb3duOyI6IuKHgSIsInJpZ2h0aGFycG9vbnVwOyI6IuKHgCIsInJpZ2h0bGVmdGFycm93czsiOiLih4QiLCJyaWdodGxlZnRoYXJwb29uczsiOiLih4wiLCJyaWdodHJpZ2h0YXJyb3dzOyI6IuKHiSIsInJpZ2h0c3F1aWdhcnJvdzsiOiLihp0iLCJSaWdodFRlZTsiOiLiiqIiLCJSaWdodFRlZUFycm93OyI6IuKGpiIsIlJpZ2h0VGVlVmVjdG9yOyI6IuKlmyIsInJpZ2h0dGhyZWV0aW1lczsiOiLii4wiLCJSaWdodFRyaWFuZ2xlOyI6IuKKsyIsIlJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQIiwiUmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKKtSIsIlJpZ2h0VXBEb3duVmVjdG9yOyI6IuKljyIsIlJpZ2h0VXBUZWVWZWN0b3I7Ijoi4qWcIiwiUmlnaHRVcFZlY3RvcjsiOiLihr4iLCJSaWdodFVwVmVjdG9yQmFyOyI6IuKllCIsIlJpZ2h0VmVjdG9yOyI6IuKHgCIsIlJpZ2h0VmVjdG9yQmFyOyI6IuKlkyIsInJpbmc7Ijoiy5oiLCJyaXNpbmdkb3RzZXE7Ijoi4omTIiwicmxhcnI7Ijoi4oeEIiwicmxoYXI7Ijoi4oeMIiwicmxtOyI6IuKAjyIsInJtb3VzdDsiOiLijrEiLCJybW91c3RhY2hlOyI6IuKOsSIsInJubWlkOyI6IuKrriIsInJvYW5nOyI6IuKfrSIsInJvYXJyOyI6IuKHviIsInJvYnJrOyI6IuKfpyIsInJvcGFyOyI6IuKmhiIsIlJvcGY7Ijoi4oSdIiwicm9wZjsiOiLwnZWjIiwicm9wbHVzOyI6IuKoriIsInJvdGltZXM7Ijoi4qi1IiwiUm91bmRJbXBsaWVzOyI6IuKlsCIsInJwYXI7IjoiKSIsInJwYXJndDsiOiLippQiLCJycHBvbGludDsiOiLiqJIiLCJycmFycjsiOiLih4kiLCJScmlnaHRhcnJvdzsiOiLih5siLCJyc2FxdW87Ijoi4oC6IiwiUnNjcjsiOiLihJsiLCJyc2NyOyI6IvCdk4ciLCJSc2g7Ijoi4oaxIiwicnNoOyI6IuKGsSIsInJzcWI7IjoiXSIsInJzcXVvOyI6IuKAmSIsInJzcXVvcjsiOiLigJkiLCJydGhyZWU7Ijoi4ouMIiwicnRpbWVzOyI6IuKLiiIsInJ0cmk7Ijoi4pa5IiwicnRyaWU7Ijoi4oq1IiwicnRyaWY7Ijoi4pa4IiwicnRyaWx0cmk7Ijoi4qeOIiwiUnVsZURlbGF5ZWQ7Ijoi4qe0IiwicnVsdWhhcjsiOiLipagiLCJyeDsiOiLihJ4iLCJTYWN1dGU7IjoixZoiLCJzYWN1dGU7IjoixZsiLCJzYnF1bzsiOiLigJoiLCJTYzsiOiLiqrwiLCJzYzsiOiLiibsiLCJzY2FwOyI6IuKquCIsIlNjYXJvbjsiOiLFoCIsInNjYXJvbjsiOiLFoSIsInNjY3VlOyI6IuKJvSIsInNjRTsiOiLiqrQiLCJzY2U7Ijoi4qqwIiwiU2NlZGlsOyI6IsWeIiwic2NlZGlsOyI6IsWfIiwiU2NpcmM7IjoixZwiLCJzY2lyYzsiOiLFnSIsInNjbmFwOyI6IuKquiIsInNjbkU7Ijoi4qq2Iiwic2Nuc2ltOyI6IuKLqSIsInNjcG9saW50OyI6IuKokyIsInNjc2ltOyI6IuKJvyIsIlNjeTsiOiLQoSIsInNjeTsiOiLRgSIsInNkb3Q7Ijoi4ouFIiwic2RvdGI7Ijoi4oqhIiwic2RvdGU7Ijoi4qmmIiwic2VhcmhrOyI6IuKkpSIsInNlQXJyOyI6IuKHmCIsInNlYXJyOyI6IuKGmCIsInNlYXJyb3c7Ijoi4oaYIiwic2VjdDsiOiLCpyIsc2VjdDoiwqciLCJzZW1pOyI6IjsiLCJzZXN3YXI7Ijoi4qSpIiwic2V0bWludXM7Ijoi4oiWIiwic2V0bW47Ijoi4oiWIiwic2V4dDsiOiLinLYiLCJTZnI7Ijoi8J2UliIsInNmcjsiOiLwnZSwIiwic2Zyb3duOyI6IuKMoiIsInNoYXJwOyI6IuKZryIsIlNIQ0hjeTsiOiLQqSIsInNoY2hjeTsiOiLRiSIsIlNIY3k7Ijoi0KgiLCJzaGN5OyI6ItGIIiwiU2hvcnREb3duQXJyb3c7Ijoi4oaTIiwiU2hvcnRMZWZ0QXJyb3c7Ijoi4oaQIiwic2hvcnRtaWQ7Ijoi4oijIiwic2hvcnRwYXJhbGxlbDsiOiLiiKUiLCJTaG9ydFJpZ2h0QXJyb3c7Ijoi4oaSIiwiU2hvcnRVcEFycm93OyI6IuKGkSIsInNoeTsiOiLCrSIsc2h5OiLCrSIsIlNpZ21hOyI6Is6jIiwic2lnbWE7Ijoiz4MiLCJzaWdtYWY7Ijoiz4IiLCJzaWdtYXY7Ijoiz4IiLCJzaW07Ijoi4oi8Iiwic2ltZG90OyI6IuKpqiIsInNpbWU7Ijoi4omDIiwic2ltZXE7Ijoi4omDIiwic2ltZzsiOiLiqp4iLCJzaW1nRTsiOiLiqqAiLCJzaW1sOyI6IuKqnSIsInNpbWxFOyI6IuKqnyIsInNpbW5lOyI6IuKJhiIsInNpbXBsdXM7Ijoi4qikIiwic2ltcmFycjsiOiLipbIiLCJzbGFycjsiOiLihpAiLCJTbWFsbENpcmNsZTsiOiLiiJgiLCJzbWFsbHNldG1pbnVzOyI6IuKIliIsInNtYXNocDsiOiLiqLMiLCJzbWVwYXJzbDsiOiLip6QiLCJzbWlkOyI6IuKIoyIsInNtaWxlOyI6IuKMoyIsInNtdDsiOiLiqqoiLCJzbXRlOyI6IuKqrCIsInNtdGVzOyI6IuKqrO+4gCIsIlNPRlRjeTsiOiLQrCIsInNvZnRjeTsiOiLRjCIsInNvbDsiOiIvIiwic29sYjsiOiLip4QiLCJzb2xiYXI7Ijoi4oy/IiwiU29wZjsiOiLwnZWKIiwic29wZjsiOiLwnZWkIiwic3BhZGVzOyI6IuKZoCIsInNwYWRlc3VpdDsiOiLimaAiLCJzcGFyOyI6IuKIpSIsInNxY2FwOyI6IuKKkyIsInNxY2FwczsiOiLiipPvuIAiLCJzcWN1cDsiOiLiipQiLCJzcWN1cHM7Ijoi4oqU77iAIiwiU3FydDsiOiLiiJoiLCJzcXN1YjsiOiLiio8iLCJzcXN1YmU7Ijoi4oqRIiwic3FzdWJzZXQ7Ijoi4oqPIiwic3FzdWJzZXRlcTsiOiLiipEiLCJzcXN1cDsiOiLiipAiLCJzcXN1cGU7Ijoi4oqSIiwic3FzdXBzZXQ7Ijoi4oqQIiwic3FzdXBzZXRlcTsiOiLiipIiLCJzcXU7Ijoi4pahIiwiU3F1YXJlOyI6IuKWoSIsInNxdWFyZTsiOiLilqEiLCJTcXVhcmVJbnRlcnNlY3Rpb247Ijoi4oqTIiwiU3F1YXJlU3Vic2V0OyI6IuKKjyIsIlNxdWFyZVN1YnNldEVxdWFsOyI6IuKKkSIsIlNxdWFyZVN1cGVyc2V0OyI6IuKKkCIsIlNxdWFyZVN1cGVyc2V0RXF1YWw7Ijoi4oqSIiwiU3F1YXJlVW5pb247Ijoi4oqUIiwic3F1YXJmOyI6IuKWqiIsInNxdWY7Ijoi4paqIiwic3JhcnI7Ijoi4oaSIiwiU3NjcjsiOiLwnZKuIiwic3NjcjsiOiLwnZOIIiwic3NldG1uOyI6IuKIliIsInNzbWlsZTsiOiLijKMiLCJzc3RhcmY7Ijoi4ouGIiwiU3RhcjsiOiLii4YiLCJzdGFyOyI6IuKYhiIsInN0YXJmOyI6IuKYhSIsInN0cmFpZ2h0ZXBzaWxvbjsiOiLPtSIsInN0cmFpZ2h0cGhpOyI6Is+VIiwic3RybnM7Ijoiwq8iLCJTdWI7Ijoi4ouQIiwic3ViOyI6IuKKgiIsInN1YmRvdDsiOiLiqr0iLCJzdWJFOyI6IuKrhSIsInN1YmU7Ijoi4oqGIiwic3ViZWRvdDsiOiLiq4MiLCJzdWJtdWx0OyI6IuKrgSIsInN1Ym5FOyI6IuKriyIsInN1Ym5lOyI6IuKKiiIsInN1YnBsdXM7Ijoi4qq/Iiwic3VicmFycjsiOiLipbkiLCJTdWJzZXQ7Ijoi4ouQIiwic3Vic2V0OyI6IuKKgiIsInN1YnNldGVxOyI6IuKKhiIsInN1YnNldGVxcTsiOiLiq4UiLCJTdWJzZXRFcXVhbDsiOiLiioYiLCJzdWJzZXRuZXE7Ijoi4oqKIiwic3Vic2V0bmVxcTsiOiLiq4siLCJzdWJzaW07Ijoi4quHIiwic3Vic3ViOyI6IuKrlSIsInN1YnN1cDsiOiLiq5MiLCJzdWNjOyI6IuKJuyIsInN1Y2NhcHByb3g7Ijoi4qq4Iiwic3VjY2N1cmx5ZXE7Ijoi4om9IiwiU3VjY2VlZHM7Ijoi4om7IiwiU3VjY2VlZHNFcXVhbDsiOiLiqrAiLCJTdWNjZWVkc1NsYW50RXF1YWw7Ijoi4om9IiwiU3VjY2VlZHNUaWxkZTsiOiLiib8iLCJzdWNjZXE7Ijoi4qqwIiwic3VjY25hcHByb3g7Ijoi4qq6Iiwic3VjY25lcXE7Ijoi4qq2Iiwic3VjY25zaW07Ijoi4oupIiwic3VjY3NpbTsiOiLiib8iLCJTdWNoVGhhdDsiOiLiiIsiLCJTdW07Ijoi4oiRIiwic3VtOyI6IuKIkSIsInN1bmc7Ijoi4pmqIiwiU3VwOyI6IuKLkSIsInN1cDsiOiLiioMiLCJzdXAxOyI6IsK5IixzdXAxOiLCuSIsInN1cDI7IjoiwrIiLHN1cDI6IsKyIiwic3VwMzsiOiLCsyIsc3VwMzoiwrMiLCJzdXBkb3Q7Ijoi4qq+Iiwic3VwZHN1YjsiOiLiq5giLCJzdXBFOyI6IuKrhiIsInN1cGU7Ijoi4oqHIiwic3VwZWRvdDsiOiLiq4QiLCJTdXBlcnNldDsiOiLiioMiLCJTdXBlcnNldEVxdWFsOyI6IuKKhyIsInN1cGhzb2w7Ijoi4p+JIiwic3VwaHN1YjsiOiLiq5ciLCJzdXBsYXJyOyI6IuKluyIsInN1cG11bHQ7Ijoi4quCIiwic3VwbkU7Ijoi4quMIiwic3VwbmU7Ijoi4oqLIiwic3VwcGx1czsiOiLiq4AiLCJTdXBzZXQ7Ijoi4ouRIiwic3Vwc2V0OyI6IuKKgyIsInN1cHNldGVxOyI6IuKKhyIsInN1cHNldGVxcTsiOiLiq4YiLCJzdXBzZXRuZXE7Ijoi4oqLIiwic3Vwc2V0bmVxcTsiOiLiq4wiLCJzdXBzaW07Ijoi4quIIiwic3Vwc3ViOyI6IuKrlCIsInN1cHN1cDsiOiLiq5YiLCJzd2FyaGs7Ijoi4qSmIiwic3dBcnI7Ijoi4oeZIiwic3dhcnI7Ijoi4oaZIiwic3dhcnJvdzsiOiLihpkiLCJzd253YXI7Ijoi4qSqIiwic3psaWc7Ijoiw58iLHN6bGlnOiLDnyIsIlRhYjsiOiJcdCIsInRhcmdldDsiOiLijJYiLCJUYXU7IjoizqQiLCJ0YXU7Ijoiz4QiLCJ0YnJrOyI6IuKOtCIsIlRjYXJvbjsiOiLFpCIsInRjYXJvbjsiOiLFpSIsIlRjZWRpbDsiOiLFoiIsInRjZWRpbDsiOiLFoyIsIlRjeTsiOiLQoiIsInRjeTsiOiLRgiIsInRkb3Q7Ijoi4oObIiwidGVscmVjOyI6IuKMlSIsIlRmcjsiOiLwnZSXIiwidGZyOyI6IvCdlLEiLCJ0aGVyZTQ7Ijoi4oi0IiwiVGhlcmVmb3JlOyI6IuKItCIsInRoZXJlZm9yZTsiOiLiiLQiLCJUaGV0YTsiOiLOmCIsInRoZXRhOyI6Is64IiwidGhldGFzeW07Ijoiz5EiLCJ0aGV0YXY7Ijoiz5EiLCJ0aGlja2FwcHJveDsiOiLiiYgiLCJ0aGlja3NpbTsiOiLiiLwiLCJUaGlja1NwYWNlOyI6IuKBn+KAiiIsInRoaW5zcDsiOiLigIkiLCJUaGluU3BhY2U7Ijoi4oCJIiwidGhrYXA7Ijoi4omIIiwidGhrc2ltOyI6IuKIvCIsIlRIT1JOOyI6IsOeIixUSE9STjoiw54iLCJ0aG9ybjsiOiLDviIsdGhvcm46IsO+IiwiVGlsZGU7Ijoi4oi8IiwidGlsZGU7Ijoiy5wiLCJUaWxkZUVxdWFsOyI6IuKJgyIsIlRpbGRlRnVsbEVxdWFsOyI6IuKJhSIsIlRpbGRlVGlsZGU7Ijoi4omIIiwidGltZXM7Ijoiw5ciLHRpbWVzOiLDlyIsInRpbWVzYjsiOiLiiqAiLCJ0aW1lc2JhcjsiOiLiqLEiLCJ0aW1lc2Q7Ijoi4qiwIiwidGludDsiOiLiiK0iLCJ0b2VhOyI6IuKkqCIsInRvcDsiOiLiiqQiLCJ0b3Bib3Q7Ijoi4oy2IiwidG9wY2lyOyI6IuKrsSIsIlRvcGY7Ijoi8J2ViyIsInRvcGY7Ijoi8J2VpSIsInRvcGZvcms7Ijoi4quaIiwidG9zYTsiOiLipKkiLCJ0cHJpbWU7Ijoi4oC0IiwiVFJBREU7Ijoi4oSiIiwidHJhZGU7Ijoi4oSiIiwidHJpYW5nbGU7Ijoi4pa1IiwidHJpYW5nbGVkb3duOyI6IuKWvyIsInRyaWFuZ2xlbGVmdDsiOiLil4MiLCJ0cmlhbmdsZWxlZnRlcTsiOiLiirQiLCJ0cmlhbmdsZXE7Ijoi4omcIiwidHJpYW5nbGVyaWdodDsiOiLilrkiLCJ0cmlhbmdsZXJpZ2h0ZXE7Ijoi4oq1IiwidHJpZG90OyI6IuKXrCIsInRyaWU7Ijoi4omcIiwidHJpbWludXM7Ijoi4qi6IiwiVHJpcGxlRG90OyI6IuKDmyIsInRyaXBsdXM7Ijoi4qi5IiwidHJpc2I7Ijoi4qeNIiwidHJpdGltZTsiOiLiqLsiLCJ0cnBleml1bTsiOiLij6IiLCJUc2NyOyI6IvCdkq8iLCJ0c2NyOyI6IvCdk4kiLCJUU2N5OyI6ItCmIiwidHNjeTsiOiLRhiIsIlRTSGN5OyI6ItCLIiwidHNoY3k7Ijoi0ZsiLCJUc3Ryb2s7IjoixaYiLCJ0c3Ryb2s7IjoixaciLCJ0d2l4dDsiOiLiiawiLCJ0d29oZWFkbGVmdGFycm93OyI6IuKGniIsInR3b2hlYWRyaWdodGFycm93OyI6IuKGoCIsIlVhY3V0ZTsiOiLDmiIsVWFjdXRlOiLDmiIsInVhY3V0ZTsiOiLDuiIsdWFjdXRlOiLDuiIsIlVhcnI7Ijoi4oafIiwidUFycjsiOiLih5EiLCJ1YXJyOyI6IuKGkSIsIlVhcnJvY2lyOyI6IuKliSIsIlVicmN5OyI6ItCOIiwidWJyY3k7Ijoi0Z4iLCJVYnJldmU7IjoixawiLCJ1YnJldmU7Ijoixa0iLCJVY2lyYzsiOiLDmyIsVWNpcmM6IsObIiwidWNpcmM7Ijoiw7siLHVjaXJjOiLDuyIsIlVjeTsiOiLQoyIsInVjeTsiOiLRgyIsInVkYXJyOyI6IuKHhSIsIlVkYmxhYzsiOiLFsCIsInVkYmxhYzsiOiLFsSIsInVkaGFyOyI6IuKlriIsInVmaXNodDsiOiLipb4iLCJVZnI7Ijoi8J2UmCIsInVmcjsiOiLwnZSyIiwiVWdyYXZlOyI6IsOZIixVZ3JhdmU6IsOZIiwidWdyYXZlOyI6IsO5Iix1Z3JhdmU6IsO5IiwidUhhcjsiOiLipaMiLCJ1aGFybDsiOiLihr8iLCJ1aGFycjsiOiLihr4iLCJ1aGJsazsiOiLiloAiLCJ1bGNvcm47Ijoi4oycIiwidWxjb3JuZXI7Ijoi4oycIiwidWxjcm9wOyI6IuKMjyIsInVsdHJpOyI6IuKXuCIsIlVtYWNyOyI6IsWqIiwidW1hY3I7IjoixasiLCJ1bWw7IjoiwqgiLHVtbDoiwqgiLCJVbmRlckJhcjsiOiJfIiwiVW5kZXJCcmFjZTsiOiLij58iLCJVbmRlckJyYWNrZXQ7Ijoi4o61IiwiVW5kZXJQYXJlbnRoZXNpczsiOiLij50iLCJVbmlvbjsiOiLii4MiLCJVbmlvblBsdXM7Ijoi4oqOIiwiVW9nb247IjoixbIiLCJ1b2dvbjsiOiLFsyIsIlVvcGY7Ijoi8J2VjCIsInVvcGY7Ijoi8J2VpiIsIlVwQXJyb3c7Ijoi4oaRIiwiVXBhcnJvdzsiOiLih5EiLCJ1cGFycm93OyI6IuKGkSIsIlVwQXJyb3dCYXI7Ijoi4qSSIiwiVXBBcnJvd0Rvd25BcnJvdzsiOiLih4UiLCJVcERvd25BcnJvdzsiOiLihpUiLCJVcGRvd25hcnJvdzsiOiLih5UiLCJ1cGRvd25hcnJvdzsiOiLihpUiLCJVcEVxdWlsaWJyaXVtOyI6IuKlriIsInVwaGFycG9vbmxlZnQ7Ijoi4oa/IiwidXBoYXJwb29ucmlnaHQ7Ijoi4oa+IiwidXBsdXM7Ijoi4oqOIiwiVXBwZXJMZWZ0QXJyb3c7Ijoi4oaWIiwiVXBwZXJSaWdodEFycm93OyI6IuKGlyIsIlVwc2k7Ijoiz5IiLCJ1cHNpOyI6Is+FIiwidXBzaWg7Ijoiz5IiLCJVcHNpbG9uOyI6Is6lIiwidXBzaWxvbjsiOiLPhSIsIlVwVGVlOyI6IuKKpSIsIlVwVGVlQXJyb3c7Ijoi4oalIiwidXB1cGFycm93czsiOiLih4giLCJ1cmNvcm47Ijoi4oydIiwidXJjb3JuZXI7Ijoi4oydIiwidXJjcm9wOyI6IuKMjiIsIlVyaW5nOyI6IsWuIiwidXJpbmc7Ijoixa8iLCJ1cnRyaTsiOiLil7kiLCJVc2NyOyI6IvCdkrAiLCJ1c2NyOyI6IvCdk4oiLCJ1dGRvdDsiOiLii7AiLCJVdGlsZGU7IjoixagiLCJ1dGlsZGU7IjoixakiLCJ1dHJpOyI6IuKWtSIsInV0cmlmOyI6IuKWtCIsInV1YXJyOyI6IuKHiCIsIlV1bWw7Ijoiw5wiLFV1bWw6IsOcIiwidXVtbDsiOiLDvCIsdXVtbDoiw7wiLCJ1d2FuZ2xlOyI6IuKmpyIsInZhbmdydDsiOiLippwiLCJ2YXJlcHNpbG9uOyI6Is+1IiwidmFya2FwcGE7Ijoiz7AiLCJ2YXJub3RoaW5nOyI6IuKIhSIsInZhcnBoaTsiOiLPlSIsInZhcnBpOyI6Is+WIiwidmFycHJvcHRvOyI6IuKInSIsInZBcnI7Ijoi4oeVIiwidmFycjsiOiLihpUiLCJ2YXJyaG87Ijoiz7EiLCJ2YXJzaWdtYTsiOiLPgiIsInZhcnN1YnNldG5lcTsiOiLiiorvuIAiLCJ2YXJzdWJzZXRuZXFxOyI6IuKri++4gCIsInZhcnN1cHNldG5lcTsiOiLiiovvuIAiLCJ2YXJzdXBzZXRuZXFxOyI6IuKrjO+4gCIsInZhcnRoZXRhOyI6Is+RIiwidmFydHJpYW5nbGVsZWZ0OyI6IuKKsiIsInZhcnRyaWFuZ2xlcmlnaHQ7Ijoi4oqzIiwiVmJhcjsiOiLiq6siLCJ2QmFyOyI6IuKrqCIsInZCYXJ2OyI6IuKrqSIsIlZjeTsiOiLQkiIsInZjeTsiOiLQsiIsIlZEYXNoOyI6IuKKqyIsIlZkYXNoOyI6IuKKqSIsInZEYXNoOyI6IuKKqCIsInZkYXNoOyI6IuKKoiIsIlZkYXNobDsiOiLiq6YiLCJWZWU7Ijoi4ouBIiwidmVlOyI6IuKIqCIsInZlZWJhcjsiOiLiirsiLCJ2ZWVlcTsiOiLiiZoiLCJ2ZWxsaXA7Ijoi4ouuIiwiVmVyYmFyOyI6IuKAliIsInZlcmJhcjsiOiJ8IiwiVmVydDsiOiLigJYiLCJ2ZXJ0OyI6InwiLCJWZXJ0aWNhbEJhcjsiOiLiiKMiLCJWZXJ0aWNhbExpbmU7IjoifCIsIlZlcnRpY2FsU2VwYXJhdG9yOyI6IuKdmCIsIlZlcnRpY2FsVGlsZGU7Ijoi4omAIiwiVmVyeVRoaW5TcGFjZTsiOiLigIoiLCJWZnI7Ijoi8J2UmSIsInZmcjsiOiLwnZSzIiwidmx0cmk7Ijoi4oqyIiwidm5zdWI7Ijoi4oqC4oOSIiwidm5zdXA7Ijoi4oqD4oOSIiwiVm9wZjsiOiLwnZWNIiwidm9wZjsiOiLwnZWnIiwidnByb3A7Ijoi4oidIiwidnJ0cmk7Ijoi4oqzIiwiVnNjcjsiOiLwnZKxIiwidnNjcjsiOiLwnZOLIiwidnN1Ym5FOyI6IuKri++4gCIsInZzdWJuZTsiOiLiiorvuIAiLCJ2c3VwbkU7Ijoi4quM77iAIiwidnN1cG5lOyI6IuKKi++4gCIsIlZ2ZGFzaDsiOiLiiqoiLCJ2emlnemFnOyI6IuKmmiIsIldjaXJjOyI6IsW0Iiwid2NpcmM7IjoixbUiLCJ3ZWRiYXI7Ijoi4qmfIiwiV2VkZ2U7Ijoi4ouAIiwid2VkZ2U7Ijoi4oinIiwid2VkZ2VxOyI6IuKJmSIsIndlaWVycDsiOiLihJgiLCJXZnI7Ijoi8J2UmiIsIndmcjsiOiLwnZS0IiwiV29wZjsiOiLwnZWOIiwid29wZjsiOiLwnZWoIiwid3A7Ijoi4oSYIiwid3I7Ijoi4omAIiwid3JlYXRoOyI6IuKJgCIsIldzY3I7Ijoi8J2SsiIsIndzY3I7Ijoi8J2TjCIsInhjYXA7Ijoi4ouCIiwieGNpcmM7Ijoi4pevIiwieGN1cDsiOiLii4MiLCJ4ZHRyaTsiOiLilr0iLCJYZnI7Ijoi8J2UmyIsInhmcjsiOiLwnZS1IiwieGhBcnI7Ijoi4p+6IiwieGhhcnI7Ijoi4p+3IiwiWGk7Ijoizp4iLCJ4aTsiOiLOviIsInhsQXJyOyI6IuKfuCIsInhsYXJyOyI6IuKftSIsInhtYXA7Ijoi4p+8IiwieG5pczsiOiLii7siLCJ4b2RvdDsiOiLiqIAiLCJYb3BmOyI6IvCdlY8iLCJ4b3BmOyI6IvCdlakiLCJ4b3BsdXM7Ijoi4qiBIiwieG90aW1lOyI6IuKogiIsInhyQXJyOyI6IuKfuSIsInhyYXJyOyI6IuKftiIsIlhzY3I7Ijoi8J2SsyIsInhzY3I7Ijoi8J2TjSIsInhzcWN1cDsiOiLiqIYiLCJ4dXBsdXM7Ijoi4qiEIiwieHV0cmk7Ijoi4pazIiwieHZlZTsiOiLii4EiLCJ4d2VkZ2U7Ijoi4ouAIiwiWWFjdXRlOyI6IsOdIixZYWN1dGU6IsOdIiwieWFjdXRlOyI6IsO9Iix5YWN1dGU6IsO9IiwiWUFjeTsiOiLQryIsInlhY3k7Ijoi0Y8iLCJZY2lyYzsiOiLFtiIsInljaXJjOyI6IsW3IiwiWWN5OyI6ItCrIiwieWN5OyI6ItGLIiwieWVuOyI6IsKlIix5ZW46IsKlIiwiWWZyOyI6IvCdlJwiLCJ5ZnI7Ijoi8J2UtiIsIllJY3k7Ijoi0IciLCJ5aWN5OyI6ItGXIiwiWW9wZjsiOiLwnZWQIiwieW9wZjsiOiLwnZWqIiwiWXNjcjsiOiLwnZK0IiwieXNjcjsiOiLwnZOOIiwiWVVjeTsiOiLQriIsInl1Y3k7Ijoi0Y4iLCJZdW1sOyI6IsW4IiwieXVtbDsiOiLDvyIseXVtbDoiw78iLCJaYWN1dGU7IjoixbkiLCJ6YWN1dGU7IjoixboiLCJaY2Fyb247Ijoixb0iLCJ6Y2Fyb247Ijoixb4iLCJaY3k7Ijoi0JciLCJ6Y3k7Ijoi0LciLCJaZG90OyI6IsW7IiwiemRvdDsiOiLFvCIsInplZXRyZjsiOiLihKgiLCJaZXJvV2lkdGhTcGFjZTsiOiLigIsiLCJaZXRhOyI6Is6WIiwiemV0YTsiOiLOtiIsIlpmcjsiOiLihKgiLCJ6ZnI7Ijoi8J2UtyIsIlpIY3k7Ijoi0JYiLCJ6aGN5OyI6ItC2IiwiemlncmFycjsiOiLih50iLCJab3BmOyI6IuKEpCIsInpvcGY7Ijoi8J2VqyIsIlpzY3I7Ijoi8J2StSIsInpzY3I7Ijoi8J2TjyIsInp3ajsiOiLigI0iLCJ6d25qOyI6IuKAjCJ9O2Z1bmN0aW9uIHhpKGUsdCl7aWYoIShlLmxlbmd0aDx0Lmxlbmd0aCkpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybjtyZXR1cm4gMX19ZnVuY3Rpb24gTGkoZSx0KXtmb3IodmFyIG49IiI7MDx0OykxPT0oMSZ0KSYmKG4rPWUpLGUrPWUsdD4+Pj0xO3JldHVybiBufXZhciBBaT0iYSIuY2hhckNvZGVBdCgwKSxFaT0ieiIuY2hhckNvZGVBdCgwKSxNaT0iQSIuY2hhckNvZGVBdCgwKSxSaT0iWiIuY2hhckNvZGVBdCgwKSxJaT0iMCIuY2hhckNvZGVBdCgwKSxOaT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBVaShlLHQpe2U9ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBBaTw9ZSYmZTw9RWl8fE1pPD1lJiZlPD1SaXx8SWk8PWUmJmU8PU5pfWZ1bmN0aW9uIHppKGUpe3JldHVybiB2b2lkIDAhPT1lfURpLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sRGkucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9LERpLnByb3RvdHlwZS5wcm92aWRlVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90YWdzfSxEaS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtuLnB1c2goZSl9dmFyIG49W10sZT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gZSYmZS5hdHRyaWJ1dGVzLmZvckVhY2godCksdGhpcy5fZ2xvYmFsQXR0cmlidXRlcy5mb3JFYWNoKHQpLG59LERpLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSksZS52YWx1ZVNldCYmci5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0mJnIuX3ZhbHVlU2V0TWFwW2UudmFsdWVTZXRdLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSkpfSl9dmFyIHI9dGhpcyxpPVtdLGU9KHQ9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX3RhZ01hcFtlLnRvTG93ZXJDYXNlKCldKTtyZXR1cm4gZSYmbihlLmF0dHJpYnV0ZXMpLG4odGhpcy5fZ2xvYmFsQXR0cmlidXRlcyksaX07dmFyIEhpPURpO2Z1bmN0aW9uIERpKGUsdCl7dmFyIG49dGhpczt0aGlzLmlkPWUsdGhpcy5fdGFncz1bXSx0aGlzLl90YWdNYXA9e30sdGhpcy5fdmFsdWVTZXRNYXA9e30sdGhpcy5fdGFncz10LnRhZ3N8fFtdLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXM9dC5nbG9iYWxBdHRyaWJ1dGVzfHxbXSx0aGlzLl90YWdzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSksdC52YWx1ZVNldHMmJnQudmFsdWVTZXRzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdmFsdWVTZXRNYXBbZS5uYW1lXT1lLnZhbHVlc30pfWZ1bmN0aW9uIFdpKGUsdCxuKXt2b2lkIDA9PT10JiYodD17fSk7dmFyIHIsaT17a2luZDpuPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9O2lmKCFlLmRlc2NyaXB0aW9ufHwhMT09PXQuZG9jdW1lbnRhdGlvbnx8KHI9ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplfTp7a2luZDoibWFya2Rvd24iLHZhbHVlOmUudmFsdWV9fShlLmRlc2NyaXB0aW9uKSkmJihpLnZhbHVlKz1yLnZhbHVlKSxlLnJlZmVyZW5jZXMmJjA8ZS5yZWZlcmVuY2VzLmxlbmd0aCYmITEhPT10LnJlZmVyZW5jZXMmJihpLnZhbHVlLmxlbmd0aCYmKGkudmFsdWUrPSJcblxuIiksaS52YWx1ZSs9bj9lLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiJbIitlLm5hbWUrIl0oIitlLnVybCsiKSJ9KS5qb2luKCIgfCAiKTplLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWUrIjogIitlLnVybH0pLmpvaW4oIlxuIikpLCIiIT09aS52YWx1ZSlyZXR1cm4gaX1mdW5jdGlvbiBQaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIE9pKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fUZpLnByb3RvdHlwZS5vbkh0bWxBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigic3JjIj09PXR8fCJocmVmIj09PXQpcmV0dXJuITA7ZT1HaVtlXTtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9lPT09dDotMSE9PWUuaW5kZXhPZih0KTtyZXR1cm4hMX0oZS50YWcsZS5hdHRyaWJ1dGUpfHx0aGlzLmF0cmlidXRlQ29tcGxldGlvbnMucHVzaChlKX0sRmkucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihkLHUpe3JldHVybiBQaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixyLGksYSxvLHMsbCxoLGM7cmV0dXJuIE9pKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucyxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiByPGkubGVuZ3RoPyhhPWlbcl0sdD1kLmdldFRleHQoYS5yYW5nZSksZnVuY3Rpb24oZSl7aWYoeGkoZSwiaHR0cCIpfHx4aShlLCJodHRwcyIpfHx4aShlLCIvLyIpKXJldHVybiExO3JldHVybiEwfShvPXhpKHQsIiciKXx8eGkodCwnIicpP3Quc2xpY2UoMSwtMSk6dCk/Ii4iIT09byYmIi4uIiE9PW8/WzMsMl06KG4uaXNJbmNvbXBsZXRlPSEwLFszLDRdKTpbMyw0XSk6WzMsNV07Y2FzZSAyOnJldHVybiBzPWZ1bmN0aW9uKGUsdCxuKXtlPWUubGFzdEluZGV4T2YoIi8iKTt7dmFyIHI7dD0tMT09PWU/ZnVuY3Rpb24oZSx0LG4pe3Q9QmkoZS5zdGFydCx0KSxlPUJpKGUuZW5kLG4pO3JldHVybiBYbi5jcmVhdGUodCxlKX0obiwxLC0xKToodD10LnNsaWNlKGUrMSksZT1CaShuLmVuZCwtMS10Lmxlbmd0aCksdD10LmluZGV4T2YoIiAiKSxyPXZvaWQgMCxyPS0xIT09dD9CaShlLHQpOkJpKG4uZW5kLC0xKSxYbi5jcmVhdGUoZSxyKSl9cmV0dXJuIHR9KGEudmFsdWUsbyxhLnJhbmdlKSxbNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMoYS52YWx1ZSxzLGQsdSldO2Nhc2UgMzpmb3Iocz1lLnNlbnQoKSxsPTAsaD1zO2w8aC5sZW5ndGg7bCsrKWM9aFtsXSxuLml0ZW1zLnB1c2goYyk7ZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gcisrLFszLDFdO2Nhc2UgNTpyZXR1cm5bMixuXX12YXIgdH0pfSl9LEZpLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGQsdSxwLG0pe3JldHVybiBQaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaSxhLG8scyxsLGgsYztyZXR1cm4gT2kodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKGk9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksIShpPW0ucmVzb2x2ZVJlZmVyZW5jZShpfHwiLiIscC51cmkpKSlyZXR1cm5bMyw0XTtlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwzLCw0XSksYT1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkoaSldO2Nhc2UgMjpmb3Iobz1lLnNlbnQoKSxzPTAsbD1vO3M8bC5sZW5ndGg7cysrKWM9bFtzXSxoPWNbMF0sYz1jWzFdLGguY2hhckNvZGVBdCgwKSE9PVZpJiZhLnB1c2goKHQ9aCxuPWM9PT1Yci5EaXJlY3Rvcnkscj11LG4/e2xhYmVsOnQrPSIvIixraW5kOlNyLkZvbGRlcix0ZXh0RWRpdDplci5yZXBsYWNlKHIsdCksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX06e2xhYmVsOnQsa2luZDpTci5GaWxlLHRleHRFZGl0OmVyLnJlcGxhY2Uocix0KX0pKTtyZXR1cm5bMixhXTtjYXNlIDM6cmV0dXJuIGUuc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19dmFyIHQsbixyfSl9KX07dmFyIHFpPUZpO2Z1bmN0aW9uIEZpKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucz1bXX12YXIgVmk9Ii4iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gQmkoZSx0KXtyZXR1cm4gSm4uY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX1mdW5jdGlvbiBLaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIGppKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fXZhciBHaT17YToiaHJlZiIsYXJlYToiaHJlZiIsYm9keToiYmFja2dyb3VuZCIsZGVsOiJjaXRlIixmb3JtOiJhY3Rpb24iLGZyYW1lOlsic3JjIiwibG9uZ2Rlc2MiXSxpbWc6WyJzcmMiLCJsb25nZGVzYyJdLGluczoiY2l0ZSIsbGluazoiaHJlZiIsb2JqZWN0OiJkYXRhIixxOiJjaXRlIixzY3JpcHQ6InNyYyIsYXVkaW86InNyYyIsYnV0dG9uOiJmb3JtYWN0aW9uIixjb21tYW5kOiJpY29uIixlbWJlZDoic3JjIixodG1sOiJtYW5pZmVzdCIsaW5wdXQ6WyJzcmMiLCJmb3JtYWN0aW9uIl0sc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLHZpZGVvOlsic3JjIiwicG9zdGVyIl19LCRpPWZyLEppPShYaS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LFhpLnByb3RvdHlwZS5kb0NvbXBsZXRlMj1mdW5jdGlvbihhLG8scyxsLGgpe3JldHVybiBLaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdCxuLHIsaTtyZXR1cm4gamkodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoYSxvLHMsaCldO3Q9bmV3IHFpKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxuPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W3RdLmNvbmNhdChuKSxyPXRoaXMuZG9Db21wbGV0ZShhLG8scyxoKSxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwsMyw0XSksWzQsdC5jb21wdXRlQ29tcGxldGlvbnMoYSxsKV07Y2FzZSAyOnJldHVybiBpPWUuc2VudCgpLFsyLHtpc0luY29tcGxldGU6ci5pc0luY29tcGxldGV8fGkuaXNJbmNvbXBsZXRlLGl0ZW1zOmkuaXRlbXMuY29uY2F0KHIuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9bixbN107Y2FzZSA0OnJldHVyblsyXX19KX0pfSxYaS5wcm90b3R5cGUuZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXtlPXRoaXMuX2RvQ29tcGxldGUoZSx0LG4scik7cmV0dXJuIHRoaXMuY29udmVydENvbXBsZXRpb25MaXN0KGUpfSxYaS5wcm90b3R5cGUuX2RvQ29tcGxldGU9ZnVuY3Rpb24ocCxtLHUsZCl7dmFyIGY9e2lzSW5jb21wbGV0ZTohMSxpdGVtczpbXX0sdj10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMseT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNBcHBsaWNhYmxlKHAubGFuZ3VhZ2VJZCkmJighZHx8ITEhPT1kW2UuZ2V0SWQoKV0pfSksVD10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxnPXAuZ2V0VGV4dCgpLGI9cC5vZmZzZXRBdChtKSxrPXUuZmluZE5vZGVCZWZvcmUoYik7aWYoIWspcmV0dXJuIGY7dmFyIFMsdD1faShnLGsuc3RhcnQpLF89IiI7ZnVuY3Rpb24gdyhlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iKSx7c3RhcnQ6cC5wb3NpdGlvbkF0KGU9YjxlP2I6ZSksZW5kOnAucG9zaXRpb25BdCh0KX19ZnVuY3Rpb24gbihlLHQpe3ZhciBuPXcoZSx0KTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2YuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6U3IuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpXaShlLHZvaWQgMCxUKSx0ZXh0RWRpdDplci5yZXBsYWNlKG4sZS5uYW1lKSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGMoZSl7Zm9yKHZhciB0PWU7MDx0Oyl7dmFyIG49Zy5jaGFyQXQodC0xKTtpZigwPD0iXG5cciIuaW5kZXhPZihuKSlyZXR1cm4gZy5zdWJzdHJpbmcodCxlKTtpZighWWkobikpcmV0dXJuIG51bGw7dC0tfXJldHVybiBnLnN1YnN0cmluZygwLGUpfWZ1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXcoZSxuPXZvaWQgMD09PW4/YjpuKSxpPVFpKGcsbixSLldpdGhpbkVuZFRhZyxNLkVuZFRhZ0Nsb3NlKT8iIjoiPiIsYT1rO2Zvcih0JiYoYT1hLnBhcmVudCk7YTspe3ZhciBvLHMsbCxoPWEudGFnO2lmKGgmJighYS5jbG9zZWR8fGEuZW5kVGFnU3RhcnQmJmEuZW5kVGFnU3RhcnQ+YikpcmV0dXJuIG89e2xhYmVsOiIvIitoLGtpbmQ6U3IuUHJvcGVydHksZmlsdGVyVGV4dDoiLyIraCx0ZXh0RWRpdDplci5yZXBsYWNlKHIsIi8iK2graSksaW5zZXJ0VGV4dEZvcm1hdDp4ci5QbGFpblRleHR9LGw9YyhhLnN0YXJ0KSxzPWMoZS0xKSxudWxsIT09bCYmbnVsbCE9PXMmJmwhPT1zJiYobD1sKyI8LyIraCtpLG8udGV4dEVkaXQ9ZXIucmVwbGFjZSh3KGUtMS1zLmxlbmd0aCksbCksby5maWx0ZXJUZXh0PXMrIjwvIitoKSxmLml0ZW1zLnB1c2gobyksZjthPWEucGFyZW50fXJldHVybiB0fHx5LmZvckVhY2goZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goZnVuY3Rpb24oZSl7Zi5pdGVtcy5wdXNoKHtsYWJlbDoiLyIrZS5uYW1lLGtpbmQ6U3IuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpXaShlLHZvaWQgMCxUKSxmaWx0ZXJUZXh0OiIvIitlLm5hbWUraSx0ZXh0RWRpdDplci5yZXBsYWNlKHIsIi8iK2UubmFtZStpKSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gbihlLHQpLHIoZSwhMCx0KSxmfWZ1bmN0aW9uIGEoZSx0KXt2b2lkIDA9PT10JiYodD1iKTtmb3IodmFyIG49YjtuPHQmJiI8IiE9PWdbbl07KW4rKzt2YXIgcixpPWcuc3Vic3RyaW5nKGUsdCksYT13KGUsbiksbz0iIixzPShRaShnLHQsUi5BZnRlckF0dHJpYnV0ZU5hbWUsTS5EZWxpbWl0ZXJBc3NpZ24pfHwoZT1udWxsIT09KGU9bnVsbD09ZD92b2lkIDA6ZC5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1lP2U6ImRvdWJsZXF1b3RlcyIsbz0iZW1wdHkiPT09ZT8iPSQxIjoic2luZ2xlcXVvdGVzIj09PWU/Ij0nJDEnIjonPSIkMSInKSxyPU9iamVjdC5jcmVhdGUobnVsbCksay5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ITB9KSxyKSxsPShzW2ldPSExLHkuZm9yRWFjaChmdW5jdGlvbihlKXtlLnByb3ZpZGVBdHRyaWJ1dGVzKF8pLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbjtzW2UubmFtZV18fChzW2UubmFtZV09ITAsdD1lLm5hbWUsInYiIT09ZS52YWx1ZVNldCYmby5sZW5ndGgmJih0Kz1vLCFlLnZhbHVlU2V0JiYic3R5bGUiIT09ZS5uYW1lfHwobj17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSkpLGYuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6ImhhbmRsZXIiPT09ZS52YWx1ZVNldD9Tci5GdW5jdGlvbjpTci5WYWx1ZSxkb2N1bWVudGF0aW9uOldpKGUsdm9pZCAwLFQpLHRleHRFZGl0OmVyLnJlcGxhY2UoYSx0KSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlNuaXBwZXQsY29tbWFuZDpufSkpfSl9KSxhKSxjPXMsaD17ImRhdGEtIjonZGF0YS0kMT0iJDIiJ307cmV0dXJuIHUmJnUucm9vdHMuZm9yRWFjaChmdW5jdGlvbiBlKHQpe3QuYXR0cmlidXRlTmFtZXMuZm9yRWFjaChmdW5jdGlvbihlKXsheGkoZSwiZGF0YS0iKXx8aFtlXXx8Y1tlXXx8KGhbZV09ZSsnPSIkMSInKX0pLHQuY2hpbGRyZW4uZm9yRWFjaChlKX0pLE9iamVjdC5rZXlzKGgpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGYuaXRlbXMucHVzaCh7bGFiZWw6ZSxraW5kOlNyLlZhbHVlLHRleHRFZGl0OmVyLnJlcGxhY2UobCxoW2VdKSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlNuaXBwZXR9KX0pLGZ9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuLHIsaSxhLG87aWYodm9pZCAwPT09dCYmKHQ9Yiksbz1lPGImJmI8PXQmJi9eWyInXSokLy50ZXN0KGdbZV0pPyhlPChyPXQpJiZnW3QtMV09PT1nW2VdJiZyLS0saT13KGZ1bmN0aW9uKGUsdCxuKXtmb3IoO248dCYmIVlpKGVbdC0xXSk7KXQtLTtyZXR1cm4gdH0oZyxiLG49ZSsxKSxmdW5jdGlvbihlLHQsbil7Zm9yKDt0PG4mJiFZaShlW3RdKTspdCsrO3JldHVybiB0fShnLGIscikpLGE9bjw9YiYmYjw9cj9nLnN1YnN0cmluZyhuLGIpOiIiLCExKTooaT13KGUsdCksYT1nLnN1YnN0cmluZyhlLGIpLCEwKSwwPHYubGVuZ3RoKWZvcih2YXIgYz1fLnRvTG93ZXJDYXNlKCksZD1TLnRvTG93ZXJDYXNlKCksdT13KGUsdCkscz0wLGw9djtzPGwubGVuZ3RoO3MrKyl7dmFyIGg9bFtzXTtoLm9uSHRtbEF0dHJpYnV0ZVZhbHVlJiZoLm9uSHRtbEF0dHJpYnV0ZVZhbHVlKHtkb2N1bWVudDpwLHBvc2l0aW9uOm0sdGFnOmMsYXR0cmlidXRlOmQsdmFsdWU6YSxyYW5nZTp1fSl9cmV0dXJuIHkuZm9yRWFjaChmdW5jdGlvbihlKXtlLnByb3ZpZGVWYWx1ZXMoXyxTKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW8/JyInK2UubmFtZSsnIic6ZS5uYW1lO2YuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGZpbHRlclRleHQ6dCxraW5kOlNyLlVuaXQsZG9jdW1lbnRhdGlvbjpXaShlLHZvaWQgMCxUKSx0ZXh0RWRpdDplci5yZXBsYWNlKGksdCksaW5zZXJ0VGV4dEZvcm1hdDp4ci5QbGFpblRleHR9KX0pfSksQygpLGZ9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gYj09PXQuZ2V0VG9rZW5FbmQoKSYmKEw9dC5zY2FuKCkpPT09ZSYmdC5nZXRUb2tlbk9mZnNldCgpPT09Yj90LmdldFRva2VuRW5kKCk6Yn1mdW5jdGlvbiBsKCl7Zm9yKHZhciBlPTAsdD12O2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO24ub25IdG1sQ29udGVudCYmbi5vbkh0bWxDb250ZW50KHtkb2N1bWVudDpwLHBvc2l0aW9uOm19KX1yZXR1cm4gQygpfWZ1bmN0aW9uIEMoKXtmb3IodmFyIGUsdCxuPWItMSxyPW0uY2hhcmFjdGVyOzA8PW4mJlVpKGcsbik7KW4tLSxyLS07aWYoMDw9biYmIiYiPT09Z1tuXSl7dmFyIGksYSxvPVhuLmNyZWF0ZShKbi5jcmVhdGUobS5saW5lLHItMSksbSk7Zm9yKGkgaW4gQ2kpdD0iOyIsYT12b2lkIDAsKDA8KGE9KGU9aSkubGVuZ3RoLXQubGVuZ3RoKT9lLmxhc3RJbmRleE9mKHQpPT09YTowPT1hJiZlPT09dCkmJmYuaXRlbXMucHVzaCh7bGFiZWw6YT0iJiIraSxraW5kOlNyLktleXdvcmQsZG9jdW1lbnRhdGlvbjokaSgiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIitDaVtpXSsiJyIpLHRleHRFZGl0OmVyLnJlcGxhY2UobyxhKSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlBsYWluVGV4dH0pfXJldHVybiBmfWZvcih2YXIgaCx4LGUsTD10LnNjYW4oKTtMIT09TS5FT1MmJnQuZ2V0VG9rZW5PZmZzZXQoKTw9Yjspe3N3aXRjaChMKXtjYXNlIE0uU3RhcnRUYWdPcGVuOmlmKHQuZ2V0VG9rZW5FbmQoKT09PWIpcmV0dXJuIGg9cyhNLlN0YXJ0VGFnKSwwPT09bS5saW5lJiYoZT13KGU9YixoKSxmLml0ZW1zLnB1c2goe2xhYmVsOiIhRE9DVFlQRSIsa2luZDpTci5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOiJBIHByZWFtYmxlIGZvciBhbiBIVE1MIGRvY3VtZW50LiIsdGV4dEVkaXQ6ZXIucmVwbGFjZShlLCIhRE9DVFlQRSBodG1sPiIpLGluc2VydFRleHRGb3JtYXQ6eHIuUGxhaW5UZXh0fSkpLGkoYixoKTticmVhaztjYXNlIE0uU3RhcnRUYWc6aWYodC5nZXRUb2tlbk9mZnNldCgpPD1iJiZiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIG4odC5nZXRUb2tlbk9mZnNldCgpLHQuZ2V0VG9rZW5FbmQoKSk7Xz10LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVOYW1lOmlmKHQuZ2V0VG9rZW5PZmZzZXQoKTw9YiYmYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiBhKHQuZ2V0VG9rZW5PZmZzZXQoKSx0LmdldFRva2VuRW5kKCkpO1M9dC5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE0uRGVsaW1pdGVyQXNzaWduOmlmKHQuZ2V0VG9rZW5FbmQoKT09PWIpcmV0dXJuIGg9cyhNLkF0dHJpYnV0ZVZhbHVlKSxvKGIsaCk7YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZVZhbHVlOmlmKHQuZ2V0VG9rZW5PZmZzZXQoKTw9YiYmYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiBvKHQuZ2V0VG9rZW5PZmZzZXQoKSx0LmdldFRva2VuRW5kKCkpO2JyZWFrO2Nhc2UgTS5XaGl0ZXNwYWNlOmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlzd2l0Y2godC5nZXRTY2FubmVyU3RhdGUoKSl7Y2FzZSBSLkFmdGVyT3BlbmluZ1N0YXJ0VGFnOnJldHVybiBpKHQuZ2V0VG9rZW5PZmZzZXQoKSxzKE0uU3RhcnRUYWcpKTtjYXNlIFIuV2l0aGluVGFnOmNhc2UgUi5BZnRlckF0dHJpYnV0ZU5hbWU6cmV0dXJuIGEodC5nZXRUb2tlbkVuZCgpKTtjYXNlIFIuQmVmb3JlQXR0cmlidXRlVmFsdWU6cmV0dXJuIG8odC5nZXRUb2tlbkVuZCgpKTtjYXNlIFIuQWZ0ZXJPcGVuaW5nRW5kVGFnOnJldHVybiByKHQuZ2V0VG9rZW5PZmZzZXQoKS0xLCExKTtjYXNlIFIuV2l0aGluQ29udGVudDpyZXR1cm4gbCgpfWJyZWFrO2Nhc2UgTS5FbmRUYWdPcGVuOmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gcih0LmdldFRva2VuT2Zmc2V0KCkrMSwhMSxzKE0uRW5kVGFnKSk7YnJlYWs7Y2FzZSBNLkVuZFRhZzppZihiPD10LmdldFRva2VuRW5kKCkpZm9yKHZhciBBPXQuZ2V0VG9rZW5PZmZzZXQoKS0xOzA8PUE7KXt2YXIgRT1nLmNoYXJBdChBKTtpZigiLyI9PT1FKXJldHVybiByKEEsITEsdC5nZXRUb2tlbkVuZCgpKTtpZighWWkoRSkpYnJlYWs7QS0tfWJyZWFrO2Nhc2UgTS5TdGFydFRhZ0Nsb3NlOmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSYmXylyZXR1cm4gZT10LmdldFRva2VuRW5kKCkseD1fLGQmJmQuaGlkZUF1dG9Db21wbGV0ZVByb3Bvc2Fsc3x8eWkoeCl8fChlPXAucG9zaXRpb25BdChlKSxmLml0ZW1zLnB1c2goe2xhYmVsOiI8LyIreCsiPiIsa2luZDpTci5Qcm9wZXJ0eSxmaWx0ZXJUZXh0OiI8LyIreCsiPiIsdGV4dEVkaXQ6ZXIuaW5zZXJ0KGUsIiQwPC8iK3grIj4iKSxpbnNlcnRUZXh0Rm9ybWF0OnhyLlNuaXBwZXR9KSksZjticmVhaztjYXNlIE0uQ29udGVudDppZihiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIGwoKTticmVhaztkZWZhdWx0OmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gZn1MPXQuc2NhbigpfXJldHVybiBmfSxYaS5wcm90b3R5cGUuZG9RdW90ZUNvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWUub2Zmc2V0QXQodCk7aWYoaTw9MClyZXR1cm4gbnVsbDtyPW51bGwhPT0odD1udWxsPT1yP3ZvaWQgMDpyLmF0dHJpYnV0ZURlZmF1bHRWYWx1ZSkmJnZvaWQgMCE9PXQ/dDoiZG91YmxlcXVvdGVzIjtpZigiZW1wdHkiPT09cilyZXR1cm4gbnVsbDtpZigiPSIhPT1lLmdldFRleHQoKS5jaGFyQXQoaS0xKSlyZXR1cm4gbnVsbDt2YXIgYT0iZG91YmxlcXVvdGVzIj09PXI/JyIkMSInOiInJDEnIix0PW4uZmluZE5vZGVCZWZvcmUoaSk7aWYodCYmdC5hdHRyaWJ1dGVzJiZ0LnN0YXJ0PGkmJighdC5lbmRUYWdTdGFydHx8dC5lbmRUYWdTdGFydD5pKSlmb3IodmFyIG89X2koZS5nZXRUZXh0KCksdC5zdGFydCkscz1vLnNjYW4oKTtzIT09TS5FT1MmJm8uZ2V0VG9rZW5FbmQoKTw9aTspe2lmKHM9PT1NLkF0dHJpYnV0ZU5hbWUmJm8uZ2V0VG9rZW5FbmQoKT09PWktMSlyZXR1cm4ocz1vLnNjYW4oKSkhPT1NLkRlbGltaXRlckFzc2lnbnx8KHM9by5zY2FuKCkpPT09TS5Vbmtub3dufHxzPT09TS5BdHRyaWJ1dGVWYWx1ZT9udWxsOmE7cz1vLnNjYW4oKX1yZXR1cm4gbnVsbH0sWGkucHJvdG90eXBlLmRvVGFnQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUub2Zmc2V0QXQodCk7aWYocjw9MClyZXR1cm4gbnVsbDt0PWUuZ2V0VGV4dCgpLmNoYXJBdChyLTEpO2lmKCI+Ij09PXQpe2lmKChhPW4uZmluZE5vZGVCZWZvcmUocikpJiZhLnRhZyYmIXlpKGEudGFnKSYmYS5zdGFydDxyJiYoIWEuZW5kVGFnU3RhcnR8fGEuZW5kVGFnU3RhcnQ+cikpZm9yKHZhciBpPShvPV9pKGUuZ2V0VGV4dCgpLGEuc3RhcnQpKS5zY2FuKCk7aSE9PU0uRU9TJiZvLmdldFRva2VuRW5kKCk8PXI7KXtpZihpPT09TS5TdGFydFRhZ0Nsb3NlJiZvLmdldFRva2VuRW5kKCk9PT1yKXJldHVybiIkMDwvIithLnRhZysiPiI7aT1vLnNjYW4oKX19ZWxzZSBpZigiLyI9PT10KXtmb3IodmFyIGE9bi5maW5kTm9kZUJlZm9yZShyKTthJiZhLmNsb3NlZCYmIShhLmVuZFRhZ1N0YXJ0JiZhLmVuZFRhZ1N0YXJ0PnIpOylhPWEucGFyZW50O2lmKGEmJmEudGFnKWZvcih2YXIgbyxpPShvPV9pKGUuZ2V0VGV4dCgpLGEuc3RhcnQpKS5zY2FuKCk7aSE9PU0uRU9TJiZvLmdldFRva2VuRW5kKCk8PXI7KXtpZihpPT09TS5FbmRUYWdPcGVuJiZvLmdldFRva2VuRW5kKCk9PT1yKXJldHVybiBhLnRhZysiPiI7aT1vLnNjYW4oKX19cmV0dXJuIG51bGx9LFhpLnByb3RvdHlwZS5jb252ZXJ0Q29tcGxldGlvbkxpc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpfHxlLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kb2N1bWVudGF0aW9uJiYic3RyaW5nIiE9dHlwZW9mIGUuZG9jdW1lbnRhdGlvbiYmKGUuZG9jdW1lbnRhdGlvbj17a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLmRvY3VtZW50YXRpb24udmFsdWV9KX0pLGV9LFhpLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7aWYoIXppKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCF6aSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciBlPW51bGw9PT0oZT1udWxsPT09KGU9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbXBsZXRpb24pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbXBsZXRpb25JdGVtKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KGUpJiYtMSE9PWUuaW5kZXhPZih2ci5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sWGkpO2Z1bmN0aW9uIFhpKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXQsdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVtdfWZ1bmN0aW9uIFlpKGUpe3JldHVybi9eXHMqJC8udGVzdChlKX1mdW5jdGlvbiBRaShlLHQsbixyKXtmb3IodmFyIGk9X2koZSx0LG4pLGE9aS5zY2FuKCk7YT09PU0uV2hpdGVzcGFjZTspYT1pLnNjYW4oKTtyZXR1cm4gYT09PXJ9dmFyIFppLGVhLHRhPWZyLG5hPShyYS5wcm90b3R5cGUuZG9Ib3Zlcj1mdW5jdGlvbihhLGksZSxzKXt2YXIgaD10aGlzLmNvbnZlcnRDb250ZW50cy5iaW5kKHRoaXMpLGw9dGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCksYz1hLm9mZnNldEF0KGkpLGU9ZS5maW5kTm9kZUF0KGMpLG89YS5nZXRUZXh0KCk7aWYoIWV8fCFlLnRhZylyZXR1cm4gbnVsbDt2YXIgZD10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNBcHBsaWNhYmxlKGEubGFuZ3VhZ2VJZCl9KTtmdW5jdGlvbiByKG4scil7Zm9yKHZhciBlPTAsdD1kO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKGUucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UubmFtZS50b0xvd2VyQ2FzZSgpPT09bi50b0xvd2VyQ2FzZSgpJiYoZT1XaShlLHMsbCksdD17Y29udGVudHM6ZT1lfHx7a2luZDpsPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9LHJhbmdlOnJ9KX0pLHQpcmV0dXJuIHQuY29udGVudHM9aCh0LmNvbnRlbnRzKSx7dmFsdWU6dH19KHRbZV0pO2lmKCJvYmplY3QiPT10eXBlb2YgaSlyZXR1cm4gaS52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KG4scixpKXtmb3IodmFyIGU9MCx0PWQ7ZTx0Lmxlbmd0aDtlKyspe3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYoZS5wcm92aWRlQXR0cmlidXRlcyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3I9PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24mJihlPVdpKGUscyxsKSx0PWU/e2NvbnRlbnRzOmUscmFuZ2U6aX06bnVsbCl9KSx0KXJldHVybiB0LmNvbnRlbnRzPWgodC5jb250ZW50cykse3ZhbHVlOnR9fSh0W2VdKTtpZigib2JqZWN0Ij09dHlwZW9mIGEpcmV0dXJuIGEudmFsdWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcChuLHIsaSxhKXtmb3IodmFyIGU9MCx0PWQ7ZTx0Lmxlbmd0aDtlKyspe3ZhciBvPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYoZS5wcm92aWRlVmFsdWVzKG4scikuZm9yRWFjaChmdW5jdGlvbihlKXtpPT09ZS5uYW1lJiZlLmRlc2NyaXB0aW9uJiYoZT1XaShlLHMsbCksdD1lP3tjb250ZW50czplLHJhbmdlOmF9Om51bGwpfSksdClyZXR1cm4gdC5jb250ZW50cz1oKHQuY29udGVudHMpLHt2YWx1ZTp0fX0odFtlXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBvKXJldHVybiBvLnZhbHVlfXJldHVybiBudWxsfWZ1bmN0aW9uIG0oZSx0KXt2YXIgbixyPWZ1bmN0aW9uKGUpe3ZhciB0PWMtMSxuPSImIjtmb3IoOzA8PXQmJlVpKGUsdCk7KXQtLTt0Kz0xO2Zvcig7VWkoZSx0KTspbis9ZVt0XSx0Kz0xO3JldHVybiBuKz0iOyJ9KGUpO2ZvcihuIGluIENpKXt2YXIgaT1udWxsO2lmKHI9PT0iJiIrbil7dmFyIGE9Q2lbbl0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxvPSJVKyI7aWYoYS5sZW5ndGg8NClmb3IodmFyIHM9NC1hLmxlbmd0aCxsPTA7bDxzOylvKz0iMCIsbCs9MTtvKz1hO2E9dGEoImVudGl0eS5wcm9wb3NlIiwiQ2hhcmFjdGVyIGVudGl0eSByZXByZXNlbnRpbmcgJyIrQ2lbbl0rIicsIHVuaWNvZGUgZXF1aXZhbGVudCAnIitvKyInIiksaT1hP3tjb250ZW50czphLHJhbmdlOnR9Om51bGx9aWYoaSlyZXR1cm4gaS5jb250ZW50cz1oKGkuY29udGVudHMpLGl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdChlLHQpe2Zvcih2YXIgbj1faShhLmdldFRleHQoKSx0KSxyPW4uc2NhbigpO3IhPT1NLkVPUyYmKG4uZ2V0VG9rZW5FbmQoKTxjfHxuLmdldFRva2VuRW5kKCk9PT1jJiZyIT09ZSk7KXI9bi5zY2FuKCk7cmV0dXJuIHI9PT1lJiZjPD1uLmdldFRva2VuRW5kKCk/e3N0YXJ0OmEucG9zaXRpb25BdChuLmdldFRva2VuT2Zmc2V0KCkpLGVuZDphLnBvc2l0aW9uQXQobi5nZXRUb2tlbkVuZCgpKX06bnVsbH1pZihlLmVuZFRhZ1N0YXJ0JiZjPj1lLmVuZFRhZ1N0YXJ0KXJldHVybihuPXQoTS5FbmRUYWcsZS5lbmRUYWdTdGFydCkpP3IoZS50YWcsbik6bnVsbDt2YXIgbj10KE0uU3RhcnRUYWcsZS5zdGFydCk7aWYobilyZXR1cm4gcihlLnRhZyxuKTtuPXQoTS5BdHRyaWJ1dGVOYW1lLGUuc3RhcnQpO2lmKG4pcmV0dXJuIHUoZj1lLnRhZyxhLmdldFRleHQobiksbik7bj1mdW5jdGlvbigpe2Zvcih2YXIgZT1jLTEsdD1pLmNoYXJhY3RlcjswPD1lJiZVaShvLGUpOyllLS0sdC0tO2Zvcih2YXIgbj1lKzEscj10O1VpKG8sbik7KW4rKyxyKys7cmV0dXJuIDA8PWUmJiImIj09PW9bZV0/IjsiPT09b1tuXT9Ybi5jcmVhdGUoSm4uY3JlYXRlKGkubGluZSx0KSxKbi5jcmVhdGUoaS5saW5lLHIrMSkpOlhuLmNyZWF0ZShKbi5jcmVhdGUoaS5saW5lLHQpLEpuLmNyZWF0ZShpLmxpbmUscikpOm51bGx9KCk7aWYobilyZXR1cm4gbShvLG4pO249dChNLkF0dHJpYnV0ZVZhbHVlLGUuc3RhcnQpO2lmKG4pe3ZhciBmPWUudGFnLGc9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGUucmVwbGFjZSgvWyciXS8sIiIpOyInIiE9PWVbMF0mJiciJyE9PWVbMF18fChlPWUuc2xpY2UoMSkpOyInIiE9PWVbZS5sZW5ndGgtMV0mJiciJyE9PWVbZS5sZW5ndGgtMV18fChlPWUuc2xpY2UoMCwtMSkpO3JldHVybiBlfShhLmdldFRleHQobikpLGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49X2koYS5nZXRUZXh0KCksZSkscj1uLnNjYW4oKSxpPXZvaWQgMDtyIT09TS5FT1MmJm4uZ2V0VG9rZW5FbmQoKTw9dDspKHI9bi5zY2FuKCkpPT09TS5BdHRyaWJ1dGVOYW1lJiYoaT1uLmdldFRva2VuVGV4dCgpKTtyZXR1cm4gaX0oZS5zdGFydCxhLm9mZnNldEF0KG4uc3RhcnQpKTtpZihlKXJldHVybiBwKGYsZSxnLG4pfXJldHVybiBudWxsfSxyYS5wcm90b3R5cGUuY29udmVydENvbnRlbnRzPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKCJraW5kImluIGUpcmV0dXJue2tpbmQ6InBsYWludGV4dCIsdmFsdWU6ZS52YWx1ZX07aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUudmFsdWU7ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6ZS52YWx1ZX0pfXJldHVybiBlfSxyYS5wcm90b3R5cGUuZG9lc1N1cHBvcnRNYXJrZG93bj1mdW5jdGlvbigpe2lmKCF6aSh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighemkodGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgZT1udWxsPT09KGU9bnVsbD09PShlPW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRleHREb2N1bWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuaG92ZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbnRlbnRGb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkoZSkmJi0xIT09ZS5pbmRleE9mKHZyLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxyYSk7ZnVuY3Rpb24gcmEoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dH1mdW5jdGlvbiBpYShlLHQpe3JldHVybiBlfVppPVssLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoZSl7dGhpcy5fX3BhcmVudD1lLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119ZnVuY3Rpb24gbihlLHQpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1lLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPWUuaW5kZW50X2NoYXIsZS5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KGUuaW5kZW50X3NpemUrMSkuam9pbihlLmluZGVudF9jaGFyKSksdD10fHwiIiwwPGUuaW5kZW50X2xldmVsJiYodD1uZXcgQXJyYXkoZS5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz10LHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gdChlLHQpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IG4oZSx0KSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWUuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWUud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1lLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgaSh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9aS5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgaSh0aGlzLl9fcGFyZW50KTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZX0saS5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZTwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2VdOnRoaXMuX19pdGVtc1tlXX0saS5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9faXRlbXMubGVuZ3RoLTE7MDw9dDt0LS0paWYodGhpcy5fX2l0ZW1zW3RdLm1hdGNoKGUpKXJldHVybiEwO3JldHVybiExfSxpLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1lfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9dHx8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSxpLnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSxpLnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuISF0aGlzLl9zaG91bGRfd3JhcCgpJiYodGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKSwoZT10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZSkuc2V0X2luZGVudCh0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfYWxpZ25tZW50X2NvdW50KSxlLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKHRoaXMuX193cmFwX3BvaW50X2luZGV4KSx0aGlzLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKDAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLGUuX19jaGFyYWN0ZXJfY291bnQrPXRoaXMuX19jaGFyYWN0ZXJfY291bnQtdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LCIgIj09PWUuX19pdGVtc1swXSYmKGUuX19pdGVtcy5zcGxpY2UoMCwxKSwtLWUuX19jaGFyYWN0ZXJfY291bnQpLCEwKX0saS5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX19pdGVtcy5sZW5ndGh9LGkucHJvdG90eXBlLmxhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP251bGw6dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgtMV19LGkucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7dGhpcy5fX2l0ZW1zLnB1c2goZSk7dmFyIHQ9ZS5sYXN0SW5kZXhPZigiXG4iKTstMSE9PXQ/dGhpcy5fX2NoYXJhY3Rlcl9jb3VudD1lLmxlbmd0aC10OnRoaXMuX19jaGFyYWN0ZXJfY291bnQrPWUubGVuZ3RofSxpLnByb3RvdHlwZS5wb3A9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fChlPXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT1lLmxlbmd0aCksZX0saS5wcm90b3R5cGUuX3JlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oKXswPHRoaXMuX19pbmRlbnRfY291bnQmJigtLXRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LGkucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXswPHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCYmLS10aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnR9LGkucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoOyIgIj09PXRoaXMubGFzdCgpOyl0aGlzLl9faXRlbXMucG9wKCksLS10aGlzLl9fY2hhcmFjdGVyX2NvdW50fSxpLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIG49KG49ZTwwPzA6bikrZSp0aGlzLl9faW5kZW50X3NpemUrKHQ9dHx8MCl9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fX2NhY2hlLmxlbmd0aCxuPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmdD49dGhpcy5fX2luZGVudF9zaXplJiYodC09KGU9TWF0aC5mbG9vcih0L3RoaXMuX19pbmRlbnRfc2l6ZSkpKnRoaXMuX19pbmRlbnRfc2l6ZSxuPW5ldyBBcnJheShlKzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSx0JiYobis9bmV3IEFycmF5KHQrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChuKX0sdC5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0sdC5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LHQucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcoZSx0KX0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGUsdCl9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGUpe3JldHVybiEodGhpcy5pc19lbXB0eSgpfHwhZSYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSkmJih0aGlzLnJhd3x8dGhpcy5fX2FkZF9vdXRwdXRsaW5lKCksITApfSx0LnByb3RvdHlwZS5nZXRfY29kZT1mdW5jdGlvbihlKXt0aGlzLnRyaW0oITApO3ZhciB0PXRoaXMuY3VycmVudF9saW5lLnBvcCgpLHQ9KHQmJigiXG4iPT09dFt0Lmxlbmd0aC0xXSYmKHQ9dC5yZXBsYWNlKC9cbiskL2csIiIpKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKHQpKSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lJiZ0aGlzLl9fYWRkX291dHB1dGxpbmUoKSx0aGlzLl9fbGluZXMuam9pbigiXG4iKSk7cmV0dXJuIHQ9IlxuIiE9PWU/dC5yZXBsYWNlKC9bXG5dL2csZSk6dH0sdC5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sdC5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm5leHRfbGluZS5zZXRfaW5kZW50KGU9ZXx8MCx0PXR8fDApLDE8dGhpcy5fX2xpbmVzLmxlbmd0aD8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sdC5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sdC5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sdC5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSx0LnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiYxPHRoaXMuX19saW5lcy5sZW5ndGgmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPTE8dGhpcy5fX2xpbmVzLmxlbmd0aD90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fX2xpbmVzLmxlbmd0aC0yOzA8PW47KXt2YXIgcj10aGlzLl9fbGluZXNbbl07aWYoci5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1yLml0ZW0oMCkuaW5kZXhPZihlKSYmci5pdGVtKC0xKSE9PXQpe3RoaXMuX19saW5lcy5zcGxpY2UobisxLDAsbmV3IGkodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31uLS19fSxlLmV4cG9ydHMuT3V0cHV0PXR9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4scj17fTtmb3IobiBpbiBlPWkoZSkpbiE9PXQmJihyW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlyW25dPWVbdF1bbl07cmV0dXJuIHJ9ZnVuY3Rpb24gaShlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD10fHxbXTtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/bnVsbCE9PWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbmNhdCYmKHQ9ZS5jb25jYXQoKSk6InN0cmluZyI9PXR5cGVvZiBlJiYodD1lLnNwbGl0KC9bXmEtekEtWjAtOV9cL1wtXSsvKSksdH0sdC5wcm90b3R5cGUuX2dldF9ib29sZWFuPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1lPyEhdDohIWV9LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXR8fCIiO3JldHVybiB0PSJzdHJpbmciPT10eXBlb2YgZT9lLnJlcGxhY2UoL1xcci8sIlxyIikucmVwbGFjZSgvXFxuLywiXG4iKS5yZXBsYWNlKC9cXHQvLCJcdCIpOnR9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApLGU9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIGU9aXNOYU4oZSk/dDplfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbj1mdW5jdGlvbihlLHQsbil7bj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gblswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7bj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiBufSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4tMT09PXQuaW5kZXhPZihlKX0pfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPWksZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHI9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gdChlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpezA8dGhpcy5fX3Bvc2l0aW9uJiYtLXRoaXMuX19wb3NpdGlvbn0sdC5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSx0LnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCx0PTA8PShlKz10aGlzLl9fcG9zaXRpb24pJiZlPHRoaXMuX19pbnB1dF9sZW5ndGg/dGhpcy5fX2lucHV0LmNoYXJBdChlKTp0fSx0LnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsdCl7ZS5sYXN0SW5kZXg9dDt2YXIgbj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hbnx8ciYmZS5zdGlja3l8fG4uaW5kZXghPT10JiYobj1udWxsKSxufSx0LnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwwPD0odCs9dGhpcy5fX3Bvc2l0aW9uKSYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSx0LnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3Q9dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT10JiZlLnRlc3QodCl9LHQucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe2U9dGhpcy5fX21hdGNoKGUsdGhpcy5fX3Bvc2l0aW9uKTtyZXR1cm4gZT90aGlzLl9fcG9zaXRpb24rPWVbMF0ubGVuZ3RoOmU9bnVsbCxlfSx0LnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPSIiO3JldHVybiBlJiYocj10aGlzLm1hdGNoKGUpKSYmKGkrPXJbMF0pLCF0fHwhciYmZXx8KGkrPXRoaXMucmVhZFVudGlsKHQsbikpLGl9LHQucHJvdG90eXBlLnJlYWRVbnRpbD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19wb3NpdGlvbixlPShlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb24sZS5leGVjKHRoaXMuX19pbnB1dCkpO3JldHVybiBlPyhuPWUuaW5kZXgsdCYmKG4rPWVbMF0ubGVuZ3RoKSk6bj10aGlzLl9faW5wdXRfbGVuZ3RoLHQ9dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sbiksdGhpcy5fX3Bvc2l0aW9uPW4sdH0sdC5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSx0LnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCx0PXQmJnI/InkiOiJnIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9uPW5ldyBSZWdFeHAoZSx0KTplJiYobj1uZXcgUmVnRXhwKGUuc291cmNlLHQpKSxufSx0LnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSx0LnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sZT10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxlfSx0LnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj10fSwsLCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2U9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zb3VyY2UsdD0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZSt0LCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGUrL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK3QsImciKX10LnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihlKXtpZighZS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9e30sbj0odGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE2KS5CZWF1dGlmaWVyLGk9bigxNykuT3B0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHIoZSx0KS5iZWF1dGlmeSgpfSxlLmV4cG9ydHMuZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGl9fSxmdW5jdGlvbihlLGksdCl7dmFyIG49dCgxNykuT3B0aW9ucyxtPXQoMikuT3V0cHV0LGY9dCg4KS5JbnB1dFNjYW5uZXIsZz1uZXcodCgxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLyksYj0vXHJcbnxbXHJcbl0vLF89L1xyXG58W1xyXG5dL2csdz0vXHMvLHY9Lyg/OlxzfFxuKSsvZyx5PS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csVD0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHIoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyBuKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXIucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0sci5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO3cudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0sci5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7LS1lfWVsc2UgaWYoIjsiPT09bnx8In0iPT09bilyZXR1cm4hMTt0Kyssbj10aGlzLl9pbnB1dC5wZWVrKHQpfXJldHVybiExfSxyLnByb3RvdHlwZS5wcmludF9zdHJpbmc9ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpLHRoaXMuX291dHB1dC5ub25fYnJlYWtpbmdfc3BhY2U9ITAsdGhpcy5fb3V0cHV0LmFkZF90b2tlbihlKX0sci5wcm90b3R5cGUucHJlc2VydmVTaW5nbGVTcGFjZT1mdW5jdGlvbihlKXtlJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCl9LHIucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsKyt9LHIucHJvdG90eXBlLm91dGRlbnQ9ZnVuY3Rpb24oKXswPHRoaXMuX2luZGVudExldmVsJiZ0aGlzLl9pbmRlbnRMZXZlbC0tfSxyLnByb3RvdHlwZS5iZWF1dGlmeT1mdW5jdGlvbigpe2lmKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpcmV0dXJuIHRoaXMuX3NvdXJjZV90ZXh0O2Zvcih2YXIgZSxjLHQsbixyPXRoaXMuX3NvdXJjZV90ZXh0LGk9dGhpcy5fb3B0aW9ucy5lb2wsZD0oImF1dG8iPT09aSYmKGk9IlxuIixyJiZiLnRlc3Qocnx8IiIpJiYoaT1yLm1hdGNoKGIpWzBdKSksKHI9ci5yZXBsYWNlKF8sIlxuIikpLm1hdGNoKC9eW1x0IF0qLylbMF0pLGE9KHRoaXMuX291dHB1dD1uZXcgbSh0aGlzLl9vcHRpb25zLGQpLHRoaXMuX2lucHV0PW5ldyBmKHIpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsLDApLG89ITEscz0hMSxsPSExLGg9ITEsdT0hMSxwPXRoaXMuX2NoO2U9IiIhPT10aGlzLl9pbnB1dC5yZWFkKHYpLGM9cCx0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksIlxcIj09PXRoaXMuX2NoJiZ0aGlzLl9pbnB1dC5oYXNOZXh0KCkmJih0aGlzLl9jaCs9dGhpcy5faW5wdXQubmV4dCgpKSxwPXRoaXMuX2NoLHRoaXMuX2NoOykiLyI9PT10aGlzLl9jaCYmIioiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5faW5wdXQuYmFjaygpLHQ9dGhpcy5faW5wdXQucmVhZCh5KSwobj1nLmdldF9kaXJlY3RpdmVzKHQpKSYmInN0YXJ0Ij09PW4uaWdub3JlJiYodCs9Zy5yZWFkSWdub3JlZCh0aGlzLl9pbnB1dCkpLHRoaXMucHJpbnRfc3RyaW5nKHQpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuX2lucHV0LmJhY2soKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9pbnB1dC5yZWFkKFQpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApKToiQCI9PT10aGlzLl9jaD8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGUpLCJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoKT90aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLChuPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZykpLm1hdGNoKC9bIDpdJC8pJiYobj10aGlzLmVhdFN0cmluZygiOiAiKS5yZXBsYWNlKC9ccyQvLCIiKSx0aGlzLnByaW50X3N0cmluZyhuKSx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiZXh0ZW5kIj09PShuPW4ucmVwbGFjZSgvXHMkLywiIikpP2g9ITA6ImltcG9ydCI9PT1uJiYodT0hMCksbiBpbiB0aGlzLk5FU1RFRF9BVF9SVUxFPyh0aGlzLl9uZXN0ZWRMZXZlbCs9MSxuIGluIHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRSYmKGw9ITApKTpvfHwwIT09YXx8LTE9PT1uLmluZGV4T2YoIjoiKXx8KHM9ITAsdGhpcy5pbmRlbnQoKSkpKToiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhzJiYocz0hMSx0aGlzLm91dGRlbnQoKSksbz1sPyhsPSExLHRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6dGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsLTEsdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJm8mJnRoaXMuX291dHB1dC5wcmV2aW91c19saW5lJiYieyIhPT10aGlzLl9vdXRwdXQucHJldmlvdXNfbGluZS5pdGVtKC0xKSYmdGhpcy5fb3V0cHV0LmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlKCIvIiwiLCIpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsImV4cGFuZCI9PT10aGlzLl9vcHRpb25zLmJyYWNlX3N0eWxlPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuaW5kZW50KCksdGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpKToodGhpcy5pbmRlbnQoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToifSI9PT10aGlzLl9jaD8odGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLCJ7Ij09PWMmJnRoaXMuX291dHB1dC50cmltKCEwKSxoPXU9ITEscyYmKHRoaXMub3V0ZGVudCgpLHM9ITEpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSxvPSExLHRoaXMuX25lc3RlZExldmVsJiZ0aGlzLl9uZXN0ZWRMZXZlbC0tLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX29wdGlvbnMubmV3bGluZV9iZXR3ZWVuX3J1bGVzJiYhdGhpcy5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCkmJiJ9IiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpOiI6Ij09PXRoaXMuX2NoPyFvJiYhbHx8dGhpcy5faW5wdXQubG9va0JhY2soIiYiKXx8dGhpcy5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzKCl8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIoIil8fGh8fDAhPT1hPyh0aGlzLl9pbnB1dC5sb29rQmFjaygiICIpJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksIjoiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5wcmludF9zdHJpbmcoIjo6IikpOnRoaXMucHJpbnRfc3RyaW5nKCI6IikpOih0aGlzLnByaW50X3N0cmluZygiOiIpLHN8fCh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPXM9ITAsdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLmluZGVudCgpKSk6JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcodGhpcy5fY2gpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApKToiOyI9PT10aGlzLl9jaD8wPT09YT8ocyYmKHRoaXMub3V0ZGVudCgpLHM9ITEpLHU9aD0hMSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwiLyIhPT10aGlzLl9pbnB1dC5wZWVrKCkmJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOiIoIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0Lmxvb2tCYWNrKCJ1cmwiKT8odGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSgpLGErKyx0aGlzLmluZGVudCgpLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiKSI9PT10aGlzLl9jaHx8JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0LmJhY2soKTp0aGlzLl9jaCYmKHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCIpIikpLGEmJihhLS0sdGhpcy5vdXRkZW50KCkpKSk6KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksYSsrLHRoaXMuaW5kZW50KCkpOiIpIj09PXRoaXMuX2NoPyhhJiYoYS0tLHRoaXMub3V0ZGVudCgpKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOiIsIj09PXRoaXMuX2NoPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwhdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZXx8c3x8MCE9PWF8fHV8fGg/dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMDp0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiI+IiE9PXRoaXMuX2NoJiYiKyIhPT10aGlzLl9jaCYmIn4iIT09dGhpcy5fY2h8fHN8fDAhPT1hPyJdIj09PXRoaXMuX2NoP3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKToiWyI9PT10aGlzLl9jaD8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGUpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6Ij0iPT09dGhpcy5fY2g/KHRoaXMuZWF0V2hpdGVzcGFjZSgpLHRoaXMucHJpbnRfc3RyaW5nKCI9Iiksdy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk6KCIhIiE9PXRoaXMuX2NofHx0aGlzLl9pbnB1dC5sb29rQmFjaygiXFwiKT90aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSk6dGhpcy5wcmludF9zdHJpbmcoIiAiKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOnRoaXMuX29wdGlvbnMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5fY2gmJncudGVzdCh0aGlzLl9jaCkmJih0aGlzLl9jaD0iIikpO3JldHVybiB0aGlzLl9vdXRwdXQuZ2V0X2NvZGUoaSl9LGUuZXhwb3J0cy5CZWF1dGlmaWVyPXJ9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJjc3MiKSx0aGlzLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJzZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZSIsITApLHRoaXMubmV3bGluZV9iZXR3ZWVuX3J1bGVzPXRoaXMuX2dldF9ib29sZWFuKCJuZXdsaW5lX2JldHdlZW5fcnVsZXMiLCEwKTt2YXIgZT10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX3NlbGVjdG9yX3NlcGFyYXRvciIpLHQ9KHRoaXMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I9dGhpcy5fZ2V0X2Jvb2xlYW4oInNwYWNlX2Fyb3VuZF9jb21iaW5hdG9yIil8fGUsdGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJicmFjZV9zdHlsZSIsWyJjb2xsYXBzZSIsImV4cGFuZCIsImVuZC1leHBhbmQiLCJub25lIiwicHJlc2VydmUtaW5saW5lIl0pKTt0aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspImV4cGFuZCIhPT10W25dP3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjp0aGlzLmJyYWNlX3N0eWxlPXRbbl19aS5wcm90b3R5cGU9bmV3IHIsZS5leHBvcnRzLk9wdGlvbnM9aX1dLGVhPXt9O3ZhciBhYSxvYSxzYSxsYSxoYSxjYSxkYT1mdW5jdGlvbiBlKHQpe3ZhciBuPWVhW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0cztuPWVhW3RdPXtleHBvcnRzOnt9fTtyZXR1cm4gWmlbdF0obixuLmV4cG9ydHMsZSksbi5leHBvcnRzfSgxNSk7ZnVuY3Rpb24gdWEoZSx0LG4pe3ZhciByPWUuZ2V0VGV4dCgpLGM9ITAsaT0wLGQ9bi50YWJTaXplfHw0O2lmKHQpe2Zvcih2YXIgYT1lLm9mZnNldEF0KHQuc3RhcnQpLG89YTswPG8mJmdhKHIsby0xKTspby0tOzA9PT1vfHxmYShyLG8tMSk/YT1vOm88YSYmKGE9bysxKTtmb3IodmFyIHM9ZS5vZmZzZXRBdCh0LmVuZCksbD1zO2w8ci5sZW5ndGgmJmdhKHIsbCk7KWwrKztsIT09ci5sZW5ndGgmJiFmYShyLGwpfHwocz1sKSx0PVhuLmNyZWF0ZShlLnBvc2l0aW9uQXQoYSksZS5wb3NpdGlvbkF0KHMpKTt2YXIgaD1yLnN1YnN0cmluZygwLGEpO2lmKG5ldyBSZWdFeHAoLy4qWzxdW14+XSokLykudGVzdChoKSlyZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpyPXIuc3Vic3RyaW5nKGEscyl9XTtjPXM9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKGEscyksMCE9PWEmJihoPWUub2Zmc2V0QXQoSm4uY3JlYXRlKHQuc3RhcnQubGluZSwwKSksaT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dCxpPTAsYT1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocik7aWYoIiAiPT09bylpKys7ZWxzZXtpZigiXHQiIT09bylicmVhaztpKz1hfXIrK31yZXR1cm4gTWF0aC5mbG9vcihpL2EpfShlLmdldFRleHQoKSxoLG4pKX1lbHNlIHQ9WG4uY3JlYXRlKEpuLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3M9e2luZGVudF9zaXplOmQsaW5kZW50X2NoYXI6bi5pbnNlcnRTcGFjZXM/IiAiOiJcdCIsaW5kZW50X2VtcHR5X2xpbmVzOnBhKG4sImluZGVudEVtcHR5TGluZXMiLCExKSx3cmFwX2xpbmVfbGVuZ3RoOnBhKG4sIndyYXBMaW5lTGVuZ3RoIiwxMjApLHVuZm9ybWF0dGVkOm1hKG4sInVuZm9ybWF0dGVkIix2b2lkIDApLGNvbnRlbnRfdW5mb3JtYXR0ZWQ6bWEobiwiY29udGVudFVuZm9ybWF0dGVkIix2b2lkIDApLGluZGVudF9pbm5lcl9odG1sOnBhKG4sImluZGVudElubmVySHRtbCIsITEpLHByZXNlcnZlX25ld2xpbmVzOnBhKG4sInByZXNlcnZlTmV3TGluZXMiLCEwKSxtYXhfcHJlc2VydmVfbmV3bGluZXM6cGEobiwibWF4UHJlc2VydmVOZXdMaW5lcyIsMzI3ODYpLGluZGVudF9oYW5kbGViYXJzOnBhKG4sImluZGVudEhhbmRsZWJhcnMiLCExKSxlbmRfd2l0aF9uZXdsaW5lOmMmJnBhKG4sImVuZFdpdGhOZXdsaW5lIiwhMSksZXh0cmFfbGluZXJzOm1hKG4sImV4dHJhTGluZXJzIix2b2lkIDApLHdyYXBfYXR0cmlidXRlczpwYShuLCJ3cmFwQXR0cmlidXRlcyIsImF1dG8iKSx3cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU6cGEobiwid3JhcEF0dHJpYnV0ZXNJbmRlbnRTaXplIix2b2lkIDApLGVvbDoiXG4iLGluZGVudF9zY3JpcHRzOnBhKG4sImluZGVudFNjcmlwdHMiLCJub3JtYWwiKSx0ZW1wbGF0aW5nOiEwIT09cGEobiwidGVtcGxhdGluZyIsImFsbCIpP1sibm9uZSJdOlsiYXV0byJdLHVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyOnBhKG4sInVuZm9ybWF0dGVkQ29udGVudERlbGltaXRlciIsIiIpfSxhPXIucmVwbGFjZSgvXlxzKy8sIiIpLGg9YWEoYSxzLGlhLGRhKTtyZXR1cm4gMDxpJiYoZT1uLmluc2VydFNwYWNlcz9MaSgiICIsZCppKTpMaSgiXHQiLGkpLGg9aC5zcGxpdCgiXG4iKS5qb2luKCJcbiIrZSksMD09PXQuc3RhcnQuY2hhcmFjdGVyJiYoaD1lK2gpKSxbe3JhbmdlOnQsbmV3VGV4dDpofV19ZnVuY3Rpb24gcGEoZSx0LG4pe2lmKGUmJmUuaGFzT3duUHJvcGVydHkodCkpe2U9ZVt0XTtpZihudWxsIT09ZSlyZXR1cm4gZX1yZXR1cm4gbn1mdW5jdGlvbiBtYShlLHQsbil7ZT1wYShlLHQsbnVsbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPzA8ZS5sZW5ndGg/ZS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCkudG9Mb3dlckNhc2UoKX0pOltdOm59ZnVuY3Rpb24gZmEoZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBnYShlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9ZnVuY3Rpb24gYmEoZSl7aWYoY2FbZV0pcmV0dXJuIGNhW2VdLmV4cG9ydHM7dmFyIHQ9Y2FbZV09e2V4cG9ydHM6e319O3JldHVybiBoYVtlXSh0LHQuZXhwb3J0cyxiYSksdC5leHBvcnRzfW9hPVssLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoZSl7dGhpcy5fX3BhcmVudD1lLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119ZnVuY3Rpb24gbihlLHQpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1lLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPWUuaW5kZW50X2NoYXIsZS5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KGUuaW5kZW50X3NpemUrMSkuam9pbihlLmluZGVudF9jaGFyKSksdD10fHwiIiwwPGUuaW5kZW50X2xldmVsJiYodD1uZXcgQXJyYXkoZS5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz10LHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gdChlLHQpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IG4oZSx0KSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWUuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWUud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1lLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgaSh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9aS5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgaSh0aGlzLl9fcGFyZW50KTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZX0saS5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZTwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2VdOnRoaXMuX19pdGVtc1tlXX0saS5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9faXRlbXMubGVuZ3RoLTE7MDw9dDt0LS0paWYodGhpcy5fX2l0ZW1zW3RdLm1hdGNoKGUpKXJldHVybiEwO3JldHVybiExfSxpLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1lfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9dHx8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSxpLnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSxpLnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuISF0aGlzLl9zaG91bGRfd3JhcCgpJiYodGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKSwoZT10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZSkuc2V0X2luZGVudCh0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfYWxpZ25tZW50X2NvdW50KSxlLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKHRoaXMuX193cmFwX3BvaW50X2luZGV4KSx0aGlzLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKDAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLGUuX19jaGFyYWN0ZXJfY291bnQrPXRoaXMuX19jaGFyYWN0ZXJfY291bnQtdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LCIgIj09PWUuX19pdGVtc1swXSYmKGUuX19pdGVtcy5zcGxpY2UoMCwxKSwtLWUuX19jaGFyYWN0ZXJfY291bnQpLCEwKX0saS5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX19pdGVtcy5sZW5ndGh9LGkucHJvdG90eXBlLmxhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP251bGw6dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgtMV19LGkucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7dGhpcy5fX2l0ZW1zLnB1c2goZSk7dmFyIHQ9ZS5sYXN0SW5kZXhPZigiXG4iKTstMSE9PXQ/dGhpcy5fX2NoYXJhY3Rlcl9jb3VudD1lLmxlbmd0aC10OnRoaXMuX19jaGFyYWN0ZXJfY291bnQrPWUubGVuZ3RofSxpLnByb3RvdHlwZS5wb3A9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fChlPXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT1lLmxlbmd0aCksZX0saS5wcm90b3R5cGUuX3JlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oKXswPHRoaXMuX19pbmRlbnRfY291bnQmJigtLXRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LGkucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXswPHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCYmLS10aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnR9LGkucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoOyIgIj09PXRoaXMubGFzdCgpOyl0aGlzLl9faXRlbXMucG9wKCksLS10aGlzLl9fY2hhcmFjdGVyX2NvdW50fSxpLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIG49KG49ZTwwPzA6bikrZSp0aGlzLl9faW5kZW50X3NpemUrKHQ9dHx8MCl9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fX2NhY2hlLmxlbmd0aCxuPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmdD49dGhpcy5fX2luZGVudF9zaXplJiYodC09KGU9TWF0aC5mbG9vcih0L3RoaXMuX19pbmRlbnRfc2l6ZSkpKnRoaXMuX19pbmRlbnRfc2l6ZSxuPW5ldyBBcnJheShlKzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSx0JiYobis9bmV3IEFycmF5KHQrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChuKX0sdC5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0sdC5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LHQucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcoZSx0KX0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGUsdCl9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGUpe3JldHVybiEodGhpcy5pc19lbXB0eSgpfHwhZSYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSkmJih0aGlzLnJhd3x8dGhpcy5fX2FkZF9vdXRwdXRsaW5lKCksITApfSx0LnByb3RvdHlwZS5nZXRfY29kZT1mdW5jdGlvbihlKXt0aGlzLnRyaW0oITApO3ZhciB0PXRoaXMuY3VycmVudF9saW5lLnBvcCgpLHQ9KHQmJigiXG4iPT09dFt0Lmxlbmd0aC0xXSYmKHQ9dC5yZXBsYWNlKC9cbiskL2csIiIpKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKHQpKSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lJiZ0aGlzLl9fYWRkX291dHB1dGxpbmUoKSx0aGlzLl9fbGluZXMuam9pbigiXG4iKSk7cmV0dXJuIHQ9IlxuIiE9PWU/dC5yZXBsYWNlKC9bXG5dL2csZSk6dH0sdC5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sdC5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm5leHRfbGluZS5zZXRfaW5kZW50KGU9ZXx8MCx0PXR8fDApLDE8dGhpcy5fX2xpbmVzLmxlbmd0aD8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sdC5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sdC5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sdC5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSx0LnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiYxPHRoaXMuX19saW5lcy5sZW5ndGgmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPTE8dGhpcy5fX2xpbmVzLmxlbmd0aD90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sdC5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fX2xpbmVzLmxlbmd0aC0yOzA8PW47KXt2YXIgcj10aGlzLl9fbGluZXNbbl07aWYoci5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1yLml0ZW0oMCkuaW5kZXhPZihlKSYmci5pdGVtKC0xKSE9PXQpe3RoaXMuX19saW5lcy5zcGxpY2UobisxLDAsbmV3IGkodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31uLS19fSxlLmV4cG9ydHMuT3V0cHV0PXR9LGZ1bmN0aW9uKGUpe2UuZXhwb3J0cy5Ub2tlbj1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnR5cGU9ZSx0aGlzLnRleHQ9dCx0aGlzLmNvbW1lbnRzX2JlZm9yZT1udWxsLHRoaXMubmV3bGluZXM9bnx8MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlPXJ8fCIiLHRoaXMucGFyZW50PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsLHRoaXMub3BlbmVkPW51bGwsdGhpcy5jbG9zZWQ9bnVsbCx0aGlzLmRpcmVjdGl2ZXM9bnVsbH19LCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMucmF3X29wdGlvbnM9bihlLHQpLHRoaXMuZGlzYWJsZWQ9dGhpcy5fZ2V0X2Jvb2xlYW4oImRpc2FibGVkIiksdGhpcy5lb2w9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImVvbCIsImF1dG8iKSx0aGlzLmVuZF93aXRoX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oImVuZF93aXRoX25ld2xpbmUiKSx0aGlzLmluZGVudF9zaXplPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9zaXplIiw0KSx0aGlzLmluZGVudF9jaGFyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJpbmRlbnRfY2hhciIsIiAiKSx0aGlzLmluZGVudF9sZXZlbD10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfbGV2ZWwiKSx0aGlzLnByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJwcmVzZXJ2ZV9uZXdsaW5lcyIsITApLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9udW1iZXIoIm1heF9wcmVzZXJ2ZV9uZXdsaW5lcyIsMzI3ODYpLHRoaXMucHJlc2VydmVfbmV3bGluZXN8fCh0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz0wKSx0aGlzLmluZGVudF93aXRoX3RhYnM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF93aXRoX3RhYnMiLCJcdCI9PT10aGlzLmluZGVudF9jaGFyKSx0aGlzLmluZGVudF93aXRoX3RhYnMmJih0aGlzLmluZGVudF9jaGFyPSJcdCIsMT09PXRoaXMuaW5kZW50X3NpemUmJih0aGlzLmluZGVudF9zaXplPTQpKSx0aGlzLndyYXBfbGluZV9sZW5ndGg9dGhpcy5fZ2V0X251bWJlcigid3JhcF9saW5lX2xlbmd0aCIsdGhpcy5fZ2V0X251bWJlcigibWF4X2NoYXIiKSksdGhpcy5pbmRlbnRfZW1wdHlfbGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9lbXB0eV9saW5lcyIpLHRoaXMudGVtcGxhdGluZz10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoInRlbXBsYXRpbmciLFsiYXV0byIsIm5vbmUiLCJkamFuZ28iLCJlcmIiLCJoYW5kbGViYXJzIiwicGhwIiwic21hcnR5Il0sWyJhdXRvIl0pfWZ1bmN0aW9uIG4oZSx0KXt2YXIgbixyPXt9O2ZvcihuIGluIGU9aShlKSluIT09dCYmKHJbbl09ZVtuXSk7aWYodCYmZVt0XSlmb3IobiBpbiBlW3RdKXJbbl09ZVt0XVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBpKGUpe3ZhciB0LG49e307Zm9yKHQgaW4gZSluW3QucmVwbGFjZSgvLS9nLCJfIildPWVbdF07cmV0dXJuIG59dC5wcm90b3R5cGUuX2dldF9hcnJheT1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uY2F0JiYodD1lLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIGUmJih0PWUuc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSx0fSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PWU/ISF0OiEhZX0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9dHx8IiI7cmV0dXJuIHQ9InN0cmluZyI9PXR5cGVvZiBlP2UucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0Iik6dH0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD1wYXJzZUludCh0LDEwKSxpc05hTih0KSYmKHQ9MCksZT1wYXJzZUludChlLDEwKTtyZXR1cm4gZT1pc05hTihlKT90OmV9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXtuPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiBuWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTtuPXRoaXMuX2dldF9hcnJheShlLG4pO2lmKCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIG59LHQucHJvdG90eXBlLl9pc192YWxpZF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGgmJnQubGVuZ3RoJiYhZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9aSxlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgcj1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiB0KGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9dC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7MDx0aGlzLl9fcG9zaXRpb24mJi0tdGhpcy5fX3Bvc2l0aW9ufSx0LnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLHQ9MDw9KGUrPXRoaXMuX19wb3NpdGlvbikmJmU8dGhpcy5fX2lucHV0X2xlbmd0aD90aGlzLl9faW5wdXQuY2hhckF0KGUpOnR9LHQucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSx0KXtlLmxhc3RJbmRleD10O3ZhciBuPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFufHxyJiZlLnN0aWNreXx8bi5pbmRleCE9PXQmJihuPW51bGwpLG59LHQucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLDA8PSh0Kz10aGlzLl9fcG9zaXRpb24pJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LHQucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnBlZWsodCk7cmV0dXJuIGUubGFzdEluZGV4PTAsbnVsbCE9PXQmJmUudGVzdCh0KX0sdC5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oZSl7ZT10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiBlP3RoaXMuX19wb3NpdGlvbis9ZVswXS5sZW5ndGg6ZT1udWxsLGV9LHQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sdC5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX3Bvc2l0aW9uLGU9KGUubGFzdEluZGV4PXRoaXMuX19wb3NpdGlvbixlLmV4ZWModGhpcy5fX2lucHV0KSk7cmV0dXJuIGU/KG49ZS5pbmRleCx0JiYobis9ZVswXS5sZW5ndGgpKTpuPXRoaXMuX19pbnB1dF9sZW5ndGgsdD10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixuKSx0aGlzLl9fcG9zaXRpb249bix0fSx0LnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LHQucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHQ9dCYmcj8ieSI6ImciO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP249bmV3IFJlZ0V4cChlLHQpOmUmJihuPW5ldyBSZWdFeHAoZS5zb3VyY2UsdCkpLG59LHQucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LHQucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixlPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LGV9LHQucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPXR9LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7dGhpcy5faW5wdXQ9bmV3IGkoZSksdGhpcy5fb3B0aW9ucz10fHx7fSx0aGlzLl9fdG9rZW5zPW51bGwsdGhpcy5fcGF0dGVybnM9e30sdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZT1uZXcgcyh0aGlzLl9pbnB1dCl9dmFyIGk9big4KS5JbnB1dFNjYW5uZXIsYT1uKDMpLlRva2VuLG89bigxMCkuVG9rZW5TdHJlYW0scz1uKDExKS5XaGl0ZXNwYWNlUGF0dGVybixsPXtTVEFSVDoiVEtfU1RBUlQiLFJBVzoiVEtfUkFXIixFT0Y6IlRLX0VPRiJ9O3IucHJvdG90eXBlLnRva2VuaXplPWZ1bmN0aW9uKCl7dGhpcy5faW5wdXQucmVzdGFydCgpLHRoaXMuX190b2tlbnM9bmV3IG8sdGhpcy5fcmVzZXQoKTtmb3IodmFyIGUsdD1uZXcgYShsLlNUQVJULCIiKSxuPW51bGwscj1bXSxpPW5ldyBvO3QudHlwZSE9PWwuRU9GOyl7Zm9yKGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTt0aGlzLl9pc19jb21tZW50KGUpOylpLmFkZChlKSxlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7aS5pc0VtcHR5KCl8fChlLmNvbW1lbnRzX2JlZm9yZT1pLGk9bmV3IG8pLGUucGFyZW50PW4sdGhpcy5faXNfb3BlbmluZyhlKT8oci5wdXNoKG4pLG49ZSk6biYmdGhpcy5faXNfY2xvc2luZyhlLG4pJiYoKGUub3BlbmVkPW4pLmNsb3NlZD1lLG49ci5wb3AoKSxlLnBhcmVudD1uKSwoZS5wcmV2aW91cz10KS5uZXh0PWUsdGhpcy5fX3Rva2Vucy5hZGQoZSksdD1lfXJldHVybiB0aGlzLl9fdG9rZW5zfSxyLnByb3RvdHlwZS5faXNfZmlyc3RfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Rva2Vucy5pc0VtcHR5KCl9LHIucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe30sci5wcm90b3R5cGUuX2dldF9uZXh0X3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgbj10aGlzLl9pbnB1dC5yZWFkKC8uKy9nKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVfdG9rZW4obC5SQVcsbik6dGhpcy5fY3JlYXRlX3Rva2VuKGwuRU9GLCIiKX0sci5wcm90b3R5cGUuX2lzX2NvbW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LHIucHJvdG90eXBlLl9pc19vcGVuaW5nPWZ1bmN0aW9uKGUpe3JldHVybiExfSxyLnByb3RvdHlwZS5faXNfY2xvc2luZz1mdW5jdGlvbihlLHQpe3JldHVybiExfSxyLnByb3RvdHlwZS5fY3JlYXRlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBhKGUsdCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLm5ld2xpbmVfY291bnQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbil9LHIucHJvdG90eXBlLl9yZWFkV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLnJlYWQoKX0sZS5leHBvcnRzLlRva2VuaXplcj1yLGUuZXhwb3J0cy5UT0tFTj1sfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuX190b2tlbnM9W10sdGhpcy5fX3Rva2Vuc19sZW5ndGg9dGhpcy5fX3Rva2Vucy5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTAsdGhpcy5fX3BhcmVudF90b2tlbj1lfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX190b2tlbnNbdGhpcy5fX3Bvc2l0aW9uXSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLHQ9MDw9KGUrPXRoaXMuX19wb3NpdGlvbikmJmU8dGhpcy5fX3Rva2Vuc19sZW5ndGg/dGhpcy5fX3Rva2Vuc1tlXTp0fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5fX3BhcmVudF90b2tlbiYmKGUucGFyZW50PXRoaXMuX19wYXJlbnRfdG9rZW4pLHRoaXMuX190b2tlbnMucHVzaChlKSx0aGlzLl9fdG9rZW5zX2xlbmd0aCs9MX0sZS5leHBvcnRzLlRva2VuU3RyZWFtPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuO2Z1bmN0aW9uIGkoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHQ/dGhpcy5fbGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9saW5lX3JlZ2V4cCk6dGhpcy5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKCIiLCIiKSx0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIifShpLnByb3RvdHlwZT1uZXcgcikuX19zZXRfd2hpdGVzcGFjZV9wYXR0ZXJucz1mdW5jdGlvbihlLHQpe3RoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiWyIrKGUrPSJcXHQgIikrKHQrPSJcXG5cXHIiKSsiXSsiLCEwKSx0aGlzLl9uZXdsaW5lX3JlZ2V4cD10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJcXHJcXG58WyIrdCsiXSIpfSxpLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKCl7dGhpcy5uZXdsaW5lX2NvdW50PTAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbj0iIjt2YXIgZSx0PXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybik7cmV0dXJuIiAiPT09dD90aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIgIjp0JiYoZT10aGlzLl9fc3BsaXQodGhpcy5fbmV3bGluZV9yZWdleHAsdCksdGhpcy5uZXdsaW5lX2NvdW50PWUubGVuZ3RoLTEsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbj1lW3RoaXMubmV3bGluZV9jb3VudF0pLHR9LGkucHJvdG90eXBlLm1hdGNoaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fY3JlYXRlKCk7cmV0dXJuIG4uX19zZXRfd2hpdGVzcGFjZV9wYXR0ZXJucyhlLHQpLG4uX3VwZGF0ZSgpLG59LGkucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkodGhpcy5faW5wdXQsdGhpcyl9LGkucHJvdG90eXBlLl9fc3BsaXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sYXN0SW5kZXg9MCxyPVtdLGk9ZS5leGVjKHQpO2k7KXIucHVzaCh0LnN1YnN0cmluZyhuLGkuaW5kZXgpKSxuPWkuaW5kZXgraVswXS5sZW5ndGgsaT1lLmV4ZWModCk7cmV0dXJuIG48dC5sZW5ndGg/ci5wdXNoKHQuc3Vic3RyaW5nKG4sdC5sZW5ndGgpKTpyLnB1c2goIiIpLHJ9LGUuZXhwb3J0cy5XaGl0ZXNwYWNlUGF0dGVybj1pfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9zdGFydGluZ19wYXR0ZXJuPW51bGwsdGhpcy5fbWF0Y2hfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9hZnRlcj0hMSx0JiYodGhpcy5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3N0YXJ0aW5nX3BhdHRlcm4sITApLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9tYXRjaF9wYXR0ZXJuLCEwKSx0aGlzLl91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fdW50aWxfcGF0dGVybiksdGhpcy5fdW50aWxfYWZ0ZXI9dC5fdW50aWxfYWZ0ZXIpfXQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4pO3JldHVybiB0aGlzLl9zdGFydGluZ19wYXR0ZXJuJiYhZXx8KGUrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybix0aGlzLl91bnRpbF9wYXR0ZXJuLHRoaXMuX3VudGlsX2FmdGVyKSksZX0sdC5wcm90b3R5cGUucmVhZF9tYXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLl9tYXRjaF9wYXR0ZXJuKX0sdC5wcm90b3R5cGUudW50aWxfYWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSEwLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS51bnRpbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITEsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnN0YXJ0aW5nX3dpdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQodGhpcy5faW5wdXQsdGhpcyl9LHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt9LGUuZXhwb3J0cy5QYXR0ZXJuPXR9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtlPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHQ9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5zb3VyY2UsdGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybj1uZXcgUmVnRXhwKGUrLyBiZWF1dGlmeSggXHcrWzpdXHcrKSsgLy5zb3VyY2UrdCwiZyIpLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybj0vIChcdyspWzpdKFx3KykvZyx0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm49bmV3IFJlZ0V4cChlKy9cc2JlYXV0aWZ5XHNpZ25vcmU6ZW5kXHMvLnNvdXJjZSt0LCJnIil9dC5wcm90b3R5cGUuZ2V0X2RpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7aWYoIWUubWF0Y2godGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybikpcmV0dXJuIG51bGw7Zm9yKHZhciB0PXt9LG49KHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MCx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuLGk9e2RqYW5nbzohMSxlcmI6ITEsaGFuZGxlYmFyczohMSxwaHA6ITEsc21hcnR5OiExfTtmdW5jdGlvbiBhKGUsdCl7ci5jYWxsKHRoaXMsZSx0KSx0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj1udWxsLHRoaXMuX2Rpc2FibGVkPU9iamVjdC5hc3NpZ24oe30saSksdGhpcy5fZXhjbHVkZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0JiYodGhpcy5fX3RlbXBsYXRlX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9fdGVtcGxhdGVfcGF0dGVybiksdGhpcy5fZXhjbHVkZWQ9T2JqZWN0LmFzc2lnbih0aGlzLl9leGNsdWRlZCx0Ll9leGNsdWRlZCksdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih0aGlzLl9kaXNhYmxlZCx0Ll9kaXNhYmxlZCkpO3Q9bmV3IHIoZSk7dGhpcy5fX3BhdHRlcm5zPXtoYW5kbGViYXJzX2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyc191bmVzY2FwZWQ6dC5zdGFydGluZ193aXRoKC97e3svKS51bnRpbF9hZnRlcigvfX19LyksaGFuZGxlYmFyczp0LnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LykscGhwOnQuc3RhcnRpbmdfd2l0aCgvPFw/KD86Wz0gXXxwaHApLykudW50aWxfYWZ0ZXIoL1w/Pi8pLGVyYjp0LnN0YXJ0aW5nX3dpdGgoLzwlW14lXS8pLnVudGlsX2FmdGVyKC9bXiVdJT4vKSxkamFuZ286dC5zdGFydGluZ193aXRoKC97JS8pLnVudGlsX2FmdGVyKC8lfS8pLGRqYW5nb192YWx1ZTp0LnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksZGphbmdvX2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC97Iy8pLnVudGlsX2FmdGVyKC8jfS8pLHNtYXJ0eTp0LnN0YXJ0aW5nX3dpdGgoL3soPz1bXn17XHNcbl0pLykudW50aWxfYWZ0ZXIoL1teXHNcbl19Lyksc21hcnR5X2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC97XCovKS51bnRpbF9hZnRlcigvXCp9Lyksc21hcnR5X2xpdGVyYWw6dC5zdGFydGluZ193aXRoKC97bGl0ZXJhbH0vKS51bnRpbF9hZnRlcigve1wvbGl0ZXJhbH0vKX19KGEucHJvdG90eXBlPW5ldyByKS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhKHRoaXMuX2lucHV0LHRoaXMpfSxhLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fX3NldF90ZW1wbGF0ZWRfcGF0dGVybigpfSxhLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll9kaXNhYmxlZFtlXT0hMCx0Ll91cGRhdGUoKSx0fSxhLnByb3RvdHlwZS5yZWFkX29wdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9jcmVhdGUoKTtmb3IodCBpbiBpKW4uX2Rpc2FibGVkW3RdPS0xPT09ZS50ZW1wbGF0aW5nLmluZGV4T2YodCk7cmV0dXJuIG4uX3VwZGF0ZSgpLG59LGEucHJvdG90eXBlLmV4Y2x1ZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2V4Y2x1ZGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9IiIsZT10aGlzLl9tYXRjaF9wYXR0ZXJuP3RoaXMuX2lucHV0LnJlYWQodGhpcy5fc3RhcnRpbmdfcGF0dGVybik6dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0PXRoaXMuX3JlYWRfdGVtcGxhdGUoKTt0Oyl0aGlzLl9tYXRjaF9wYXR0ZXJuP3QrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybik6dCs9dGhpcy5faW5wdXQucmVhZFVudGlsKHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuKSxlKz10LHQ9dGhpcy5fcmVhZF90ZW1wbGF0ZSgpO3JldHVybiB0aGlzLl91bnRpbF9hZnRlciYmKGUrPXRoaXMuX2lucHV0LnJlYWRVbnRpbEFmdGVyKHRoaXMuX3VudGlsX3BhdHRlcm4pKSxlfSxhLnByb3RvdHlwZS5fX3NldF90ZW1wbGF0ZWRfcGF0dGVybj1mdW5jdGlvbigpe3ZhciBlPVtdO3RoaXMuX2Rpc2FibGVkLnBocHx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5waHAuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl9kaXNhYmxlZC5oYW5kbGViYXJzfHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnMuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl9kaXNhYmxlZC5lcmJ8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZXJiLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwoZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ28uX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nb192YWx1ZS5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSksdGhpcy5fZGlzYWJsZWQuc21hcnR5fHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLnNtYXJ0eS5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX3VudGlsX3BhdHRlcm4mJmUucHVzaCh0aGlzLl91bnRpbF9wYXR0ZXJuLnNvdXJjZSksdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiKD86IitlLmpvaW4oInwiKSsiKSIpfSxhLnByb3RvdHlwZS5fcmVhZF90ZW1wbGF0ZT1mdW5jdGlvbigpe3ZhciBlLHQ9IiIsbj10aGlzLl9pbnB1dC5wZWVrKCk7cmV0dXJuIjwiPT09bj8oZT10aGlzLl9pbnB1dC5wZWVrKDEpLHRoaXMuX2Rpc2FibGVkLnBocHx8dGhpcy5fZXhjbHVkZWQucGhwfHwiPyIhPT1lfHwodD10fHx0aGlzLl9fcGF0dGVybnMucGhwLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZXJifHx0aGlzLl9leGNsdWRlZC5lcmJ8fCIlIiE9PWV8fCh0PXR8fHRoaXMuX19wYXR0ZXJucy5lcmIucmVhZCgpKSk6InsiPT09biYmKHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fCh0PSh0PSh0PXR8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfdW5lc2NhcGVkLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwodGhpcy5fZXhjbHVkZWQuZGphbmdvfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwodD10fHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLnJlYWQoKSksdGhpcy5fZXhjbHVkZWQuZGphbmdvfHwodD0odD10fHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nby5yZWFkKCkpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fHRoaXMuX2Rpc2FibGVkLmRqYW5nbyYmdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFycyYmKHQ9KHQ9KHQ9dHx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfbGl0ZXJhbC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5LnJlYWQoKSkpLHR9LGUuZXhwb3J0cy5UZW1wbGF0YWJsZVBhdHRlcm49YX0sLCwsZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oMTkpLkJlYXV0aWZpZXIscj1uKDIwKS5PcHRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3IGkoZSx0LG4scikuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByfX0sZnVuY3Rpb24oZSxuLHQpe2Z1bmN0aW9uIGgoZSx0KXt0aGlzLmluZGVudF9sZXZlbD0wLHRoaXMuYWxpZ25tZW50X3NpemU9MCx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz1lLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcyx0aGlzLnByZXNlcnZlX25ld2xpbmVzPWUucHJlc2VydmVfbmV3bGluZXMsdGhpcy5fb3V0cHV0PW5ldyByKGUsdCl9ZnVuY3Rpb24gYShlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0LmNsb3NlZD8oInNjcmlwdCI9PT1lP249InRleHQvamF2YXNjcmlwdCI6InN0eWxlIj09PWUmJihuPSJ0ZXh0L2NzcyIpLC0xPChuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1udWxsLG49ZS5uZXh0O24udHlwZSE9PWMuRU9GJiZlLmNsb3NlZCE9PW47KXtpZihuLnR5cGU9PT1jLkFUVFJJQlVURSYmInR5cGUiPT09bi50ZXh0KXtuLm5leHQmJm4ubmV4dC50eXBlPT09Yy5FUVVBTFMmJm4ubmV4dC5uZXh0JiZuLm5leHQubmV4dC50eXBlPT09Yy5WQUxVRSYmKHQ9bi5uZXh0Lm5leHQudGV4dCk7YnJlYWt9bj1uLm5leHR9cmV0dXJuIHR9KHQpfHxuKS5zZWFyY2goInRleHQvY3NzIik/cj0iY3NzIjotMTxuLnNlYXJjaCgvbW9kdWxlfCgodGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oamF2YXNjcmlwdHxlY21hc2NyaXB0fGpzY3JpcHR8bGl2ZXNjcmlwdHwobGRcKyk/anNvbnxtZXRob2R8YXNwZWN0KSkvKT9yPSJqYXZhc2NyaXB0IjotMTxuLnNlYXJjaCgvKHRleHR8YXBwbGljYXRpb258ZG9qbylcLyh4LSk/KGh0bWwpLyk/cj0iaHRtbCI6LTE8bi5zZWFyY2goL3Rlc3RcL251bGwvKSYmKHI9Im51bGwiKSxyKTpudWxsfXZhciBpPXQoMjApLk9wdGlvbnMscj10KDIpLk91dHB1dCxmPXQoMjEpLlRva2VuaXplcixjPXQoMjEpLlRPS0VOLGQ9L1xyXG58W1xyXG5dLyxnPS9cclxufFtcclxuXS9nO2gucHJvdG90eXBlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX291dHB1dC5jdXJyZW50X2xpbmUuaGFzX21hdGNoKGUpfSxoLnByb3RvdHlwZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj1lLHRoaXMuX291dHB1dC5ub25fYnJlYWtpbmdfc3BhY2U9dH0saC5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLmluZGVudF9sZXZlbCx0aGlzLmFsaWdubWVudF9zaXplKSx0aGlzLl9vdXRwdXQuc2V0X3dyYXBfcG9pbnQoKX0saC5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuYWRkX3Jhd190b2tlbihlKX0saC5wcm90b3R5cGUucHJpbnRfcHJlc2VydmVkX25ld2xpbmVzPWZ1bmN0aW9uKGUpe3ZhciB0PTA7ZS50eXBlIT09Yy5URVhUJiZlLnByZXZpb3VzLnR5cGUhPT1jLlRFWFQmJih0PWUubmV3bGluZXM/MTowKSx0aGlzLnByZXNlcnZlX25ld2xpbmVzJiYodD1lLm5ld2xpbmVzPHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzKzE/ZS5uZXdsaW5lczp0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcysxKTtmb3IodmFyIG49MDtuPHQ7bisrKXRoaXMucHJpbnRfbmV3bGluZSgwPG4pO3JldHVybiAwIT09dH0saC5wcm90b3R5cGUudHJhdmVyc2Vfd2hpdGVzcGFjZT1mdW5jdGlvbihlKXtyZXR1cm4hKCFlLndoaXRlc3BhY2VfYmVmb3JlJiYhZS5uZXdsaW5lcykmJih0aGlzLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcyhlKXx8KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLCEwKX0saC5wcm90b3R5cGUucHJldmlvdXNfdG9rZW5fd3JhcHBlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdXRwdXQucHJldmlvdXNfdG9rZW5fd3JhcHBlZH0saC5wcm90b3R5cGUucHJpbnRfbmV3bGluZT1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKGUpfSxoLnByb3RvdHlwZS5wcmludF90b2tlbj1mdW5jdGlvbihlKXtlLnRleHQmJih0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLmluZGVudF9sZXZlbCx0aGlzLmFsaWdubWVudF9zaXplKSx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKGUudGV4dCkpfSxoLnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLmluZGVudF9sZXZlbCsrfSxoLnByb3RvdHlwZS5nZXRfZnVsbF9pbmRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dGhpcy5pbmRlbnRfbGV2ZWwrKGV8fDApKTwxPyIiOnRoaXMuX291dHB1dC5nZXRfaW5kZW50X3N0cmluZyhlKX07ZnVuY3Rpb24gbyhlLHQpe3JldHVybi0xIT09dC5pbmRleE9mKGUpfWZ1bmN0aW9uIHMoZSx0LG4pe3RoaXMucGFyZW50PWV8fG51bGwsdGhpcy50YWc9dD90LnRhZ19uYW1lOiIiLHRoaXMuaW5kZW50X2xldmVsPW58fDAsdGhpcy5wYXJzZXJfdG9rZW49dHx8bnVsbH1mdW5jdGlvbiB1KGUpe3RoaXMuX3ByaW50ZXI9ZSx0aGlzLl9jdXJyZW50X2ZyYW1lPW51bGx9ZnVuY3Rpb24gcChlLHQsbixyKXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0PXR8fHt9LHRoaXMuX2pzX2JlYXV0aWZ5PW4sdGhpcy5fY3NzX2JlYXV0aWZ5PXIsdGhpcy5fdGFnX3N0YWNrPW51bGw7ZT1uZXcgaSh0LCJodG1sIik7dGhpcy5fb3B0aW9ucz1lLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZT0iZm9yY2UiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMuc3Vic3RyKDAsImZvcmNlIi5sZW5ndGgpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lPSJmb3JjZS1leHBhbmQtbXVsdGlsaW5lIj09PXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9hbGlnbmVkPSJmb3JjZS1hbGlnbmVkIj09PXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19hbGlnbmVkX211bHRpcGxlPSJhbGlnbmVkLW11bHRpcGxlIj09PXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZT0icHJlc2VydmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMuc3Vic3RyKDAsInByZXNlcnZlIi5sZW5ndGgpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZV9hbGlnbmVkPSJwcmVzZXJ2ZS1hbGlnbmVkIj09PXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzfXUucHJvdG90eXBlLmdldF9wYXJzZXJfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudF9mcmFtZT90aGlzLl9jdXJyZW50X2ZyYW1lLnBhcnNlcl90b2tlbjpudWxsfSx1LnByb3RvdHlwZS5yZWNvcmRfdGFnPWZ1bmN0aW9uKGUpe2U9bmV3IHModGhpcy5fY3VycmVudF9mcmFtZSxlLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsKTt0aGlzLl9jdXJyZW50X2ZyYW1lPWV9LHUucHJvdG90eXBlLl90cnlfcG9wX2ZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGUmJih0PWUucGFyc2VyX3Rva2VuLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsLHRoaXMuX2N1cnJlbnRfZnJhbWU9ZS5wYXJlbnQpLHR9LHUucHJvdG90eXBlLl9nZXRfZnJhbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fY3VycmVudF9mcmFtZTtuJiYtMT09PWUuaW5kZXhPZihuLnRhZyk7KXtpZih0JiYtMSE9PXQuaW5kZXhPZihuLnRhZykpe249bnVsbDticmVha31uPW4ucGFyZW50fXJldHVybiBufSx1LnByb3RvdHlwZS50cnlfcG9wPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLl9nZXRfZnJhbWUoW2VdLHQpO3JldHVybiB0aGlzLl90cnlfcG9wX2ZyYW1lKGUpfSx1LnByb3RvdHlwZS5pbmRlbnRfdG9fdGFnPWZ1bmN0aW9uKGUpe2U9dGhpcy5fZ2V0X2ZyYW1lKGUpO2UmJih0aGlzLl9wcmludGVyLmluZGVudF9sZXZlbD1lLmluZGVudF9sZXZlbCl9LHAucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7Zm9yKHZhciBlPXRoaXMuX3NvdXJjZV90ZXh0LHQ9dGhpcy5fb3B0aW9ucy5lb2wsbj0oImF1dG8iPT09dGhpcy5fb3B0aW9ucy5lb2wmJih0PSJcbiIsZSYmZC50ZXN0KGUpJiYodD1lLm1hdGNoKGQpWzBdKSksKGU9ZS5yZXBsYWNlKGcsIlxuIikpLm1hdGNoKC9eW1x0IF0qLylbMF0pLHI9e3RleHQ6IiIsdHlwZToiIn0saT1uZXcgbSxhPW5ldyBoKHRoaXMuX29wdGlvbnMsbiksbz1uZXcgZihlLHRoaXMuX29wdGlvbnMpLnRva2VuaXplKCkscz0odGhpcy5fdGFnX3N0YWNrPW5ldyB1KGEpLG51bGwpLGw9by5uZXh0KCk7bC50eXBlIT09Yy5FT0Y7KWwudHlwZT09PWMuVEFHX09QRU58fGwudHlwZT09PWMuQ09NTUVOVD9pPXM9dGhpcy5faGFuZGxlX3RhZ19vcGVuKGEsbCxpLHIpOmwudHlwZT09PWMuQVRUUklCVVRFfHxsLnR5cGU9PT1jLkVRVUFMU3x8bC50eXBlPT09Yy5WQUxVRXx8bC50eXBlPT09Yy5URVhUJiYhaS50YWdfY29tcGxldGU/cz10aGlzLl9oYW5kbGVfaW5zaWRlX3RhZyhhLGwsaSxvKTpsLnR5cGU9PT1jLlRBR19DTE9TRT9zPXRoaXMuX2hhbmRsZV90YWdfY2xvc2UoYSxsLGkpOmwudHlwZT09PWMuVEVYVD9zPXRoaXMuX2hhbmRsZV90ZXh0KGEsbCxpKTphLmFkZF9yYXdfdG9rZW4obCkscj1zLGw9by5uZXh0KCk7cmV0dXJuIGEuX291dHB1dC5nZXRfY29kZSh0KX0scC5wcm90b3R5cGUuX2hhbmRsZV90YWdfY2xvc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07cmV0dXJuIGUuYWxpZ25tZW50X3NpemU9MCxuLnRhZ19jb21wbGV0ZT0hMCxlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooIjwiPT09bi50YWdfc3RhcnRfY2hhciYmKGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbigiLyI9PT10LnRleHRbMF0sITApLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiZuLmhhc193cmFwcGVkX2F0dHJzJiZlLnByaW50X25ld2xpbmUoITEpKSxlLnByaW50X3Rva2VuKHQpKSwhbi5pbmRlbnRfY29udGVudHx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwoZS5pbmRlbnQoKSxuLmluZGVudF9jb250ZW50PSExKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUuc2V0X3dyYXBfcG9pbnQoKSxyfSxwLnByb3RvdHlwZS5faGFuZGxlX2luc2lkZV90YWc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bi5oYXNfd3JhcHBlZF9hdHRycyxhPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07aWYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKHQubmV3bGluZXN8fCIiIT09dC53aGl0ZXNwYWNlX2JlZm9yZSwhMCksbi5pc191bmZvcm1hdHRlZCllLmFkZF9yYXdfdG9rZW4odCk7ZWxzZSBpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiZ0LnR5cGU9PT1jLlRFWFQpZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXModCk/KHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCkpOmUucHJpbnRfdG9rZW4odCk7ZWxzZXtpZih0LnR5cGU9PT1jLkFUVFJJQlVURT8oZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCEwKSxuLmF0dHJfY291bnQrPTEpOih0LnR5cGU9PT1jLkVRVUFMU3x8dC50eXBlPT09Yy5WQUxVRSYmdC5wcmV2aW91cy50eXBlPT09Yy5FUVVBTFMpJiZlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITEpLHQudHlwZT09PWMuQVRUUklCVVRFJiYiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGk9aXx8MCE9PXQubmV3bGluZXMpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZSkpe3ZhciBvPTE8bi5hdHRyX2NvdW50O2lmKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiYxPT09bi5hdHRyX2NvdW50KXt2YXIgcyxsPSEwLGg9MDtkb3tpZigocz1yLnBlZWsoaCkpLnR5cGU9PT1jLkFUVFJJQlVURSl7bD0hMTticmVha319d2hpbGUoKGgrPTEpPDQmJnMudHlwZSE9PWMuRU9GJiZzLnR5cGUhPT1jLlRBR19DTE9TRSk7bz0hbH1vJiYoZS5wcmludF9uZXdsaW5lKCExKSxpPSEwKX1lLnByaW50X3Rva2VuKHQpLGk9aXx8ZS5wcmV2aW91c190b2tlbl93cmFwcGVkKCksbi5oYXNfd3JhcHBlZF9hdHRycz1pfXJldHVybiBhfSxwLnByb3RvdHlwZS5faGFuZGxlX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOiJUS19DT05URU5UIn07cmV0dXJuIG4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZT90aGlzLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQoZSx0LG4pOm4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZD9lLmFkZF9yYXdfdG9rZW4odCk6KGUudHJhdmVyc2Vfd2hpdGVzcGFjZSh0KSxlLnByaW50X3Rva2VuKHQpKSxyfSxwLnByb3RvdHlwZS5fcHJpbnRfY3VzdG9tX2JlYXRpZmllcl90ZXh0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKCIiIT09dC50ZXh0KXt2YXIgaSxhPXQudGV4dCxvPTEscz0iIixsPSIiLG89KCJqYXZhc2NyaXB0Ij09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2pzX2JlYXV0aWZ5P2k9dGhpcy5fanNfYmVhdXRpZnk6ImNzcyI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9jc3NfYmVhdXRpZnk/aT10aGlzLl9jc3NfYmVhdXRpZnk6Imh0bWwiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYoaT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcChlLHQsci5fanNfYmVhdXRpZnksci5fY3NzX2JlYXV0aWZ5KS5iZWF1dGlmeSgpfSksImtlZXAiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cz9vPTA6InNlcGFyYXRlIj09PXRoaXMuX29wdGlvbnMuaW5kZW50X3NjcmlwdHMmJihvPS1lLmluZGVudF9sZXZlbCksZS5nZXRfZnVsbF9pbmRlbnQobykpO2lmKGE9YS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKSwiaHRtbCIhPT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJiI8Ij09PWFbMF0mJmEubWF0Y2goL14oPCEtLXw8IVxbQ0RBVEFcWykvKSl7dmFyIG49L14oPCEtLVteXG5dKnw8IVxbQ0RBVEFcWykoXG4/KShbIFx0XG5dKikoW1xzXFNdKikoLS0+fF1dPikkLy5leGVjKGEpO2lmKCFuKXJldHVybiB2b2lkIGUuYWRkX3Jhd190b2tlbih0KTtzPW8rblsxXSsiXG4iLGE9bls0XSxuWzVdJiYobD1vK25bNV0pLGE9YS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKSwoblsyXXx8LTEhPT1uWzNdLmluZGV4T2YoIlxuIikpJiYobj1uWzNdLm1hdGNoKC9bIFx0XSskLykpJiYodC53aGl0ZXNwYWNlX2JlZm9yZT1uWzBdKX1hPWEmJihpPygobj1mdW5jdGlvbigpe3RoaXMuZW9sPSJcbiJ9KS5wcm90b3R5cGU9dGhpcy5fb3B0aW9ucy5yYXdfb3B0aW9ucyxpKG8rYSxuZXcgbikpOm8rKGE9KGk9dC53aGl0ZXNwYWNlX2JlZm9yZSk/YS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxuKCIraSsiKT8iLCJnIiksIlxuIik6YSkucmVwbGFjZSgvXG4vZywiXG4iK28pKSxzJiYoYT1hP3MrYSsiXG4iK2w6cytsKSxlLnByaW50X25ld2xpbmUoITEpLGEmJih0LnRleHQ9YSx0LndoaXRlc3BhY2VfYmVmb3JlPSIiLHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCksZS5wcmludF9uZXdsaW5lKCEwKSl9fSxwLnByb3RvdHlwZS5faGFuZGxlX3RhZ19vcGVuPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuX2dldF90YWdfb3Blbl90b2tlbih0KTtyZXR1cm4hbi5pc191bmZvcm1hdHRlZCYmIW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8bi5pc19lbXB0eV9lbGVtZW50fHx0LnR5cGUhPT1jLlRBR19PUEVOfHwwIT09dC50ZXh0LmluZGV4T2YoIjwvIik/KGUudHJhdmVyc2Vfd2hpdGVzcGFjZSh0KSx0aGlzLl9zZXRfdGFnX3Bvc2l0aW9uKGUsdCxpLG4sciksaS5pc19pbmxpbmVfZWxlbWVudHx8ZS5zZXRfd3JhcF9wb2ludCgpLGUucHJpbnRfdG9rZW4odCkpOihlLmFkZF9yYXdfdG9rZW4odCksaS5zdGFydF90YWdfdG9rZW49dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoaS50YWdfbmFtZSkpLCh0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfZm9yY2VfYWxpZ25lZHx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGV8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZV9hbGlnbmVkKSYmKGkuYWxpZ25tZW50X3NpemU9dC50ZXh0Lmxlbmd0aCsxKSxpLnRhZ19jb21wbGV0ZXx8aS5pc191bmZvcm1hdHRlZHx8KGUuYWxpZ25tZW50X3NpemU9aS5hbGlnbm1lbnRfc2l6ZSksaX07dmFyIG09ZnVuY3Rpb24oZSx0KXt2YXIgbjt0aGlzLnBhcmVudD1lfHxudWxsLHRoaXMudGV4dD0iIix0aGlzLnR5cGU9IlRLX1RBR19PUEVOIix0aGlzLnRhZ19uYW1lPSIiLHRoaXMuaXNfaW5saW5lX2VsZW1lbnQ9ITEsdGhpcy5pc191bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9ITEsdGhpcy5pc19lbXB0eV9lbGVtZW50PSExLHRoaXMuaXNfc3RhcnRfdGFnPSExLHRoaXMuaXNfZW5kX3RhZz0hMSx0aGlzLmluZGVudF9jb250ZW50PSExLHRoaXMubXVsdGlsaW5lX2NvbnRlbnQ9ITEsdGhpcy5jdXN0b21fYmVhdXRpZmllcl9uYW1lPW51bGwsdGhpcy5zdGFydF90YWdfdG9rZW49bnVsbCx0aGlzLmF0dHJfY291bnQ9MCx0aGlzLmhhc193cmFwcGVkX2F0dHJzPSExLHRoaXMuYWxpZ25tZW50X3NpemU9MCx0aGlzLnRhZ19jb21wbGV0ZT0hMSx0aGlzLnRhZ19zdGFydF9jaGFyPSIiLHRoaXMudGFnX2NoZWNrPSIiLHQ/KHRoaXMudGFnX3N0YXJ0X2NoYXI9dC50ZXh0WzBdLHRoaXMudGV4dD10LnRleHQsIjwiPT09dGhpcy50YWdfc3RhcnRfY2hhcj8obj10LnRleHQubWF0Y2goL148KFteXHM+XSopLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiKToobj10LnRleHQubWF0Y2goL157eyg/OltcXl18I1wqPyk/KFteXHN9XSspLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiLCJ7eyM+Ij09PXQudGV4dCYmIj4iPT09dGhpcy50YWdfY2hlY2smJm51bGwhPT10Lm5leHQmJih0aGlzLnRhZ19jaGVjaz10Lm5leHQudGV4dCkpLHRoaXMudGFnX2NoZWNrPXRoaXMudGFnX2NoZWNrLnRvTG93ZXJDYXNlKCksdC50eXBlPT09Yy5DT01NRU5UJiYodGhpcy50YWdfY29tcGxldGU9ITApLHRoaXMuaXNfc3RhcnRfdGFnPSIvIiE9PXRoaXMudGFnX2NoZWNrLmNoYXJBdCgwKSx0aGlzLnRhZ19uYW1lPXRoaXMuaXNfc3RhcnRfdGFnP3RoaXMudGFnX2NoZWNrOnRoaXMudGFnX2NoZWNrLnN1YnN0cigxKSx0aGlzLmlzX2VuZF90YWc9IXRoaXMuaXNfc3RhcnRfdGFnfHx0LmNsb3NlZCYmIi8+Ij09PXQuY2xvc2VkLnRleHQsdGhpcy5pc19lbmRfdGFnPXRoaXMuaXNfZW5kX3RhZ3x8InsiPT09dGhpcy50YWdfc3RhcnRfY2hhciYmKHRoaXMudGV4dC5sZW5ndGg8M3x8L1teI1xeXS8udGVzdCh0aGlzLnRleHQuY2hhckF0KDIpKSkpOnRoaXMudGFnX2NvbXBsZXRlPSEwfSxsPShwLnByb3RvdHlwZS5fZ2V0X3RhZ19vcGVuX3Rva2VuPWZ1bmN0aW9uKGUpe2U9bmV3IG0odGhpcy5fdGFnX3N0YWNrLmdldF9wYXJzZXJfdG9rZW4oKSxlKTtyZXR1cm4gZS5hbGlnbm1lbnRfc2l6ZT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZSxlLmlzX2VuZF90YWc9ZS5pc19lbmRfdGFnfHxvKGUudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMudm9pZF9lbGVtZW50cyksZS5pc19lbXB0eV9lbGVtZW50PWUudGFnX2NvbXBsZXRlfHxlLmlzX3N0YXJ0X3RhZyYmZS5pc19lbmRfdGFnLGUuaXNfdW5mb3JtYXR0ZWQ9IWUudGFnX2NvbXBsZXRlJiZvKGUudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWQpLGUuaXNfY29udGVudF91bmZvcm1hdHRlZD0hZS5pc19lbXB0eV9lbGVtZW50JiZvKGUudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuY29udGVudF91bmZvcm1hdHRlZCksZS5pc19pbmxpbmVfZWxlbWVudD1vKGUudGFnX25hbWUsdGhpcy5fb3B0aW9ucy5pbmxpbmUpfHwieyI9PT1lLnRhZ19zdGFydF9jaGFyLGV9LHAucHJvdG90eXBlLl9zZXRfdGFnX3Bvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuLHIsaSl7bi5pc19lbXB0eV9lbGVtZW50fHwobi5pc19lbmRfdGFnP24uc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKG4udGFnX25hbWUpOih0aGlzLl9kb19vcHRpb25hbF9lbmRfZWxlbWVudChuKSYmKG4uaXNfaW5saW5lX2VsZW1lbnR8fGUucHJpbnRfbmV3bGluZSghMSkpLHRoaXMuX3RhZ19zdGFjay5yZWNvcmRfdGFnKG4pLCJzY3JpcHQiIT09bi50YWdfbmFtZSYmInN0eWxlIiE9PW4udGFnX25hbWV8fG4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8KG4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZT1hKG4udGFnX2NoZWNrLHQpKSkpLG8obi50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy5leHRyYV9saW5lcnMpJiYoZS5wcmludF9uZXdsaW5lKCExKSxlLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKXx8ZS5wcmludF9uZXdsaW5lKCEwKSksbi5pc19lbXB0eV9lbGVtZW50PygieyI9PT1uLnRhZ19zdGFydF9jaGFyJiYiZWxzZSI9PT1uLnRhZ19jaGVjayYmKHRoaXMuX3RhZ19zdGFjay5pbmRlbnRfdG9fdGFnKFsiaWYiLCJ1bmxlc3MiLCJlYWNoIl0pLG4uaW5kZW50X2NvbnRlbnQ9ITAsZS5jdXJyZW50X2xpbmVfaGFzX21hdGNoKC97eyNpZi8pfHxlLnByaW50X25ld2xpbmUoITEpKSwiIS0tIj09PW4udGFnX25hbWUmJmkudHlwZT09PWMuVEFHX0NMT1NFJiZyLmlzX2VuZF90YWcmJi0xPT09bi50ZXh0LmluZGV4T2YoIlxuIil8fChuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxlLnByaW50X25ld2xpbmUoITEpLHRoaXMuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lKGUsbikpKTpuLmlzX2VuZF90YWc/KHQ9ITEsdD0odD1uLnN0YXJ0X3RhZ190b2tlbiYmbi5zdGFydF90YWdfdG9rZW4ubXVsdGlsaW5lX2NvbnRlbnQpfHwhbi5pc19pbmxpbmVfZWxlbWVudCYmIShyLmlzX2lubGluZV9lbGVtZW50fHxyLmlzX3VuZm9ybWF0dGVkKSYmIShpLnR5cGU9PT1jLlRBR19DTE9TRSYmbi5zdGFydF90YWdfdG9rZW49PT1yKSYmIlRLX0NPTlRFTlQiIT09aS50eXBlLCh0PW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8bi5pc191bmZvcm1hdHRlZD8hMTp0KSYmZS5wcmludF9uZXdsaW5lKCExKSk6KG4uaW5kZW50X2NvbnRlbnQ9IW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSwiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoImh0bWwiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2lubmVyX2h0bWw6ImhlYWQiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbDoiYm9keSI9PT1uLnRhZ19uYW1lJiYobi5pbmRlbnRfY29udGVudD10aGlzLl9vcHRpb25zLmluZGVudF9ib2R5X2lubmVyX2h0bWwpKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHwiVEtfQ09OVEVOVCI9PT1pLnR5cGUmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKSl9LHAucHJvdG90eXBlLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZT1mdW5jdGlvbihlLHQpeyF0LnBhcmVudHx8IWUuX291dHB1dC5qdXN0X2FkZGVkX25ld2xpbmUoKXx8KHQuaXNfaW5saW5lX2VsZW1lbnR8fHQuaXNfdW5mb3JtYXR0ZWQpJiZ0LnBhcmVudC5pc19pbmxpbmVfZWxlbWVudHx8KHQucGFyZW50Lm11bHRpbGluZV9jb250ZW50PSEwKX0sWyJhZGRyZXNzIiwiYXJ0aWNsZSIsImFzaWRlIiwiYmxvY2txdW90ZSIsImRldGFpbHMiLCJkaXYiLCJkbCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkZXIiLCJociIsIm1haW4iLCJuYXYiLCJvbCIsInAiLCJwcmUiLCJzZWN0aW9uIiwidGFibGUiLCJ1bCJdKSxiPVsiYSIsImF1ZGlvIiwiZGVsIiwiaW5zIiwibWFwIiwibm9zY3JpcHQiLCJ2aWRlbyJdO3AucHJvdG90eXBlLl9kb19vcHRpb25hbF9lbmRfZWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdCxuPW51bGw7aWYoIWUuaXNfZW1wdHlfZWxlbWVudCYmZS5pc19zdGFydF90YWcmJmUucGFyZW50KXJldHVybiJib2R5Ij09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiaGVhZCIpOiJsaSI9PT1lLnRhZ19uYW1lP249bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImxpIixbIm9sIiwidWwiXSk6ImRkIj09PWUudGFnX25hbWV8fCJkdCI9PT1lLnRhZ19uYW1lP249KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImR0IixbImRsIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImRkIixbImRsIl0pOiJwIj09PWUucGFyZW50LnRhZ19uYW1lJiYtMSE9PWwuaW5kZXhPZihlLnRhZ19uYW1lKT8odD1lLnBhcmVudC5wYXJlbnQpJiYtMSE9PWIuaW5kZXhPZih0LnRhZ19uYW1lKXx8KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInAiKSk6InJwIj09PWUudGFnX25hbWV8fCJydCI9PT1lLnRhZ19uYW1lP249KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInJ0IixbInJ1YnkiLCJydGMiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnAiLFsicnVieSIsInJ0YyJdKToib3B0Z3JvdXAiPT09ZS50YWdfbmFtZT9uPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJvcHRncm91cCIsWyJzZWxlY3QiXSk6Im9wdGlvbiI9PT1lLnRhZ19uYW1lP249bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGlvbiIsWyJzZWxlY3QiLCJkYXRhbGlzdCIsIm9wdGdyb3VwIl0pOiJjb2xncm91cCI9PT1lLnRhZ19uYW1lP249bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSk6InRoZWFkIj09PWUudGFnX25hbWU/bj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKToidGJvZHkiPT09ZS50YWdfbmFtZXx8InRmb290Ij09PWUudGFnX25hbWU/bj0obj0obj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aGVhZCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0Ym9keSIsWyJ0YWJsZSJdKToidHIiPT09ZS50YWdfbmFtZT9uPShuPShuPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRyIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290Il0pOiJ0aCIhPT1lLnRhZ19uYW1lJiYidGQiIT09ZS50YWdfbmFtZXx8KG49KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRkIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290IiwidHIiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGgiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSksZS5wYXJlbnQ9dGhpcy5fdGFnX3N0YWNrLmdldF9wYXJzZXJfdG9rZW4oKSxufSxlLmV4cG9ydHMuQmVhdXRpZmllcj1wfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2KS5PcHRpb25zO2Z1bmN0aW9uIGkoZSl7ci5jYWxsKHRoaXMsZSwiaHRtbCIpLDE9PT10aGlzLnRlbXBsYXRpbmcubGVuZ3RoJiYiYXV0byI9PT10aGlzLnRlbXBsYXRpbmdbMF0mJih0aGlzLnRlbXBsYXRpbmc9WyJkamFuZ28iLCJlcmIiLCJoYW5kbGViYXJzIiwicGhwIl0pLHRoaXMuaW5kZW50X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9pbm5lcl9odG1sIiksdGhpcy5pbmRlbnRfYm9keV9pbm5lcl9odG1sPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfYm9keV9pbm5lcl9odG1sIiwhMCksdGhpcy5pbmRlbnRfaGVhZF9pbm5lcl9odG1sPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGVhZF9pbm5lcl9odG1sIiwhMCksdGhpcy5pbmRlbnRfaGFuZGxlYmFycz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2hhbmRsZWJhcnMiLCEwKSx0aGlzLndyYXBfYXR0cmlidXRlcz10aGlzLl9nZXRfc2VsZWN0aW9uKCJ3cmFwX2F0dHJpYnV0ZXMiLFsiYXV0byIsImZvcmNlIiwiZm9yY2UtYWxpZ25lZCIsImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiLCJhbGlnbmVkLW11bHRpcGxlIiwicHJlc2VydmUiLCJwcmVzZXJ2ZS1hbGlnbmVkIl0pLHRoaXMud3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplPXRoaXMuX2dldF9udW1iZXIoIndyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZSIsdGhpcy5pbmRlbnRfc2l6ZSksdGhpcy5leHRyYV9saW5lcnM9dGhpcy5fZ2V0X2FycmF5KCJleHRyYV9saW5lcnMiLFsiaGVhZCIsImJvZHkiLCIvaHRtbCJdKSx0aGlzLmlubGluZT10aGlzLl9nZXRfYXJyYXkoImlubGluZSIsWyJhIiwiYWJiciIsImFyZWEiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNpdGUiLCJjb2RlIiwiZGF0YSIsImRhdGFsaXN0IiwiZGVsIiwiZGZuIiwiZW0iLCJlbWJlZCIsImkiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibWFwIiwibWFyayIsIm1hdGgiLCJtZXRlciIsIm5vc2NyaXB0Iiwib2JqZWN0Iiwib3V0cHV0IiwicHJvZ3Jlc3MiLCJxIiwicnVieSIsInMiLCJzYW1wIiwic2VsZWN0Iiwic21hbGwiLCJzcGFuIiwic3Ryb25nIiwic3ViIiwic3VwIiwic3ZnIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRpbWUiLCJ1IiwidmFyIiwidmlkZW8iLCJ3YnIiLCJ0ZXh0IiwiYWNyb255bSIsImJpZyIsInN0cmlrZSIsInR0Il0pLHRoaXMudm9pZF9lbGVtZW50cz10aGlzLl9nZXRfYXJyYXkoInZvaWRfZWxlbWVudHMiLFsiYXJlYSIsImJhc2UiLCJiciIsImNvbCIsImVtYmVkIiwiaHIiLCJpbWciLCJpbnB1dCIsImtleWdlbiIsImxpbmsiLCJtZW51aXRlbSIsIm1ldGEiLCJwYXJhbSIsInNvdXJjZSIsInRyYWNrIiwid2JyIiwiIWRvY3R5cGUiLCI/eG1sIiwiYmFzZWZvbnQiLCJpc2luZGV4Il0pLHRoaXMudW5mb3JtYXR0ZWQ9dGhpcy5fZ2V0X2FycmF5KCJ1bmZvcm1hdHRlZCIsW10pLHRoaXMuY29udGVudF91bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoImNvbnRlbnRfdW5mb3JtYXR0ZWQiLFsicHJlIiwidGV4dGFyZWEiXSksdGhpcy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj10aGlzLl9nZXRfY2hhcmFjdGVycygidW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIiKSx0aGlzLmluZGVudF9zY3JpcHRzPXRoaXMuX2dldF9zZWxlY3Rpb24oImluZGVudF9zY3JpcHRzIixbIm5vcm1hbCIsImtlZXAiLCJzZXBhcmF0ZSJdKX1pLnByb3RvdHlwZT1uZXcgcixlLmV4cG9ydHMuT3B0aW9ucz1pfSxmdW5jdGlvbihlLGMsdCl7ZnVuY3Rpb24gbihlLHQpe3IuY2FsbCh0aGlzLGUsdCksdGhpcy5fY3VycmVudF90YWdfbmFtZT0iIjt2YXIgZT1uZXcgbyh0aGlzLl9pbnB1dCkucmVhZF9vcHRpb25zKHRoaXMuX29wdGlvbnMpLHQ9bmV3IHModGhpcy5faW5wdXQpO3RoaXMuX19wYXR0ZXJucz17d29yZDplLnVudGlsKC9bXG5cclx0IDxdLyksc2luZ2xlX3F1b3RlOmUudW50aWxfYWZ0ZXIoLycvKSxkb3VibGVfcXVvdGU6ZS51bnRpbF9hZnRlcigvIi8pLGF0dHJpYnV0ZTplLnVudGlsKC9bXG5cclx0ID0+XXxcLz4vKSxlbGVtZW50X25hbWU6ZS51bnRpbCgvW1xuXHJcdCA+XC9dLyksaGFuZGxlYmFyc19jb21tZW50OnQuc3RhcnRpbmdfd2l0aCgve3shLS0vKS51bnRpbF9hZnRlcigvLS19fS8pLGhhbmRsZWJhcnM6dC5zdGFydGluZ193aXRoKC97ey8pLnVudGlsX2FmdGVyKC99fS8pLGhhbmRsZWJhcnNfb3Blbjp0LnVudGlsKC9bXG5cclx0IH1dLyksaGFuZGxlYmFyc19yYXdfY2xvc2U6dC51bnRpbCgvfX0vKSxjb21tZW50OnQuc3RhcnRpbmdfd2l0aCgvPCEtLS8pLnVudGlsX2FmdGVyKC8tLT4vKSxjZGF0YTp0LnN0YXJ0aW5nX3dpdGgoLzwhXFtDREFUQVxbLykudW50aWxfYWZ0ZXIoL11dPi8pLGNvbmRpdGlvbmFsX2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC88IVxbLykudW50aWxfYWZ0ZXIoL10+LykscHJvY2Vzc2luZzp0LnN0YXJ0aW5nX3dpdGgoLzxcPy8pLnVudGlsX2FmdGVyKC9cPz4vKX0sdGhpcy5fb3B0aW9ucy5pbmRlbnRfaGFuZGxlYmFycyYmKHRoaXMuX19wYXR0ZXJucy53b3JkPXRoaXMuX19wYXR0ZXJucy53b3JkLmV4Y2x1ZGUoImhhbmRsZWJhcnMiKSksdGhpcy5fdW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI9bnVsbCx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyJiYoZT10aGlzLl9pbnB1dC5nZXRfbGl0ZXJhbF9yZWdleHAodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciksdGhpcy5fX3BhdHRlcm5zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXQubWF0Y2hpbmcoZSkudW50aWxfYWZ0ZXIoZSkpfXZhciByPXQoOSkuVG9rZW5pemVyLGk9dCg5KS5UT0tFTixhPXQoMTMpLkRpcmVjdGl2ZXMsbz10KDE0KS5UZW1wbGF0YWJsZVBhdHRlcm4scz10KDEyKS5QYXR0ZXJuLGw9e1RBR19PUEVOOiJUS19UQUdfT1BFTiIsVEFHX0NMT1NFOiJUS19UQUdfQ0xPU0UiLEFUVFJJQlVURToiVEtfQVRUUklCVVRFIixFUVVBTFM6IlRLX0VRVUFMUyIsVkFMVUU6IlRLX1ZBTFVFIixDT01NRU5UOiJUS19DT01NRU5UIixURVhUOiJUS19URVhUIixVTktOT1dOOiJUS19VTktOT1dOIixTVEFSVDppLlNUQVJULFJBVzppLlJBVyxFT0Y6aS5FT0Z9LGg9bmV3IGEoLzxcIS0tLywvLS0+Lyk7KG4ucHJvdG90eXBlPW5ldyByKS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sbi5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PWwuVEFHX09QRU59LG4ucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PWwuVEFHX0NMT1NFJiZ0JiYoKCI+Ij09PWUudGV4dHx8Ii8+Ij09PWUudGV4dCkmJiI8Ij09PXQudGV4dFswXXx8In19Ij09PWUudGV4dCYmInsiPT09dC50ZXh0WzBdJiYieyI9PT10LnRleHRbMV0pfSxuLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIifSxuLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3ZhciBuPXRoaXMuX2lucHV0LnBlZWsoKTtyZXR1cm4gbnVsbD09PW4/dGhpcy5fY3JlYXRlX3Rva2VuKGwuRU9GLCIiKTp0aGlzLl9yZWFkX29wZW5faGFuZGxlYmFycyhuLHQpfHx0aGlzLl9yZWFkX2F0dHJpYnV0ZShuLGUsdCl8fHRoaXMuX3JlYWRfY2xvc2Uobix0KXx8dGhpcy5fcmVhZF9yYXdfY29udGVudChuLGUsdCl8fHRoaXMuX3JlYWRfY29udGVudF93b3JkKG4pfHx0aGlzLl9yZWFkX2NvbW1lbnRfb3JfY2RhdGEobil8fHRoaXMuX3JlYWRfcHJvY2Vzc2luZyhuKXx8dGhpcy5fcmVhZF9vcGVuKG4sdCl8fHRoaXMuX2NyZWF0ZV90b2tlbihsLlVOS05PV04sdGhpcy5faW5wdXQubmV4dCgpKX0sbi5wcm90b3R5cGUuX3JlYWRfY29tbWVudF9vcl9jZGF0YT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbCxyPW51bGw7cmV0dXJuIjwiPT09ZSYmKCIhIj09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigobj10aGlzLl9fcGF0dGVybnMuY29tbWVudC5yZWFkKCkpPyhyPWguZ2V0X2RpcmVjdGl2ZXMobikpJiYic3RhcnQiPT09ci5pZ25vcmUmJihuKz1oLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSk6bj10aGlzLl9fcGF0dGVybnMuY2RhdGEucmVhZCgpKSxuJiYoKHQ9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSkuZGlyZWN0aXZlcz1yKSksdH0sbi5wcm90b3R5cGUuX3JlYWRfcHJvY2Vzc2luZz1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbDtyZXR1cm4iPCIhPT1lfHwobj0iISIhPT0oZT10aGlzLl9pbnB1dC5wZWVrKDEpKSYmIj8iIT09ZT9uOihuPXRoaXMuX19wYXR0ZXJucy5jb25kaXRpb25hbF9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5wcm9jZXNzaW5nLnJlYWQoKSkmJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPW51bGwpLHR9LG4ucHJvdG90eXBlLl9yZWFkX29wZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtyZXR1cm4gdHx8IjwiPT09ZSYmKG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PXRoaXMuX2lucHV0LnBlZWsoKSYmKG4rPXRoaXMuX2lucHV0Lm5leHQoKSksbis9dGhpcy5fX3BhdHRlcm5zLmVsZW1lbnRfbmFtZS5yZWFkKCkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfT1BFTixuKSkscn0sbi5wcm90b3R5cGUuX3JlYWRfb3Blbl9oYW5kbGViYXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHR8fHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJiJ7Ij09PWUmJiJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJihyPSIhIj09PXRoaXMuX2lucHV0LnBlZWsoMik/KG49KG49dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFycy5yZWFkKCksdGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSk6KG49dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfb3Blbi5yZWFkKCksdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpKSxyfSxuLnByb3RvdHlwZS5fcmVhZF9jbG9zZT1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0JiYoIjwiPT09dC50ZXh0WzBdJiYoIj4iPT09ZXx8Ii8iPT09ZSYmIj4iPT09dGhpcy5faW5wdXQucGVlaygxKSk/KG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PWUmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLG4pKToieyI9PT10LnRleHRbMF0mJiJ9Ij09PWUmJiJ9Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJih0aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5faW5wdXQubmV4dCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLCJ9fSIpKSkscn0sbi5wcm90b3R5cGUuX3JlYWRfYXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsO3JldHVybiBuJiYiPCI9PT1uLnRleHRbMF0mJigiPSI9PT1lP3I9dGhpcy5fY3JlYXRlX3Rva2VuKGwuRVFVQUxTLHRoaXMuX2lucHV0Lm5leHQoKSk6JyInPT09ZXx8IiciPT09ZT8obj10aGlzLl9pbnB1dC5uZXh0KCksbis9KCciJz09PWU/dGhpcy5fX3BhdHRlcm5zLmRvdWJsZV9xdW90ZTp0aGlzLl9fcGF0dGVybnMuc2luZ2xlX3F1b3RlKS5yZWFkKCkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5WQUxVRSxuKSk6KGU9dGhpcy5fX3BhdHRlcm5zLmF0dHJpYnV0ZS5yZWFkKCkpJiYocj10LnR5cGU9PT1sLkVRVUFMUz90aGlzLl9jcmVhdGVfdG9rZW4obC5WQUxVRSxlKTp0aGlzLl9jcmVhdGVfdG9rZW4obC5BVFRSSUJVVEUsZSkpKSxyfSxuLnByb3RvdHlwZS5faXNfY29udGVudF91bmZvcm1hdHRlZD1mdW5jdGlvbihlKXtyZXR1cm4tMT09PXRoaXMuX29wdGlvbnMudm9pZF9lbGVtZW50cy5pbmRleE9mKGUpJiYoLTEhPT10aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQuaW5kZXhPZihlKXx8LTEhPT10aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkLmluZGV4T2YoZSkpfSxuLnByb3RvdHlwZS5fcmVhZF9yYXdfY29udGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9IiI7aWYobiYmInsiPT09bi50ZXh0WzBdKXI9dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfcmF3X2Nsb3NlLnJlYWQoKTtlbHNlIGlmKHQudHlwZT09PWwuVEFHX0NMT1NFJiYiPCI9PT10Lm9wZW5lZC50ZXh0WzBdJiYiLyIhPT10LnRleHRbMF0pe249dC5vcGVuZWQudGV4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtpZigic2NyaXB0Ij09PW58fCJzdHlsZSI9PT1uKXt0PXRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShlKTtpZih0KXJldHVybiB0LnR5cGU9bC5URVhULHQ7cj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK24rIltcXG5cXHJcXHQgXSo/PiIsImlnIikpfWVsc2UgdGhpcy5faXNfY29udGVudF91bmZvcm1hdHRlZChuKSYmKHI9dGhpcy5faW5wdXQucmVhZFVudGlsKG5ldyBSZWdFeHAoIjwvIituKyJbXFxuXFxyXFx0IF0qPz4iLCJpZyIpKSl9cmV0dXJuIHI/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCxyKTpudWxsfSxuLnByb3RvdHlwZS5fcmVhZF9jb250ZW50X3dvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYodD0odD10aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyJiZlPT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlclswXT90aGlzLl9fcGF0dGVybnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIucmVhZCgpOnQpfHx0aGlzLl9fcGF0dGVybnMud29yZC5yZWFkKCkpcmV0dXJuIHRoaXMuX2NyZWF0ZV90b2tlbihsLlRFWFQsdCl9LGUuZXhwb3J0cy5Ub2tlbml6ZXI9bixlLmV4cG9ydHMuVE9LRU49bH1dLHNhPXt9LGxhPWZ1bmN0aW9uIGUodCl7dmFyIG49c2FbdF07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO249c2FbdF09e2V4cG9ydHM6e319O3JldHVybiBvYVt0XShuLG4uZXhwb3J0cyxlKSxuLmV4cG9ydHN9KDE4KSxhYT1sYSxoYT17NDcwOmU9PntmdW5jdGlvbiB1KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkoZSkpfWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIG4scj0iIixpPTAsYT0tMSxvPTAscz0wO3M8PWUubGVuZ3RoOysrcyl7aWYoczxlLmxlbmd0aCluPWUuY2hhckNvZGVBdChzKTtlbHNle2lmKDQ3PT09bilicmVhaztuPTQ3fWlmKDQ3PT09bil7aWYoYSE9PXMtMSYmMSE9PW8paWYoYSE9PXMtMSYmMj09PW8pe2lmKHIubGVuZ3RoPDJ8fDIhPT1pfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMikpaWYoMjxyLmxlbmd0aCl7dmFyIGw9ci5sYXN0SW5kZXhPZigiLyIpO2lmKGwhPT1yLmxlbmd0aC0xKXtpPS0xPT09bD8ocj0iIiwwKToocj1yLnNsaWNlKDAsbCkpLmxlbmd0aC0xLXIubGFzdEluZGV4T2YoIi8iKSxhPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1yLmxlbmd0aHx8MT09PXIubGVuZ3RoKXtyPSIiLGE9cyxvPWk9MDtjb250aW51ZX10JiYoMDxyLmxlbmd0aD9yKz0iLy4uIjpyPSIuLiIsaT0yKX1lbHNlIDA8ci5sZW5ndGg/cis9Ii8iK2Uuc2xpY2UoYSsxLHMpOnI9ZS5zbGljZShhKzEscyksaT1zLWEtMTthPXMsbz0wfWVsc2UgNDY9PT1uJiYtMSE9PW8/KytvOm89LTF9cmV0dXJuIHJ9dmFyIHA9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0iIixuPSExLHI9YXJndW1lbnRzLmxlbmd0aC0xOy0xPD1yJiYhbjtyLS0pe3ZhciBpPTA8PXI/YXJndW1lbnRzW3JdOmU9dm9pZCAwPT09ZT9wcm9jZXNzLmN3ZCgpOmU7dShpKSwwIT09aS5sZW5ndGgmJih0PWkrIi8iK3Qsbj00Nz09PWkuY2hhckNvZGVBdCgwKSl9cmV0dXJuIHQ9YSh0LCFuKSxuPzA8dC5sZW5ndGg/Ii8iK3Q6Ii8iOjA8dC5sZW5ndGg/dDoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbihlKXtpZih1KGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7dmFyIHQ9NDc9PT1lLmNoYXJDb2RlQXQoMCksbj00Nz09PWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKTtyZXR1cm4gMDwoZT0wIT09KGU9YShlLCF0KSkubGVuZ3RofHx0P2U6Ii4iKS5sZW5ndGgmJm4mJihlKz0iLyIpLHQ/Ii8iK2U6ZX0saXNBYnNvbHV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdShlKSwwPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGUsdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDsrK3Qpe3ZhciBuPWFyZ3VtZW50c1t0XTt1KG4pLDA8bi5sZW5ndGgmJih2b2lkIDA9PT1lP2U9bjplKz0iLyIrbil9cmV0dXJuIHZvaWQgMD09PWU/Ii4iOnAubm9ybWFsaXplKGUpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLHQpe2lmKHUoZSksdSh0KSxlPT09dClyZXR1cm4iIjtpZigoZT1wLnJlc29sdmUoZSkpPT09KHQ9cC5yZXNvbHZlKHQpKSlyZXR1cm4iIjtmb3IodmFyIG49MTtuPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdChuKTsrK24pO2Zvcih2YXIgcj1lLmxlbmd0aCxpPXItbixhPTE7YTx0Lmxlbmd0aCYmNDc9PT10LmNoYXJDb2RlQXQoYSk7KythKTtmb3IodmFyIGM9dC5sZW5ndGgtYSxvPWk8Yz9pOmMscz0tMSxsPTA7bDw9bzsrK2wpe2lmKGw9PT1vKXtpZihvPGMpe2lmKDQ3PT09dC5jaGFyQ29kZUF0KGErbCkpcmV0dXJuIHQuc2xpY2UoYStsKzEpO2lmKDA9PT1sKXJldHVybiB0LnNsaWNlKGErbCl9ZWxzZSBvPGkmJig0Nz09PWUuY2hhckNvZGVBdChuK2wpP3M9bDowPT09bCYmKHM9MCkpO2JyZWFrfXZhciBkPWUuY2hhckNvZGVBdChuK2wpO2lmKGQhPT10LmNoYXJDb2RlQXQoYStsKSlicmVhazs0Nz09PWQmJihzPWwpfWZvcih2YXIgaD0iIixsPW4rcysxO2w8PXI7KytsKWwhPT1yJiY0NyE9PWUuY2hhckNvZGVBdChsKXx8KDA9PT1oLmxlbmd0aD9oKz0iLi4iOmgrPSIvLi4iKTtyZXR1cm4gMDxoLmxlbmd0aD9oK3Quc2xpY2UoYStzKTooNDc9PT10LmNoYXJDb2RlQXQoYSs9cykmJisrYSx0LnNsaWNlKGEpKX0sX21ha2VMb25nOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxkaXJuYW1lOmZ1bmN0aW9uKGUpe2lmKHUoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIHQ9NDc9PT1lLmNoYXJDb2RlQXQoMCksbj0tMSxyPSEwLGk9ZS5sZW5ndGgtMTsxPD1pOy0taSlpZig0Nz09PWUuY2hhckNvZGVBdChpKSl7aWYoIXIpe249aTticmVha319ZWxzZSByPSExO3JldHVybi0xPT09bj90PyIvIjoiLiI6dCYmMT09PW4/Ii8vIjplLnNsaWNlKDAsbil9LGJhc2VuYW1lOmZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dCYmInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTt1KGUpO3ZhciBuPTAscj0tMSxpPSEwO2lmKHZvaWQgMCE9PXQmJjA8dC5sZW5ndGgmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodC5sZW5ndGg9PT1lLmxlbmd0aCYmdD09PWUpcmV0dXJuIiI7Zm9yKHZhciBhPXQubGVuZ3RoLTEsbz0tMSxzPWUubGVuZ3RoLTE7MDw9czstLXMpe3ZhciBsPWUuY2hhckNvZGVBdChzKTtpZig0Nz09PWwpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZS0xPT09byYmKGk9ITEsbz1zKzEpLDA8PWEmJihsPT09dC5jaGFyQ29kZUF0KGEpPy0xPT0tLWEmJihyPXMpOihhPS0xLHI9bykpfXJldHVybiBuPT09cj9yPW86LTE9PT1yJiYocj1lLmxlbmd0aCksZS5zbGljZShuLHIpfWZvcihzPWUubGVuZ3RoLTE7MDw9czstLXMpaWYoNDc9PT1lLmNoYXJDb2RlQXQocykpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZS0xPT09ciYmKGk9ITEscj1zKzEpO3JldHVybi0xPT09cj8iIjplLnNsaWNlKG4scil9LGV4dG5hbWU6ZnVuY3Rpb24oZSl7dShlKTtmb3IodmFyIHQ9LTEsbj0wLHI9LTEsaT0hMCxhPTAsbz1lLmxlbmd0aC0xOzA8PW87LS1vKXt2YXIgcz1lLmNoYXJDb2RlQXQobyk7aWYoNDchPT1zKS0xPT09ciYmKGk9ITEscj1vKzEpLDQ2PT09cz8tMT09PXQ/dD1vOjEhPT1hJiYoYT0xKTotMSE9PXQmJihhPS0xKTtlbHNlIGlmKCFpKXtuPW8rMTticmVha319cmV0dXJuLTE9PT10fHwtMT09PXJ8fDA9PT1hfHwxPT09YSYmdD09PXItMSYmdD09PW4rMT8iIjplLnNsaWNlKHQscil9LGZvcm1hdDpmdW5jdGlvbihlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtyZXR1cm4gdD1lLmRpcnx8ZS5yb290LG49ZS5iYXNlfHwoZS5uYW1lfHwiIikrKGUuZXh0fHwiIiksdD90PT09ZS5yb290P3Qrbjp0KyIvIituOm47dmFyIHQsbn0scGFyc2U6ZnVuY3Rpb24oZSl7dShlKTt2YXIgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2Zvcih2YXIgbixyPTQ3PT09ZS5jaGFyQ29kZUF0KDApLGM9cj8odC5yb290PSIvIiwxKTowLGk9LTEsYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsaD0wO2M8PWw7LS1sKWlmKDQ3IT09KG49ZS5jaGFyQ29kZUF0KGwpKSktMT09PW8mJihzPSExLG89bCsxKSw0Nj09PW4/LTE9PT1pP2k9bDoxIT09aCYmKGg9MSk6LTEhPT1pJiYoaD0tMSk7ZWxzZSBpZighcyl7YT1sKzE7YnJlYWt9cmV0dXJuLTE9PT1pfHwtMT09PW98fDA9PT1ofHwxPT09aCYmaT09PW8tMSYmaT09PWErMT8tMSE9PW8mJih0LmJhc2U9dC5uYW1lPTA9PT1hJiZyP2Uuc2xpY2UoMSxvKTplLnNsaWNlKGEsbykpOigwPT09YSYmcj8odC5uYW1lPWUuc2xpY2UoMSxpKSx0LmJhc2U9ZS5zbGljZSgxLG8pKToodC5uYW1lPWUuc2xpY2UoYSxpKSx0LmJhc2U9ZS5zbGljZShhLG8pKSx0LmV4dD1lLnNsaWNlKGksbykpLDA8YT90LmRpcj1lLnNsaWNlKDAsYS0xKTpyJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTtwLnBvc2l4PXAsZS5leHBvcnRzPXB9LDQ0NzooYyxlLHQpPT57dmFyIHI7dC5yKGUpLHQuZChlLHtVUkk6KCk9PmcsVXRpbHM6KCk9Pmx9KSwib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3M/cj0id2luMzIiPT09cHJvY2Vzcy5wbGF0Zm9ybToib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmKHI9MDw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXaW5kb3dzIikpO2E9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9KShlLHQpfTt2YXIgYSxkPS9eXHdbXHdcZCsuLV0qJC8sdT0vXlwvLyxwPS9eXC9cLy87ZnVuY3Rpb24gbShlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJy5jb25jYXQoZS5hdXRob3JpdHksJyIsIHBhdGg6ICInKS5jb25jYXQoZS5wYXRoLCciLCBxdWVyeTogIicpLmNvbmNhdChlLnF1ZXJ5LCciLCBmcmFnbWVudDogIicpLmNvbmNhdChlLmZyYWdtZW50LCcifScpKTtpZihlLnNjaGVtZSYmIWQudGVzdChlLnNjaGVtZSkpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBTY2hlbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpO2lmKGUucGF0aClpZihlLmF1dGhvcml0eSl7aWYoIXUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYocC50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9dmFyIGY9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy8sZz0obi5pc1VyaT1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG58fCEhZSYmInN0cmluZyI9PXR5cGVvZiBlLmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiBlLmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIGUucGF0aCYmInN0cmluZyI9PXR5cGVvZiBlLnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIGUuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIGUuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZ30sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geSh0aGlzLCExKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxuLnByb3RvdHlwZS53aXRoPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciB0PWUuc2NoZW1lLG49ZS5hdXRob3JpdHkscj1lLnBhdGgsaT1lLnF1ZXJ5LGU9ZS5mcmFnbWVudDtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD0iIiksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj0iIiksdm9pZCAwPT09cj9yPXRoaXMucGF0aDpudWxsPT09ciYmKHI9IiIpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT0iIiksdm9pZCAwPT09ZT9lPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWUmJihlPSIiKSx0PT09dGhpcy5zY2hlbWUmJm49PT10aGlzLmF1dGhvcml0eSYmcj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJmU9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IG8odCxuLHIsaSxlKX0sbi5wYXJzZT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSExKTtlPWYuZXhlYyhlKTtyZXR1cm4gZT9uZXcgbyhlWzJdfHwiIixpKGVbNF18fCIiKSxpKGVbNV18fCIiKSxpKGVbN118fCIiKSxpKGVbOV18fCIiKSx0KTpuZXcgbygiIiwiIiwiIiwiIiwiIil9LG4uZmlsZT1mdW5jdGlvbihlKXt2YXIgdCxuPSIiO3JldHVybiIvIj09PShlPXI/ZS5yZXBsYWNlKC9cXC9nLCIvIik6ZSlbMF0mJiIvIj09PWVbMV0mJihlPS0xPT09KHQ9ZS5pbmRleE9mKCIvIiwyKSk/KG49ZS5zdWJzdHJpbmcoMiksIi8iKToobj1lLnN1YnN0cmluZygyLHQpLGUuc3Vic3RyaW5nKHQpfHwiLyIpKSxuZXcgbygiZmlsZSIsbixlLCIiLCIiKX0sbi5mcm9tPWZ1bmN0aW9uKGUpe2U9bmV3IG8oZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCk7cmV0dXJuIG0oZSwhMCksZX0sbi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHModGhpcyxlPXZvaWQgMD09PWU/ITE6ZSl9LG4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxuLnJldml2ZT1mdW5jdGlvbihlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgbilyZXR1cm4gZTt2YXIgdD1uZXcgbyhlKTtyZXR1cm4gdC5fZm9ybWF0dGVkPWUuZXh0ZXJuYWwsdC5fZnNQYXRoPWUuX3NlcD09PWI/ZS5mc1BhdGg6bnVsbCx0fXJldHVybiBlfSxuKSxiPXI/MTp2b2lkIDAsbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9mb3JtYXR0ZWQ9bnVsbCxlLl9mc1BhdGg9bnVsbCxlfXZhciBuPWUscj10O2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByJiZudWxsIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPW59cmV0dXJuIGEobixyKSxuLnByb3RvdHlwZT1udWxsPT09cj9PYmplY3QuY3JlYXRlKHIpOihpLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgaSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4oZT12b2lkIDA9PT1lPyExOmUpP3ModGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1zKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1iKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX0sZX0oZyksXz0oKGU9e30pWzU4XT0iJTNBIixlWzQ3XT0iJTJGIixlWzYzXT0iJTNGIixlWzM1XT0iJTIzIixlWzkxXT0iJTVCIixlWzkzXT0iJTVEIixlWzY0XT0iJTQwIixlWzMzXT0iJTIxIixlWzM2XT0iJTI0IixlWzM4XT0iJTI2IixlWzM5XT0iJTI3IixlWzQwXT0iJTI4IixlWzQxXT0iJTI5IixlWzQyXT0iJTJBIixlWzQzXT0iJTJCIixlWzQ0XT0iJTJDIixlWzU5XT0iJTNCIixlWzYxXT0iJTNEIixlWzMyXT0iJTIwIixlKTtmdW5jdGlvbiBuKGUsdCxuLHIsaSxhKXt2b2lkIDA9PT1hJiYoYT0hMSksIm9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8IiIsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fCIiLHRoaXMucGF0aD1lLnBhdGh8fCIiLHRoaXMucXVlcnk9ZS5xdWVyeXx8IiIsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHwiIik6KHRoaXMuc2NoZW1lPWV8fGE/ZToiZmlsZSIsdGhpcy5hdXRob3JpdHk9dHx8IiIsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0PyIvIiE9PXRbMF0mJih0PSIvIit0KTp0PSIvIn1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8IiIpLHRoaXMucXVlcnk9cnx8IiIsdGhpcy5mcmFnbWVudD1pfHwiIixtKHRoaXMsYSkpfWZ1bmN0aW9uIHcoZSx0KXtmb3IodmFyIG49dm9pZCAwLHI9LTEsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lLmNoYXJDb2RlQXQoaSk7OTc8PWEmJmE8PTEyMnx8NjU8PWEmJmE8PTkwfHw0ODw9YSYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YT8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLHZvaWQgMCE9PW4mJihuKz1lLmNoYXJBdChpKSkpOih2b2lkIDA9PT1uJiYobj1lLnN1YnN0cigwLGkpKSx2b2lkIDAhPT0oYT1fW2FdKT8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPWEpOi0xPT09ciYmKHI9aSkpfXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9X1tyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiB5KGUsdCl7dD1lLmF1dGhvcml0eSYmMTxlLnBhdGgubGVuZ3RoJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iLmNvbmNhdChlLmF1dGhvcml0eSkuY29uY2F0KGUucGF0aCk6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKDY1PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHw5Nzw9ZS5wYXRoLmNoYXJDb2RlQXQoMSkmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aDtyZXR1cm4gdD1yP3QucmVwbGFjZSgvXC8vZywiXFwiKTp0fWZ1bmN0aW9uIHMoZSx0KXt2YXIgbixyLGk9dD92OncsYT0iIixvPWUuc2NoZW1lLHM9ZS5hdXRob3JpdHksbD1lLnBhdGgsaD1lLnF1ZXJ5LGU9ZS5mcmFnbWVudDtyZXR1cm4gbyYmKGE9YStvKyI6IiksIXMmJiJmaWxlIiE9PW98fChhKz0iLy8iKSxzJiYoLTEhPT0obz1zLmluZGV4T2YoIkAiKSkmJihuPXMuc3Vic3RyKDAsbykscz1zLnN1YnN0cihvKzEpLC0xPT09KG89bi5pbmRleE9mKCI6IikpP2ErPWkobiwhMSk6YT0oYT1hK2kobi5zdWJzdHIoMCxvKSwhMSkrIjoiKStpKG4uc3Vic3RyKG8rMSksITEpLGErPSJAIiksLTE9PT0obz0ocz1zLnRvTG93ZXJDYXNlKCkpLmluZGV4T2YoIjoiKSk/YSs9aShzLCExKTphPShhKz1pKHMuc3Vic3RyKDAsbyksITEpKStzLnN1YnN0cihvKSksbCYmKDM8PWwubGVuZ3RoJiY0Nz09PWwuY2hhckNvZGVBdCgwKSYmNTg9PT1sLmNoYXJDb2RlQXQoMik/NjU8PShyPWwuY2hhckNvZGVBdCgxKSkmJnI8PTkwJiYobD0iLyIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUociszMiksIjoiKS5jb25jYXQobC5zdWJzdHIoMykpKToyPD1sLmxlbmd0aCYmNTg9PT1sLmNoYXJDb2RlQXQoMSkmJjY1PD0ocj1sLmNoYXJDb2RlQXQoMCkpJiZyPD05MCYmKGw9IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUociszMiksIjoiKS5jb25jYXQobC5zdWJzdHIoMikpKSxhKz1pKGwsITApKSxoJiYoYT0oYSs9Ij8iKStpKGgsITEpKSxhPWU/KGErPSIjIikrKHQ/ZTp3KGUsITEpKTphfXZhciBUPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUubWF0Y2goVCk/ZS5yZXBsYWNlKFQsZnVuY3Rpb24gdChuKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChuKX1jYXRjaChlKXtyZXR1cm4gMzxuLmxlbmd0aD9uLnN1YnN0cigwLDMpK3Qobi5zdWJzdHIoMykpOm59fSk6ZX1mdW5jdGlvbiBrKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLGE9dC5sZW5ndGg7aTxhO2krKykhciYmaSBpbiB0fHwoKHI9cnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKVtpXT10W2ldKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfXZhciBsLGU9dCg0NzApLGg9ZS5wb3NpeHx8ZTsodD1sPWx8fHt9KS5qb2luUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS53aXRoKHtwYXRoOmguam9pbi5hcHBseShoLGsoW2UucGF0aF0sdCwhMSkpfSl9LHQucmVzb2x2ZVBhdGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9ZS5wYXRofHwiLyI7cmV0dXJuIGUud2l0aCh7cGF0aDpoLnJlc29sdmUuYXBwbHkoaCxrKFtyXSx0LCExKSl9KX0sdC5kaXJuYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PWguZGlybmFtZShlLnBhdGgpO3JldHVybiAxPT09dC5sZW5ndGgmJjQ2PT09dC5jaGFyQ29kZUF0KDApP2U6ZS53aXRoKHtwYXRoOnR9KX0sdC5iYXNlbmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gaC5iYXNlbmFtZShlLnBhdGgpfSx0LmV4dG5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGguZXh0bmFtZShlLnBhdGgpfX19LGNhPXt9LGJhLmQ9KGUsdCk9Pntmb3IodmFyIG4gaW4gdCliYS5vKHQsbikmJiFiYS5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0sYmEubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksYmEucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX07dmFyIF9hPWJhKDQ0NylbIlVSSSJdO2Z1bmN0aW9uIHdhKGUpe3ZhciB0PWVbMF07cmV0dXJuIGU9dCE9PWVbZS5sZW5ndGgtMV18fCInIiE9PXQmJiciJyE9PXQ/ZTplLnN1YnN0cigxLGUubGVuZ3RoLTIpfWZ1bmN0aW9uIHZhKGUsdCxuLHIsaSxhKXt2YXIgbz13YShuKTtpZihzPW8sbD1lLmxhbmd1YWdlSWQscy5sZW5ndGgmJigiaGFuZGxlYmFycyIhPT1sfHwhL3t7fH19Ly50ZXN0KHMpKSYmL1xiKHdbXHdcZCsuLV0qOlwvXC8pP1teXHMoKTw+XSsoPzpcKFtcd1xkXStcKXwoW15bOnB1bmN0Ol1cc118XC8/KSkvLnRlc3Qocykpe28ubGVuZ3RoPG4ubGVuZ3RoJiYocisrLGktLSk7dmFyIHMsbD1mdW5jdGlvbihlLHQsbixyKXtpZighL15ccypqYXZhc2NyaXB0XDovaS50ZXN0KHQpJiYhL1tcblxyXS8udGVzdCh0KSlyZXR1cm4gdD10LnJlcGxhY2UoL15ccyovZywiIiksL15odHRwcz86XC9cLy9pLnRlc3QodCl8fC9eZmlsZTpcL1wvL2kudGVzdCh0KT90Oi9eXCMvaS50ZXN0KHQpP2UrdDovXlwvXC8vaS50ZXN0KHQpPyh4aShlLCJodHRwczovLyIpPyJodHRwcyI6Imh0dHAiKSsiOiIrdC5yZXBsYWNlKC9eXHMqL2csIiIpOm4/bi5yZXNvbHZlUmVmZXJlbmNlKHQscnx8ZSk6dH0oZS51cmksbyx0LGEpO2lmKGwmJmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gX2EucGFyc2UoZSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fShsKSlyZXR1cm57cmFuZ2U6WG4uY3JlYXRlKGUucG9zaXRpb25BdChyKSxlLnBvc2l0aW9uQXQoaSkpLHRhcmdldDpsfX19ZnVuY3Rpb24geWEoZSx0KXtmb3IodmFyIG4scj1bXSxpPV9pKGUuZ2V0VGV4dCgpLDApLGM9aS5zY2FuKCksYT12b2lkIDAsbz0hMSxzPXZvaWQgMCxkPXt9O2MhPT1NLkVPUzspe3N3aXRjaChjKXtjYXNlIE0uU3RhcnRUYWc6c3x8KG89ImJhc2UiPT09aS5nZXRUb2tlblRleHQoKS50b0xvd2VyQ2FzZSgpKTticmVhaztjYXNlIE0uQXR0cmlidXRlTmFtZTphPWkuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIE0uQXR0cmlidXRlVmFsdWU6InNyYyI9PT1hfHwiaHJlZiI9PT1hPyhuPWkuZ2V0VG9rZW5UZXh0KCksb3x8KGg9dmEoZSx0LG4saS5nZXRUb2tlbk9mZnNldCgpLGkuZ2V0VG9rZW5FbmQoKSxzKSkmJnIucHVzaChoKSxvJiZ2b2lkIDA9PT1zJiYocz13YShuKSkmJnQmJihzPXQucmVzb2x2ZVJlZmVyZW5jZShzLGUudXJpKSksbz0hMSxhPXZvaWQgMCk6ImlkIj09PWEmJihkW3dhKGkuZ2V0VG9rZW5UZXh0KCkpXT1pLmdldFRva2VuT2Zmc2V0KCkpfWM9aS5zY2FuKCl9Zm9yKHZhciB1PTAscD1yO3U8cC5sZW5ndGg7dSsrKXt2YXIgbCxoPXBbdV0sbT1lLnVyaSsiIyI7aC50YXJnZXQmJnhpKGgudGFyZ2V0LG0pJiYodm9pZCAwIT09KGw9ZFtoLnRhcmdldC5zdWJzdHIobS5sZW5ndGgpXSkmJihsPWUucG9zaXRpb25BdChsKSxoLnRhcmdldD1tKyhsLmxpbmUrMSkrIiwiKyhsLmNoYXJhY3RlcisxKSkpfXJldHVybiByfWZ1bmN0aW9uIFRhKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLG49bi5maW5kTm9kZUF0KHIpO2lmKCFuLnRhZylyZXR1cm5bXTt2YXIgcj1bXSxpPUNhKE0uU3RhcnRUYWcsZSxuLnN0YXJ0KSxlPSJudW1iZXIiPT10eXBlb2Ygbi5lbmRUYWdTdGFydCYmQ2EoTS5FbmRUYWcsZSxuLmVuZFRhZ1N0YXJ0KTtyZXR1cm4oaSYmU2EoaSx0KXx8ZSYmU2EoZSx0KSkmJihpJiZyLnB1c2goe2tpbmQ6enIuUmVhZCxyYW5nZTppfSksZSYmci5wdXNoKHtraW5kOnpyLlJlYWQscmFuZ2U6ZX0pKSxyfWZ1bmN0aW9uIGthKGUsdCl7cmV0dXJuIGUubGluZTx0LmxpbmV8fGUubGluZT09PXQubGluZSYmZS5jaGFyYWN0ZXI8PXQuY2hhcmFjdGVyfWZ1bmN0aW9uIFNhKGUsdCl7cmV0dXJuIGthKGUuc3RhcnQsdCkmJmthKHQsZS5lbmQpfWZ1bmN0aW9uIENhKGUsdCxuKXtmb3IodmFyIHI9X2kodC5nZXRUZXh0KCksbiksaT1yLnNjYW4oKTtpIT09TS5FT1MmJmkhPT1lOylpPXIuc2NhbigpO3JldHVybiBpIT09TS5FT1M/e3N0YXJ0OnQucG9zaXRpb25BdChyLmdldFRva2VuT2Zmc2V0KCkpLGVuZDp0LnBvc2l0aW9uQXQoci5nZXRUb2tlbkVuZCgpKX06bnVsbH1mdW5jdGlvbiB4YSh0LGUpe3ZhciBuPVtdO3JldHVybiBlLnJvb3RzLmZvckVhY2goZnVuY3Rpb24oZSl7IWZ1bmN0aW9uIHQobixlLHIsaSl7dmFyIGE9TGEoZSk7dmFyIG89WW4uY3JlYXRlKG4udXJpLFhuLmNyZWF0ZShuLnBvc2l0aW9uQXQoZS5zdGFydCksbi5wb3NpdGlvbkF0KGUuZW5kKSkpO289e25hbWU6YSxsb2NhdGlvbjpvLGNvbnRhaW5lck5hbWU6cixraW5kOldyLkZpZWxkfTtpLnB1c2gobyk7ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QobixlLGEsaSl9KX0odCxlLCIiLG4pfSksbn1mdW5jdGlvbiBMYShlKXt2YXIgdCxuPWUudGFnO3JldHVybiBlLmF0dHJpYnV0ZXMmJih0PWUuYXR0cmlidXRlcy5pZCxlPWUuYXR0cmlidXRlcy5jbGFzcyx0JiYobis9IiMiK3QucmVwbGFjZSgvW1wiXCddL2csIiIpKSxlJiYobis9ZS5yZXBsYWNlKC9bXCJcJ10vZywiIikuc3BsaXQoL1xzKy8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iLiIrZX0pLmpvaW4oIiIpKSksbnx8Ij8ifWZ1bmN0aW9uIEFhKGUsdCxuLHIpe3ZhciB0PWUub2Zmc2V0QXQodCkscj1yLmZpbmROb2RlQXQodCk7aWYoIXIudGFnKXJldHVybiBudWxsO2lmKCFmdW5jdGlvbihlLHQsbil7aWYoZS5lbmRUYWdTdGFydCYmZS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9dCYmdDw9ZS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtuLmxlbmd0aClyZXR1cm4hMDtyZXR1cm4gZS5zdGFydCsiPCIubGVuZ3RoPD10JiZ0PD1lLnN0YXJ0KyI8Ii5sZW5ndGgrbi5sZW5ndGh9KHIsdCxyLnRhZykpcmV0dXJuIG51bGw7dmFyIHQ9W10saT17c3RhcnQ6ZS5wb3NpdGlvbkF0KHIuc3RhcnQrIjwiLmxlbmd0aCksZW5kOmUucG9zaXRpb25BdChyLnN0YXJ0KyI8Ii5sZW5ndGgrci50YWcubGVuZ3RoKX07cmV0dXJuIHQucHVzaCh7cmFuZ2U6aSxuZXdUZXh0Om59KSxyLmVuZFRhZ1N0YXJ0JiYoaT17c3RhcnQ6ZS5wb3NpdGlvbkF0KHIuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoci5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtyLnRhZy5sZW5ndGgpfSx0LnB1c2goe3JhbmdlOmksbmV3VGV4dDpufSkpLChyPXt9KVtlLnVyaS50b1N0cmluZygpXT10LHtjaGFuZ2VzOnJ9fWZ1bmN0aW9uIEVhKGUsdCxuKXt2YXIgcix0PWUub2Zmc2V0QXQodCksbj1uLmZpbmROb2RlQXQodCk7cmV0dXJuIG4udGFnJiZuLmVuZFRhZ1N0YXJ0P24uc3RhcnQrIjwiLmxlbmd0aDw9dCYmdDw9bi5zdGFydCsiPCIubGVuZ3RoK24udGFnLmxlbmd0aD8ocj10LSI8Ii5sZW5ndGgtbi5zdGFydCtuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoLGUucG9zaXRpb25BdChyKSk6bi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9dCYmdDw9bi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtuLnRhZy5sZW5ndGg/KHI9dC0iPC8iLmxlbmd0aC1uLmVuZFRhZ1N0YXJ0K24uc3RhcnQrIjwiLmxlbmd0aCxlLnBvc2l0aW9uQXQocikpOm51bGw6bnVsbH1mdW5jdGlvbiBNYShlLHQsbil7dmFyIHQ9ZS5vZmZzZXRBdCh0KSxuPW4uZmluZE5vZGVBdCh0KSxyPW4udGFnP24udGFnLmxlbmd0aDowO3JldHVybiBuLmVuZFRhZ1N0YXJ0JiYobi5zdGFydCsiPCIubGVuZ3RoPD10JiZ0PD1uLnN0YXJ0KyI8Ii5sZW5ndGgrcnx8bi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9dCYmdDw9bi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtyKT9bWG4uY3JlYXRlKGUucG9zaXRpb25BdChuLnN0YXJ0KyI8Ii5sZW5ndGgpLGUucG9zaXRpb25BdChuLnN0YXJ0KyI8Ii5sZW5ndGgrcikpLFhuLmNyZWF0ZShlLnBvc2l0aW9uQXQobi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCksZS5wb3NpdGlvbkF0KG4uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgrcikpXTpudWxsfWZ1bmN0aW9uIFJhKGUsYyl7dmFyIHQ9X2koZS5nZXRUZXh0KCkpLGQ9dC5zY2FuKCksdT1bXSxuPVtdLHA9bnVsbCxtPS0xO2Z1bmN0aW9uIGYoZSl7dS5wdXNoKGUpLG09ZS5zdGFydExpbmV9Zm9yKDtkIT09TS5FT1M7KXtzd2l0Y2goZCl7Y2FzZSBNLlN0YXJ0VGFnOnZhciBnPXQuZ2V0VG9rZW5UZXh0KCkscj1lLnBvc2l0aW9uQXQodC5nZXRUb2tlbk9mZnNldCgpKS5saW5lO24ucHVzaCh7c3RhcnRMaW5lOnIsdGFnTmFtZTpnfSkscD1nO2JyZWFrO2Nhc2UgTS5FbmRUYWc6cD10LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTS5TdGFydFRhZ0Nsb3NlOmlmKCFwfHwheWkocCkpYnJlYWs7Y2FzZSBNLkVuZFRhZ0Nsb3NlOmNhc2UgTS5TdGFydFRhZ1NlbGZDbG9zZTpmb3IodmFyIGk9bi5sZW5ndGgtMTswPD1pJiZuW2ldLnRhZ05hbWUhPT1wOylpLS07MDw9aSYmKF89bltpXSxuLmxlbmd0aD1pLGc9ZS5wb3NpdGlvbkF0KHQuZ2V0VG9rZW5PZmZzZXQoKSkubGluZSwocj1fLnN0YXJ0TGluZSk8KGE9Zy0xKSYmbSE9PXImJmYoe3N0YXJ0TGluZTpyLGVuZExpbmU6YX0pKTticmVhaztjYXNlIE0uQ29tbWVudDp2YXIgcj1lLnBvc2l0aW9uQXQodC5nZXRUb2tlbk9mZnNldCgpKS5saW5lLGI9dC5nZXRUb2tlblRleHQoKS5tYXRjaCgvXlxzKiMocmVnaW9uXGIpfChlbmRyZWdpb25cYikvKTtpZihiKWlmKGJbMV0pbi5wdXNoKHtzdGFydExpbmU6cix0YWdOYW1lOiIifSk7ZWxzZXtmb3IodmFyIF8sYSxpPW4ubGVuZ3RoLTE7MDw9aSYmbltpXS50YWdOYW1lLmxlbmd0aDspaS0tOzA8PWkmJihfPW5baV0sbi5sZW5ndGg9aSxhPXIsKHI9Xy5zdGFydExpbmUpPGEmJm0hPT1yJiZmKHtzdGFydExpbmU6cixlbmRMaW5lOmEsa2luZDpRbi5SZWdpb259KSl9ZWxzZSByPChhPWUucG9zaXRpb25BdCh0LmdldFRva2VuT2Zmc2V0KCkrdC5nZXRUb2tlbkxlbmd0aCgpKS5saW5lKSYmZih7c3RhcnRMaW5lOnIsZW5kTGluZTphLGtpbmQ6UW4uQ29tbWVudH0pfWQ9dC5zY2FuKCl9Yz1jJiZjLnJhbmdlTGltaXR8fE51bWJlci5NQVhfVkFMVUU7aWYodS5sZW5ndGg+Yyl7dmFyIG89dSx3PWM7bz1vLnNvcnQoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnN0YXJ0TGluZS10LnN0YXJ0TGluZTtyZXR1cm4gbj0wPT09bj9lLmVuZExpbmUtdC5lbmRMaW5lOm59KTtmb3IodmFyIHM9dm9pZCAwLHY9W10seT1bXSxUPVtdLGs9ZnVuY3Rpb24oZSx0KXsoeVtlXT10KTwzMCYmKFRbdF09KFRbdF18fDApKzEpfSxsPTA7bDxvLmxlbmd0aDtsKyspe3ZhciBoPW9bbF07aWYocyl7aWYoaC5zdGFydExpbmU+cy5zdGFydExpbmUpaWYoaC5lbmRMaW5lPD1zLmVuZExpbmUpdi5wdXNoKHMpLHM9aCxrKGwsdi5sZW5ndGgpO2Vsc2UgaWYoaC5zdGFydExpbmU+cy5lbmRMaW5lKXtmb3IoOyhzPXYucG9wKCkpJiZoLnN0YXJ0TGluZT5zLmVuZExpbmU7KTtzJiZ2LnB1c2gocykscz1oLGsobCx2Lmxlbmd0aCl9fWVsc2Ugcz1oLGsobCwwKX1mb3IodmFyIFM9MCxDPTAsbD0wO2w8VC5sZW5ndGg7bCsrKXt2YXIgeD1UW2xdO2lmKHgpe2lmKHc8eCtTKXtDPWw7YnJlYWt9Uys9eH19Zm9yKHZhciBMPVtdLGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIEE9eVtsXTsibnVtYmVyIj09dHlwZW9mIEEmJihBPEN8fEE9PT1DJiZTKys8dykmJkwucHVzaChvW2xdKX1yZXR1cm4gTH1yZXR1cm4gdX1mdW5jdGlvbiBJYShvLGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1TaShlLmdldFRleHQoKSksdD1lLm9mZnNldEF0KHQpLG49bi5maW5kTm9kZUF0KHQpLHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPVtdO2Zvcig7dC5wYXJlbnQ7KShmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydFRhZ0VuZCYmZS5lbmRUYWdTdGFydCYmZS5zdGFydFRhZ0VuZDxlLmVuZFRhZ1N0YXJ0P1tbZS5zdGFydFRhZ0VuZCxlLmVuZFRhZ1N0YXJ0XSxbZS5zdGFydCxlLmVuZF1dOltbZS5zdGFydCxlLmVuZF1dfSkodD10LnBhcmVudCkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gbi5wdXNoKGUpfSk7cmV0dXJuIG59KG4pO2lmKG4uc3RhcnRUYWdFbmQmJiFuLmVuZFRhZ1N0YXJ0KXtpZihuLnN0YXJ0VGFnRW5kIT09bi5lbmQpcmV0dXJuW1tuLnN0YXJ0LG4uZW5kXV07dmFyIGk9WG4uY3JlYXRlKGUucG9zaXRpb25BdChuLnN0YXJ0VGFnRW5kLTIpLGUucG9zaXRpb25BdChuLnN0YXJ0VGFnRW5kKSk7cmV0dXJuIi8+Ij09PWUuZ2V0VGV4dChpKT9yLnVuc2hpZnQoW24uc3RhcnQrMSxuLnN0YXJ0VGFnRW5kLTJdKTpyLnVuc2hpZnQoW24uc3RhcnQrMSxuLnN0YXJ0VGFnRW5kLTFdKSxyPShpPU5hKGUsbix0KSkuY29uY2F0KHIpfWlmKCFuLnN0YXJ0VGFnRW5kfHwhbi5lbmRUYWdTdGFydClyZXR1cm4gcjtyZXR1cm4gci51bnNoaWZ0KFtuLnN0YXJ0LG4uZW5kXSksbi5zdGFydDx0JiZ0PG4uc3RhcnRUYWdFbmQ/KHIudW5zaGlmdChbbi5zdGFydCsxLG4uc3RhcnRUYWdFbmQtMV0pLGk9TmEoZSxuLHQpLHI9aS5jb25jYXQocikpOihuLnN0YXJ0VGFnRW5kPD10JiZ0PD1uLmVuZFRhZ1N0YXJ0P3IudW5zaGlmdChbbi5zdGFydFRhZ0VuZCxuLmVuZFRhZ1N0YXJ0XSk6dD49bi5lbmRUYWdTdGFydCsyJiZyLnVuc2hpZnQoW24uZW5kVGFnU3RhcnQrMixuLmVuZC0xXSkscil9KG8sZSksbj12b2lkIDAscj12b2lkIDAsaT10Lmxlbmd0aC0xOzA8PWk7aS0tKXt2YXIgYT10W2ldO24mJmFbMF09PT1uWzBdJiZhWzFdPT09blsxXXx8KHI9cXIuY3JlYXRlKFhuLmNyZWF0ZShvLnBvc2l0aW9uQXQodFtpXVswXSksby5wb3NpdGlvbkF0KHRbaV1bMV0pKSxyKSksbj1hfXJldHVybiByPXJ8fHFyLmNyZWF0ZShYbi5jcmVhdGUoZSxlKSl9KX1mdW5jdGlvbiBOYShlLHQsYyl7Zm9yKHZhciBkPVhuLmNyZWF0ZShlLnBvc2l0aW9uQXQodC5zdGFydCksZS5wb3NpdGlvbkF0KHQuZW5kKSksZT1lLmdldFRleHQoZCksbj1jLXQuc3RhcnQscj1faShlKSxpPXIuc2NhbigpLGE9dC5zdGFydCxvPVtdLHM9ITEsbD0tMTtpIT09TS5FT1M7KXtzd2l0Y2goaSl7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6aWYobjxyLmdldFRva2VuT2Zmc2V0KCkpe3M9ITE7YnJlYWt9bjw9ci5nZXRUb2tlbkVuZCgpJiZvLnVuc2hpZnQoW3IuZ2V0VG9rZW5PZmZzZXQoKSxyLmdldFRva2VuRW5kKCldKSxzPSEwLGw9ci5nZXRUb2tlbk9mZnNldCgpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZTppZighcylicmVhazt2YXIgaD1yLmdldFRva2VuVGV4dCgpO2lmKG48ci5nZXRUb2tlbk9mZnNldCgpKXtvLnB1c2goW2wsci5nZXRUb2tlbkVuZCgpXSk7YnJlYWt9bj49ci5nZXRUb2tlbk9mZnNldCgpJiZuPD1yLmdldFRva2VuRW5kKCkmJihvLnVuc2hpZnQoW3IuZ2V0VG9rZW5PZmZzZXQoKSxyLmdldFRva2VuRW5kKCldKSwoJyInPT09aFswXSYmJyInPT09aFtoLmxlbmd0aC0xXXx8IiciPT09aFswXSYmIiciPT09aFtoLmxlbmd0aC0xXSkmJm4+PXIuZ2V0VG9rZW5PZmZzZXQoKSsxJiZuPD1yLmdldFRva2VuRW5kKCktMSYmby51bnNoaWZ0KFtyLmdldFRva2VuT2Zmc2V0KCkrMSxyLmdldFRva2VuRW5kKCktMV0pLG8ucHVzaChbbCxyLmdldFRva2VuRW5kKCldKSl9aT1yLnNjYW4oKX1yZXR1cm4gby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0rYSxlWzFdK2FdfSl9dmFyIFVhPXt2ZXJzaW9uOjEuMSx0YWdzOlt7bmFtZToiaHRtbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGh0bWwgZWxlbWVudCByZXByZXNlbnRzIHRoZSByb290IG9mIGFuIEhUTUwgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6Im1hbmlmZXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIG1hbmlmZXN0IGluZGljYXRpbmcgcmVzb3VyY2VzIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCBsb2NhbGx5LiBTZWUgW1VzaW5nIHRoZSBhcHBsaWNhdGlvbiBjYWNoZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9Vc2luZ190aGVfYXBwbGljYXRpb25fY2FjaGUpIGZvciBkZXRhaWxzLiJ9fSx7bmFtZToidmVyc2lvbiIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiB0aGUgSFRNTCBbRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0RURCAiRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9uOiBJbiBIVE1MLCB0aGUgZG9jdHlwZSBpcyB0aGUgcmVxdWlyZWQgIjwhRE9DVFlQRSBodG1sPiIgcHJlYW1ibGUgZm91bmQgYXQgdGhlIHRvcCBvZiBhbGwgZG9jdW1lbnRzLiBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIHByZXZlbnQgYSBicm93c2VyIGZyb20gc3dpdGNoaW5nIGludG8gc28tY2FsbGVkIOKAnHF1aXJrcyBtb2Rl4oCdIHdoZW4gcmVuZGVyaW5nIGEgZG9jdW1lbnQ7IHRoYXQgaXMsIHRoZSAiPCFET0NUWVBFIGh0bWw+IiBkb2N0eXBlIGVuc3VyZXMgdGhhdCB0aGUgYnJvd3NlciBtYWtlcyBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgYXQgZm9sbG93aW5nIHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucywgcmF0aGVyIHRoYW4gdXNpbmcgYSBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGUgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBzb21lIHNwZWNpZmljYXRpb25zLiIpIHRoYXQgZ292ZXJucyB0aGUgY3VycmVudCBkb2N1bWVudC4gVGhpcyBhdHRyaWJ1dGUgaXMgbm90IG5lZWRlZCwgYmVjYXVzZSBpdCBpcyByZWR1bmRhbnQgd2l0aCB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbi4nfSx7bmFtZToieG1sbnMiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIFhNTCBOYW1lc3BhY2Ugb2YgdGhlIGRvY3VtZW50LiBEZWZhdWx0IHZhbHVlIGlzIGAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJgLiBUaGlzIGlzIHJlcXVpcmVkIGluIGRvY3VtZW50cyBwYXJzZWQgd2l0aCBYTUwgcGFyc2VycywgYW5kIG9wdGlvbmFsIGluIHRleHQvaHRtbCBkb2N1bWVudHMuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9odG1sIn1dfSx7bmFtZToiaGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlYWQgZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBtZXRhZGF0YSBmb3IgdGhlIERvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJwcm9maWxlIixkZXNjcmlwdGlvbjoiVGhlIFVSSXMgb2Ygb25lIG9yIG1vcmUgbWV0YWRhdGEgcHJvZmlsZXMsIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWQifV19LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpdGxlIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZG9jdW1lbnQncyB0aXRsZSBvciBuYW1lLiBBdXRob3JzIHNob3VsZCB1c2UgdGl0bGVzIHRoYXQgaWRlbnRpZnkgdGhlaXIgZG9jdW1lbnRzIGV2ZW4gd2hlbiB0aGV5IGFyZSB1c2VkIG91dCBvZiBjb250ZXh0LCBmb3IgZXhhbXBsZSBpbiBhIHVzZXIncyBoaXN0b3J5IG9yIGJvb2ttYXJrcywgb3IgaW4gc2VhcmNoIHJlc3VsdHMuIFRoZSBkb2N1bWVudCdzIHRpdGxlIGlzIG9mdGVuIGRpZmZlcmVudCBmcm9tIGl0cyBmaXJzdCBoZWFkaW5nLCBzaW5jZSB0aGUgZmlyc3QgaGVhZGluZyBkb2VzIG5vdCBoYXZlIHRvIHN0YW5kIGFsb25lIHdoZW4gdGFrZW4gb3V0IG9mIGNvbnRleHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGl0bGUifV19LHtuYW1lOiJiYXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmFzZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgdGhlIGRvY3VtZW50IGJhc2UgVVJMIGZvciB0aGUgcHVycG9zZXMgb2YgcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMsIGFuZCB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBicm93c2luZyBjb250ZXh0IGZvciB0aGUgcHVycG9zZXMgb2YgZm9sbG93aW5nIGh5cGVybGlua3MuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBhbnkgY29udGVudCBiZXlvbmQgdGhpcyBpbmZvcm1hdGlvbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgVVJMIHRvIGJlIHVzZWQgdGhyb3VnaG91dCB0aGUgZG9jdW1lbnQgZm9yIHJlbGF0aXZlIFVSTCBhZGRyZXNzZXMuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhpcyBlbGVtZW50IG11c3QgY29tZSBiZWZvcmUgYW55IG90aGVyIGVsZW1lbnRzIHdpdGggYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgYXJlIFVSTHMuIEFic29sdXRlIGFuZCByZWxhdGl2ZSBVUkxzIGFyZSBhbGxvd2VkLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHRoZSBkZWZhdWx0IGxvY2F0aW9uIHRvIGRpc3BsYXkgdGhlIHJlc3VsdCB3aGVuIGh5cGVybGlua3Mgb3IgZm9ybXMgY2F1c2UgbmF2aWdhdGlvbiwgZm9yIGVsZW1lbnRzIHRoYXQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQgdGFyZ2V0IHJlZmVyZW5jZS4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlOiB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3VsdCBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jhc2UifV19LHtuYW1lOiJsaW5rIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGluayBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGxpbmsgdGhlaXIgZG9jdW1lbnQgdG8gb3RoZXIgcmVzb3VyY2VzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFtVUkxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVJMICJVUkw6IFVuaWZvcm0gUmVzb3VyY2UgTG9jYXRvciAoVVJMKSBpcyBhIHRleHQgc3RyaW5nIHNwZWNpZnlpbmcgd2hlcmUgYSByZXNvdXJjZSBjYW4gYmUgZm91bmQgb24gdGhlIEludGVybmV0LiIpIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEEgVVJMIGNhbiBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZS4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSBtdXN0IGJlIHVzZWQgd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2UuIFtDT1JTLWVuYWJsZWQgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYGFub255bW91c2BcblxuQSBjcm9zcy1vcmlnaW4gcmVxdWVzdCAoaS5lLiB3aXRoIGFuIFtgT3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL09yaWdpbiAiVGhlIE9yaWdpbiByZXF1ZXN0IGhlYWRlciBpbmRpY2F0ZXMgd2hlcmUgYSBmZXRjaCBvcmlnaW5hdGVzIGZyb20uIEl0IGRvZXNuXCd0IGluY2x1ZGUgYW55IHBhdGggaW5mb3JtYXRpb24sIGJ1dCBvbmx5IHRoZSBzZXJ2ZXIgbmFtZS4gSXQgaXMgc2VudCB3aXRoIENPUlMgcmVxdWVzdHMsIGFzIHdlbGwgYXMgd2l0aCBQT1NUIHJlcXVlc3RzLiBJdCBpcyBzaW1pbGFyIHRvIHRoZSBSZWZlcmVyIGhlYWRlciwgYnV0LCB1bmxpa2UgdGhpcyBoZWFkZXIsIGl0IGRvZXNuXCd0IGRpc2Nsb3NlIHRoZSB3aG9sZSBwYXRoLiIpIEhUVFAgaGVhZGVyKSBpcyBwZXJmb3JtZWQsIGJ1dCBubyBjcmVkZW50aWFsIGlzIHNlbnQgKGkuZS4gbm8gY29va2llLCBYLjUwOSBjZXJ0aWZpY2F0ZSwgb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbikuIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBbYEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gIlRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gcmVzcG9uc2UgaGVhZGVyIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSBjYW4gYmUgc2hhcmVkIHdpdGggcmVxdWVzdGluZyBjb2RlIGZyb20gdGhlIGdpdmVuIG9yaWdpbi4iKSBIVFRQIGhlYWRlcikgdGhlIGltYWdlIHdpbGwgYmUgdGFpbnRlZCBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbmB1c2UtY3JlZGVudGlhbHNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBgT3JpZ2luYCBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkIGFsb25nIHdpdGggYSBjcmVkZW50aWFsIHNlbnQgKGkuZS4gYSBjb29raWUsIGNlcnRpZmljYXRlLCBhbmQvb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBpcyBwZXJmb3JtZWQpLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlICh0aHJvdWdoIFtgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgIlRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyByZXNwb25zZSBoZWFkZXIgdGVsbHMgYnJvd3NlcnMgd2hldGhlciB0byBleHBvc2UgdGhlIHJlc3BvbnNlIHRvIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSB3aGVuIHRoZSByZXF1ZXN0XCdzIGNyZWRlbnRpYWxzIG1vZGUgKFJlcXVlc3QuY3JlZGVudGlhbHMpIGlzICJpbmNsdWRlIi4iKSBIVFRQIGhlYWRlciksIHRoZSByZXNvdXJjZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbklmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luYCBIVFRQIGhlYWRlciksIHByZXZlbnRpbmcgaXRzIG5vbi10YWludGVkIHVzYWdlLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4nfX0se25hbWU6InJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgbmFtZXMgYSByZWxhdGlvbnNoaXAgb2YgdGhlIGxpbmtlZCBkb2N1bWVudCB0byB0aGUgY3VycmVudCBkb2N1bWVudC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIFtsaW5rIHR5cGVzIHZhbHVlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9MaW5rX3R5cGVzKS4ifX0se25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIG1lZGlhIHRoYXQgdGhlIGxpbmtlZCByZXNvdXJjZSBhcHBsaWVzIHRvLiBJdHMgdmFsdWUgbXVzdCBiZSBhIG1lZGlhIHR5cGUgLyBbbWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKS4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFpbmx5IHVzZWZ1bCB3aGVuIGxpbmtpbmcgdG8gZXh0ZXJuYWwgc3R5bGVzaGVldHMg4oCUIGl0IGFsbG93cyB0aGUgdXNlciBhZ2VudCB0byBwaWNrIHRoZSBiZXN0IGFkYXB0ZWQgb25lIGZvciB0aGUgZGV2aWNlIGl0IHJ1bnMgb24uXG5cbioqTm90ZXM6KipcblxuKiAgIEluIEhUTUwgNCwgdGhpcyBjYW4gb25seSBiZSBhIHNpbXBsZSB3aGl0ZS1zcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBtZWRpYSBkZXNjcmlwdGlvbiBsaXRlcmFscywgaS5lLiwgW21lZGlhIHR5cGVzIGFuZCBncm91cHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9AbWVkaWEpLCB3aGVyZSBkZWZpbmVkIGFuZCBhbGxvd2VkIGFzIHZhbHVlcyBmb3IgdGhpcyBhdHRyaWJ1dGUsIHN1Y2ggYXMgYHByaW50YCwgYHNjcmVlbmAsIGBhdXJhbGAsIGBicmFpbGxlYC4gSFRNTDUgZXh0ZW5kZWQgdGhpcyB0byBhbnkga2luZCBvZiBbbWVkaWEgcXVlcmllc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMgb2YgSFRNTCA0LlxuKiAgIEJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIFtDU1MzIE1lZGlhIFF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSB3b24ndCBuZWNlc3NhcmlseSByZWNvZ25pemUgdGhlIGFkZXF1YXRlIGxpbms7IGRvIG5vdCBmb3JnZXQgdG8gc2V0IGZhbGxiYWNrIGxpbmtzLCB0aGUgcmVzdHJpY3RlZCBzZXQgb2YgbWVkaWEgcXVlcmllcyBkZWZpbmVkIGluIEhUTUwgNC4ifX0se25hbWU6ImhyZWZsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEl0IGlzIHB1cmVseSBhZHZpc29yeS4gQWxsb3dlZCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgW0JDUDQ3XShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCkuIFVzZSB0aGlzIGF0dHJpYnV0ZSBvbmx5IGlmIHRoZSBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHR5cGUgb2YgdGhlIGNvbnRlbnQgbGlua2VkIHRvLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgYSBNSU1FIHR5cGUgc3VjaCBhcyAqKnRleHQvaHRtbCoqLCAqKnRleHQvY3NzKiosIGFuZCBzbyBvbi4gVGhlIGNvbW1vbiB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgaXMgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHN0eWxlc2hlZXQgYmVpbmcgcmVmZXJlbmNlZCAoc3VjaCBhcyAqKnRleHQvY3NzKiopLCBidXQgZ2l2ZW4gdGhhdCBDU1MgaXMgdGhlIG9ubHkgc3R5bGVzaGVldCBsYW5ndWFnZSB1c2VkIG9uIHRoZSB3ZWIsIG5vdCBvbmx5IGlzIGl0IHBvc3NpYmxlIHRvIG9taXQgdGhlIGB0eXBlYCBhdHRyaWJ1dGUsIGJ1dCBpcyBhY3R1YWxseSBub3cgcmVjb21tZW5kZWQgcHJhY3RpY2UuIEl0IGlzIGFsc28gdXNlZCBvbiBgcmVsPSJwcmVsb2FkImAgbGluayB0eXBlcywgdG8gbWFrZSBzdXJlIHRoZSBicm93c2VyIG9ubHkgZG93bmxvYWRzIGZpbGUgdHlwZXMgdGhhdCBpdCBzdXBwb3J0cy4nfX0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzaXplcyBvZiB0aGUgaWNvbnMgZm9yIHZpc3VhbCBtZWRpYSBjb250YWluZWQgaW4gdGhlIHJlc291cmNlLiBJdCBtdXN0IGJlIHByZXNlbnQgb25seSBpZiB0aGUgW2ByZWxgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGluayNhdHRyLXJlbCkgY29udGFpbnMgYSB2YWx1ZSBvZiBgaWNvbmAgb3IgYSBub24tc3RhbmRhcmQgdHlwZSBzdWNoIGFzIEFwcGxlJ3MgYGFwcGxlLXRvdWNoLWljb25gLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBhbnlgLCBtZWFuaW5nIHRoYXQgdGhlIGljb24gY2FuIGJlIHNjYWxlZCB0byBhbnkgc2l6ZSBhcyBpdCBpcyBpbiBhIHZlY3RvciBmb3JtYXQsIGxpa2UgYGltYWdlL3N2Zyt4bWxgLlxuKiAgIGEgd2hpdGUtc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygc2l6ZXMsIGVhY2ggaW4gdGhlIGZvcm1hdCBgXzx3aWR0aCBpbiBwaXhlbHM+X3hfPGhlaWdodCBpbiBwaXhlbHM+X2Agb3IgYF88d2lkdGggaW4gcGl4ZWxzPl9YXzxoZWlnaHQgaW4gcGl4ZWxzPl9gLiBFYWNoIG9mIHRoZXNlIHNpemVzIG11c3QgYmUgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS5cblxuKipOb3RlOioqIE1vc3QgaWNvbiBmb3JtYXRzIGFyZSBvbmx5IGFibGUgdG8gc3RvcmUgb25lIHNpbmdsZSBpY29uOyB0aGVyZWZvcmUgbW9zdCBvZiB0aGUgdGltZSB0aGUgW2BzaXplc2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1zaXplcykgY29udGFpbnMgb25seSBvbmUgZW50cnkuIE1TJ3MgSUNPIGZvcm1hdCBkb2VzLCBhcyB3ZWxsIGFzIEFwcGxlJ3MgSUNOUy4gSUNPIGlzIG1vcmUgdWJpcXVpdG91czsgeW91IHNob3VsZCBkZWZpbml0ZWx5IHVzZSBpdC4ifX0se25hbWU6ImFzIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIHdoZW4gYHJlbD0icHJlbG9hZCJgIG9yIGByZWw9InByZWZldGNoImAgaGFzIGJlZW4gc2V0IG9uIHRoZSBgPGxpbms+YCBlbGVtZW50LiBJdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgY29udGVudCBiZWluZyBsb2FkZWQgYnkgdGhlIGA8bGluaz5gLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIGNvbnRlbnQgcHJpb3JpdGl6YXRpb24sIHJlcXVlc3QgbWF0Y2hpbmcsIGFwcGxpY2F0aW9uIG9mIGNvcnJlY3QgW2NvbnRlbnQgc2VjdXJpdHkgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0NTUCksIGFuZCBzZXR0aW5nIG9mIGNvcnJlY3QgW2BBY2NlcHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXB0ICJUaGUgQWNjZXB0IHJlcXVlc3QgSFRUUCBoZWFkZXIgYWR2ZXJ0aXNlcyB3aGljaCBjb250ZW50IHR5cGVzLCBleHByZXNzZWQgYXMgTUlNRSB0eXBlcywgdGhlIGNsaWVudCBpcyBhYmxlIHRvIHVuZGVyc3RhbmQuIFVzaW5nIGNvbnRlbnQgbmVnb3RpYXRpb24sIHRoZSBzZXJ2ZXIgdGhlbiBzZWxlY3RzIG9uZSBvZiB0aGUgcHJvcG9zYWxzLCB1c2VzIGl0IGFuZCBpbmZvcm1zIHRoZSBjbGllbnQgb2YgaXRzIGNob2ljZSB3aXRoIHRoZSBDb250ZW50LVR5cGUgcmVzcG9uc2UgaGVhZGVyLiBCcm93c2VycyBzZXQgYWRlcXVhdGUgdmFsdWVzIGZvciB0aGlzIGhlYWRlciBkZXBlbmRpbmcgb27CoHRoZSBjb250ZXh0IHdoZXJlIHRoZSByZXF1ZXN0IGlzIGRvbmU6IHdoZW4gZmV0Y2hpbmcgYSBDU1Mgc3R5bGVzaGVldCBhIGRpZmZlcmVudCB2YWx1ZSBpcyBzZXQgZm9yIHRoZSByZXF1ZXN0IHRoYW4gd2hlbiBmZXRjaGluZyBhbiBpbWFnZSzCoHZpZGVvIG9yIGEgc2NyaXB0LiIpIHJlcXVlc3QgaGVhZGVyLid9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNlIG9mIHRoZSByZXNvdXJjZS4gUHJpb3JpdHkgaGludHMgYXJlIGRlbGVnYXRlZCB1c2luZyB0aGUgdmFsdWVzOiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjonKipgYXV0b2AqKjogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG4qKmBoaWdoYCoqOiBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipoaWdoKiogcHJpb3JpdHkuXG5cbioqYGxvd2AqKjrCoEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIHJlc291cmNlIGlzIG9mwqAqKmxvdyoqIHByaW9yaXR5LlxuXG4qKk5vdGU6KiogVGhlIGBpbXBvcnRhbmNlYCBhdHRyaWJ1dGUgbWF5IG9ubHkgYmUgdXNlZCBmb3IgdGhlIGA8bGluaz5gIGVsZW1lbnQgaWYgYHJlbD0icHJlbG9hZCJgIG9yIGByZWw9InByZWZldGNoImAgaXMgcHJlc2VudC4nfSx7bmFtZToiaW50ZWdyaXR5IixkZXNjcmlwdGlvbjoiQ29udGFpbnMgaW5saW5lIG1ldGFkYXRhIOKAlCBhIGJhc2U2NC1lbmNvZGVkIGNyeXB0b2dyYXBoaWMgaGFzaCBvZiB0aGUgcmVzb3VyY2UgKGZpbGUpIHlvdeKAmXJlIHRlbGxpbmcgdGhlIGJyb3dzZXIgdG8gZmV0Y2guIFRoZSBicm93c2VyIGNhbiB1c2UgdGhpcyB0byB2ZXJpZnkgdGhhdCB0aGUgZmV0Y2hlZCByZXNvdXJjZSBoYXMgYmVlbiBkZWxpdmVyZWQgZnJlZSBvZiB1bmV4cGVjdGVkIG1hbmlwdWxhdGlvbi4gU2VlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonQSBzdHJpbmcgaW5kaWNhdGluZyB3aGljaCByZWZlcnJlciB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgIG1lYW5zIHRoYXQgdGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgbWVhbnMgdGhhdCBubyBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IsIGlmIG5vIHBvbGljeSBpcyBvdGhlcndpc2Ugc3BlY2lmaWVkLlxuKiAgIGBvcmlnaW5gIG1lYW5zIHRoYXQgdGhlIHJlZmVycmVyIHdpbGwgYmUgdGhlIG9yaWdpbiBvZiB0aGUgcGFnZSwgd2hpY2ggaXMgcm91Z2hseSB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gIG1lYW5zIHRoYXQgbmF2aWdhdGluZyB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW5nIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyXCdzIHBhdGguXG4qICAgYHVuc2FmZS11cmxgIG1lYW5zIHRoYXQgdGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZSkuIFRoaXMgY2FzZSBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuJ30se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjonVGhlIGB0aXRsZWAgYXR0cmlidXRlIGhhcyBzcGVjaWFsIHNlbWFudGljcyBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gV2hlbiB1c2VkIG9uIGEgYDxsaW5rIHJlbD0ic3R5bGVzaGVldCI+YCBpdCBkZWZpbmVzIGEgW3ByZWZlcnJlZCBvciBhbiBhbHRlcm5hdGUgc3R5bGVzaGVldF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0FsdGVybmF0aXZlX3N0eWxlX3NoZWV0cykuIEluY29ycmVjdGx5IHVzaW5nIGl0IG1heSBbY2F1c2UgdGhlIHN0eWxlc2hlZXQgdG8gYmUgaWdub3JlZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Db3JyZWN0bHlfVXNpbmdfVGl0bGVzX1dpdGhfRXh0ZXJuYWxfU3R5bGVzaGVldHMpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGluayJ9XX0se25hbWU6Im1ldGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRhIGVsZW1lbnQgcmVwcmVzZW50cyB2YXJpb3VzIGtpbmRzIG9mIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIGV4cHJlc3NlZCB1c2luZyB0aGUgdGl0bGUsIGJhc2UsIGxpbmssIHN0eWxlLCBhbmQgc2NyaXB0IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBuYW1lIG9mIGEgcGllY2Ugb2YgZG9jdW1lbnQtbGV2ZWwgbWV0YWRhdGEuIEl0IHNob3VsZCBub3QgYmUgc2V0IGlmIG9uZSBvZiB0aGUgYXR0cmlidXRlcyBbYGl0ZW1wcm9wYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1wcm9wKSwgW2BodHRwLWVxdWl2YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1odHRwLWVxdWl2KSBvciBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGlzIGFsc28gc2V0LlxuXG5UaGlzIG1ldGFkYXRhIG5hbWUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZSBjb250YWluZWQgYnkgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlLiBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgbmFtZSBhdHRyaWJ1dGUgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uLW5hbWVgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4gdGhlIHdlYiBwYWdlLlxuICAgIFxuICAgICoqTm90ZToqKlxuICAgIFxuICAgICogICBCcm93c2VycyBtYXkgdXNlIHRoaXMgdG8gaWRlbnRpZnkgdGhlIGFwcGxpY2F0aW9uLiBJdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgW2A8dGl0bGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlICJUaGUgSFRNTCBUaXRsZSBlbGVtZW50ICg8dGl0bGU+KSBkZWZpbmVzIHRoZSBkb2N1bWVudFwncyB0aXRsZSB0aGF0IGlzIHNob3duIGluIGEgYnJvd3NlclwncyB0aXRsZSBiYXIgb3IgYSBwYWdlXCdzIHRhYi4iKSBlbGVtZW50LCB3aGljaCB1c3VhbGx5IGNvbnRhaW4gdGhlIGFwcGxpY2F0aW9uIG5hbWUsIGJ1dCBtYXkgYWxzbyBjb250YWluIGluZm9ybWF0aW9uIGxpa2UgdGhlIGRvY3VtZW50IG5hbWUgb3IgYSBzdGF0dXMuXG4gICAgKiAgIFNpbXBsZSB3ZWIgcGFnZXMgc2hvdWxkblwndCBkZWZpbmUgYW4gYXBwbGljYXRpb24tbmFtZS5cbiAgICBcbiogICBgYXV0aG9yYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBhdXRob3IuXG4qICAgYGRlc2NyaXB0aW9uYCB3aGljaCBjb250YWlucyBhIHNob3J0IGFuZCBhY2N1cmF0ZSBzdW1tYXJ5IG9mIHRoZSBjb250ZW50IG9mIHRoZSBwYWdlLiBTZXZlcmFsIGJyb3dzZXJzLCBsaWtlIEZpcmVmb3ggYW5kIE9wZXJhLCB1c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBkZXNjcmlwdGlvbiBvZiBib29rbWFya2VkIHBhZ2VzLlxuKiAgIGBnZW5lcmF0b3JgIHdoaWNoIGNvbnRhaW5zIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBzb2Z0d2FyZSB0aGF0IGdlbmVyYXRlZCB0aGUgcGFnZS5cbiogICBga2V5d29yZHNgIHdoaWNoIGNvbnRhaW5zIHdvcmRzIHJlbGV2YW50IHRvIHRoZSBwYWdlXCdzIGNvbnRlbnQgc2VwYXJhdGVkIGJ5IGNvbW1hcy5cbiogICBgcmVmZXJyZXJgIHdoaWNoIGNvbnRyb2xzIHRoZSBbYFJlZmVyZXJgIEhUVFAgaGVhZGVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgYXR0YWNoZWQgdG8gcmVxdWVzdHMgc2VudCBmcm9tIHRoZSBkb2N1bWVudDpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBgY29udGVudGAgYXR0cmlidXRlIG9mIGA8bWV0YSBuYW1lPSJyZWZlcnJlciI+YFxuICAgIFxuICAgIGBuby1yZWZlcnJlcmBcbiAgICBcbiAgICBEbyBub3Qgc2VuZCBhIEhUVFAgYFJlZmVycmVyYCBoZWFkZXIuXG4gICAgXG4gICAgYG9yaWdpbmBcbiAgICBcbiAgICBTZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgb2YgdGhlIGRvY3VtZW50LlxuICAgIFxuICAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWBcbiAgICBcbiAgICBTZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgYXMgYSByZWZlcnJlciB0byBVUkxzIGFzIHNlY3VyZSBhcyB0aGUgY3VycmVudCBwYWdlLCAoaHR0cHPihpJodHRwcyksIGJ1dCBkb2VzIG5vdCBzZW5kIGEgcmVmZXJyZXIgdG8gbGVzcyBzZWN1cmUgVVJMcyAoaHR0cHPihpJodHRwKS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuXG4gICAgXG4gICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIHRoZSBmdWxsIFVSTCAoc3RyaXBwZWQgb2YgcGFyYW1ldGVycykgZm9yIHNhbWUtb3JpZ2luIHJlcXVlc3RzLCBidXQgb25seSBzZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgZm9yIG90aGVyIGNhc2VzLlxuICAgIFxuICAgIGBzYW1lLW9yaWdpbmBcbiAgICBcbiAgICBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUtc2l0ZSBvcmlnaW5zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbmBcbiAgICBcbiAgICBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgdG8gYS1wcmlvcmkgYXMtbXVjaC1zZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUCkuXG4gICAgXG4gICAgYHVuc2FmZS1VUkxgXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiBvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBTb21lIGJyb3dzZXJzIHN1cHBvcnQgdGhlIGRlcHJlY2F0ZWQgdmFsdWVzIG9mIGBhbHdheXNgLCBgZGVmYXVsdGAsIGFuZCBgbmV2ZXJgIGZvciByZWZlcnJlci5cbiAgICAqICAgRHluYW1pY2FsbHkgaW5zZXJ0aW5nIGA8bWV0YSBuYW1lPSJyZWZlcnJlciI+YCAod2l0aCBbYGRvY3VtZW50LndyaXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3dyaXRlKSBvciBbYGFwcGVuZENoaWxkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05vZGUvYXBwZW5kQ2hpbGQpKSBtYWtlcyB0aGUgcmVmZXJyZXIgYmVoYXZpb3VyIHVucHJlZGljdGFibGUuXG4gICAgKiAgIFdoZW4gc2V2ZXJhbCBjb25mbGljdGluZyBwb2xpY2llcyBhcmUgZGVmaW5lZCwgdGhlIG5vLXJlZmVycmVyIHBvbGljeSBpcyBhcHBsaWVkLlxuICAgIFxuXG5UaGlzIGF0dHJpYnV0ZSBtYXkgYWxzbyBoYXZlIGEgdmFsdWUgdGFrZW4gZnJvbSB0aGUgZXh0ZW5kZWQgbGlzdCBkZWZpbmVkIG9uIFtXSEFUV0cgV2lraSBNZXRhRXh0ZW5zaW9ucyBwYWdlXShodHRwczovL3dpa2kud2hhdHdnLm9yZy93aWtpL01ldGFFeHRlbnNpb25zKS4gQWx0aG91Z2ggbm9uZSBoYXZlIGJlZW4gZm9ybWFsbHkgYWNjZXB0ZWQgeWV0LCBhIGZldyBjb21tb25seSB1c2VkIG5hbWVzIGFyZTpcblxuKiAgIGBjcmVhdG9yYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBjcmVhdG9yIG9mIHRoZSBkb2N1bWVudCwgc3VjaCBhcyBhbiBvcmdhbml6YXRpb24gb3IgaW5zdGl0dXRpb24uIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lLCBzZXZlcmFsIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudHMgc2hvdWxkIGJlIHVzZWQuXG4qICAgYGdvb2dsZWJvdGAsIGEgc3lub255bSBvZiBgcm9ib3RzYCwgaXMgb25seSBmb2xsb3dlZCBieSBHb29nbGVib3QgKHRoZSBpbmRleGluZyBjcmF3bGVyIGZvciBHb29nbGUpLlxuKiAgIGBwdWJsaXNoZXJgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50XCdzIHB1Ymxpc2hlci5cbiogICBgcm9ib3RzYCB3aGljaCBkZWZpbmVzIHRoZSBiZWhhdmlvdXIgdGhhdCBjb29wZXJhdGl2ZSBjcmF3bGVycywgb3IgInJvYm90cyIsIHNob3VsZCB1c2Ugd2l0aCB0aGUgcGFnZS4gSXQgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdmFsdWVzIGJlbG93OlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGNvbnRlbnQgb2YgYDxtZXRhIG5hbWU9InJvYm90cyI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBVc2VkIGJ5XG4gICAgXG4gICAgYGluZGV4YFxuICAgIFxuICAgIEFsbG93cyB0aGUgcm9ib3QgdG8gaW5kZXggdGhlIHBhZ2UgKGRlZmF1bHQpLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub2luZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSByb2JvdCB0byBub3QgaW5kZXggdGhlIHBhZ2UuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYGZvbGxvd2BcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGZvbGxvdyB0aGUgbGlua3Mgb24gdGhlIHBhZ2UgKGRlZmF1bHQpLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub2ZvbGxvd2BcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGZvbGxvdyB0aGUgbGlua3Mgb24gdGhlIHBhZ2UuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vbmVgXG4gICAgXG4gICAgRXF1aXZhbGVudCB0byBgbm9pbmRleCwgbm9mb2xsb3dgXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vd2VibWFzdGVycy9hbnN3ZXIvNzk4MTIpXG4gICAgXG4gICAgYG5vb2RwYFxuICAgIFxuICAgIFByZXZlbnRzIHVzaW5nIHRoZSBbT3BlbiBEaXJlY3RvcnkgUHJvamVjdF0oaHR0cHM6Ly93d3cuZG1vei5vcmcvKSBkZXNjcmlwdGlvbiwgaWYgYW55LCBhcyB0aGUgcGFnZSBkZXNjcmlwdGlvbiBpbiBzZWFyY2ggZW5naW5lIHJlc3VsdHMuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vd2VibWFzdGVycy9hbnN3ZXIvMzU2MjQjbm9kbW96KSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9tZXRhLXRhZ3Mtcm9ib3RzdHh0LXlhaG9vLXNlYXJjaC1zbG4yMjEzLmh0bWwjY29udDUpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub2FyY2hpdmVgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHNlYXJjaCBlbmdpbmUgbm90IHRvIGNhY2hlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpLCBbWWFob29dKGh0dHBzOi8vaGVscC55YWhvby5jb20va2Ivc2VhcmNoLWZvci1kZXNrdG9wL1NMTjIyMTMuaHRtbCksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vc25pcHBldGBcbiAgICBcbiAgICBQcmV2ZW50cyBkaXNwbGF5aW5nIGFueSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFnZSBpbiBzZWFyY2ggZW5naW5lIHJlc3VsdHMuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub2ltYWdlaW5kZXhgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhpcyBwYWdlIG5vdCB0byBhcHBlYXIgYXMgdGhlIHJlZmVycmluZyBwYWdlIG9mIGFuIGluZGV4ZWQgaW1hZ2UuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpXG4gICAgXG4gICAgYG5vY2FjaGVgXG4gICAgXG4gICAgU3lub255bSBvZiBgbm9hcmNoaXZlYC5cbiAgICBcbiAgICBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgT25seSBjb29wZXJhdGl2ZSByb2JvdHMgZm9sbG93IHRoZXNlIHJ1bGVzLiBEbyBub3QgZXhwZWN0IHRvIHByZXZlbnQgZS1tYWlsIGhhcnZlc3RlcnMgd2l0aCB0aGVtLlxuICAgICogICBUaGUgcm9ib3Qgc3RpbGwgbmVlZHMgdG8gYWNjZXNzIHRoZSBwYWdlIGluIG9yZGVyIHRvIHJlYWQgdGhlc2UgcnVsZXMuIFRvIHByZXZlbnQgYmFuZHdpZHRoIGNvbnN1bXB0aW9uLCB1c2UgYSBfW3JvYm90cy50eHRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvcm9ib3RzLnR4dCAicm9ib3RzLnR4dDogUm9ib3RzLnR4dCBpcyBhIGZpbGUgd2hpY2ggaXMgdXN1YWxseSBwbGFjZWQgaW4gdGhlIHJvb3Qgb2YgYW55IHdlYnNpdGUuIEl0IGRlY2lkZXMgd2hldGhlcsKgY3Jhd2xlcnMgYXJlIHBlcm1pdHRlZCBvciBmb3JiaWRkZW4gYWNjZXNzIHRvIHRoZSB3ZWIgc2l0ZS4iKV8gZmlsZS5cbiAgICAqICAgSWYgeW91IHdhbnQgdG8gcmVtb3ZlIGEgcGFnZSwgYG5vaW5kZXhgIHdpbGwgd29yaywgYnV0IG9ubHkgYWZ0ZXIgdGhlIHJvYm90IHZpc2l0cyB0aGUgcGFnZSBhZ2Fpbi4gRW5zdXJlIHRoYXQgdGhlIGByb2JvdHMudHh0YCBmaWxlIGlzIG5vdCBwcmV2ZW50aW5nIHJldmlzaXRzLlxuICAgICogICBTb21lIHZhbHVlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBsaWtlIGBpbmRleGAgYW5kIGBub2luZGV4YCwgb3IgYGZvbGxvd2AgYW5kIGBub2ZvbGxvd2AuIEluIHRoZXNlIGNhc2VzIHRoZSByb2JvdFwncyBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkIGFuZCBtYXkgdmFyeSBiZXR3ZWVuIHRoZW0uXG4gICAgKiAgIFNvbWUgY3Jhd2xlciByb2JvdHMsIGxpa2UgR29vZ2xlLCBZYWhvbyBhbmQgQmluZywgc3VwcG9ydCB0aGUgc2FtZSB2YWx1ZXMgZm9yIHRoZSBIVFRQIGhlYWRlciBgWC1Sb2JvdHMtVGFnYDsgdGhpcyBhbGxvd3Mgbm9uLUhUTUwgZG9jdW1lbnRzIGxpa2UgaW1hZ2VzIHRvIHVzZSB0aGVzZSBydWxlcy5cbiAgICBcbiogICBgc2x1cnBgLCBpcyBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGJ1dCBvbmx5IGZvciBTbHVycCAtIHRoZSBjcmF3bGVyIGZvciBZYWhvbyBTZWFyY2guXG4qICAgYHZpZXdwb3J0YCwgd2hpY2ggZ2l2ZXMgaGludHMgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgW3ZpZXdwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3ZpZXdwb3J0ICJ2aWV3cG9ydDogQSB2aWV3cG9ydCByZXByZXNlbnRzIGEgcG9seWdvbmFsIChub3JtYWxseSByZWN0YW5ndWxhcikgYXJlYSBpbiBjb21wdXRlciBncmFwaGljcyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyB2aWV3ZWQuIEluIHdlYiBicm93c2VyIHRlcm1zLCBpdCByZWZlcnMgdG8gdGhlIHBhcnQgb2YgdGhlIGRvY3VtZW50IHlvdVwncmUgdmlld2luZyB3aGljaCBpcyBjdXJyZW50bHkgdmlzaWJsZSBpbiBpdHMgd2luZG93IChvciB0aGUgc2NyZWVuLCBpZiB0aGUgZG9jdW1lbnQgaXMgYmVpbmcgdmlld2VkIGluIGZ1bGwgc2NyZWVuIG1vZGUpLiBDb250ZW50IG91dHNpZGUgdGhlIHZpZXdwb3J0IGlzIG5vdCB2aXNpYmxlIG9uc2NyZWVuIHVudGlsIHNjcm9sbGVkIGludG8gdmlldy4iKS4gVXNlZCBieSBtb2JpbGUgZGV2aWNlcyBvbmx5LlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGNvbnRlbnQgb2YgYDxtZXRhIG5hbWU9InZpZXdwb3J0Ij5gXG4gICAgXG4gICAgVmFsdWVcbiAgICBcbiAgICBQb3NzaWJsZSBzdWJ2YWx1ZXNcbiAgICBcbiAgICBEZXNjcmlwdGlvblxuICAgIFxuICAgIGB3aWR0aGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIgbnVtYmVyLCBvciB0aGUgdGV4dCBgZGV2aWNlLXdpZHRoYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHBpeGVsIHdpZHRoIG9mIHRoZSB2aWV3cG9ydCB0aGF0IHlvdSB3YW50IHRoZSB3ZWIgc2l0ZSB0byBiZSByZW5kZXJlZCBhdC5cbiAgICBcbiAgICBgaGVpZ2h0YFxuICAgIFxuICAgIEEgcG9zaXRpdmUgaW50ZWdlciwgb3IgdGhlIHRleHQgYGRldmljZS1oZWlnaHRgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3cG9ydC4gTm90IHVzZWQgYnkgYW55IGJyb3dzZXIuXG4gICAgXG4gICAgYGluaXRpYWwtc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgZGV2aWNlIHdpZHRoIChgZGV2aWNlLXdpZHRoYCBpbiBwb3J0cmFpdCBtb2RlIG9yIGBkZXZpY2UtaGVpZ2h0YCBpbiBsYW5kc2NhcGUgbW9kZSkgYW5kIHRoZSB2aWV3cG9ydCBzaXplLlxuICAgIFxuICAgIGBtYXhpbXVtLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIG1heGltdW0gYW1vdW50IHRvIHpvb20gaW4uIEl0IG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYG1pbmltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGBtaW5pbXVtLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIG1pbmltdW0gem9vbSBsZXZlbC4gSXQgbXVzdCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIHRoZSBgbWF4aW11bS1zY2FsZWAgb3IgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgYHVzZXItc2NhbGFibGVgXG4gICAgXG4gICAgYHllc2Agb3IgYG5vYFxuICAgIFxuICAgIElmIHNldCB0byBgbm9gLCB0aGUgdXNlciBpcyBub3QgYWJsZSB0byB6b29tIGluIHRoZSB3ZWJwYWdlLiBUaGUgZGVmYXVsdCBpcyBgeWVzYC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSwgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgU3BlY2lmaWNhdGlvblxuICAgIFxuICAgIFN0YXR1c1xuICAgIFxuICAgIENvbW1lbnRcbiAgICBcbiAgICBbQ1NTIERldmljZSBBZGFwdGF0aW9uICBcbiAgICBUaGUgZGVmaW5pdGlvbiBvZiBcJzxtZXRhIG5hbWU9InZpZXdwb3J0Ij5cJyBpbiB0aGF0IHNwZWNpZmljYXRpb24uXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWRldmljZS1hZGFwdC8jdmlld3BvcnQtbWV0YSlcbiAgICBcbiAgICBXb3JraW5nIERyYWZ0XG4gICAgXG4gICAgTm9uLW5vcm1hdGl2ZWx5IGRlc2NyaWJlcyB0aGUgVmlld3BvcnQgTUVUQSBlbGVtZW50XG4gICAgXG4gICAgU2VlIGFsc286IFtgQHZpZXdwb3J0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0B2aWV3cG9ydCAiVGhlIEB2aWV3cG9ydCBDU1MgYXQtcnVsZSBsZXRzIHlvdSBjb25maWd1cmUgdGhlIHZpZXdwb3J0IHRocm91Z2ggd2hpY2ggdGhlIGRvY3VtZW50IGlzIHZpZXdlZC4gSXRcJ3MgcHJpbWFyaWx5IHVzZWQgZm9yIG1vYmlsZSBkZXZpY2VzLCBidXQgaXMgYWxzbyB1c2VkIGJ5IGRlc2t0b3AgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGZlYXR1cmVzIGxpa2UgInNuYXAgdG8gZWRnZSIgKHN1Y2ggYXMgTWljcm9zb2Z0IEVkZ2UpLiIpXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBUaG91Z2ggdW5zdGFuZGFyZGl6ZWQsIHRoaXMgZGVjbGFyYXRpb24gaXMgcmVzcGVjdGVkIGJ5IG1vc3QgbW9iaWxlIGJyb3dzZXJzIGR1ZSB0byBkZS1mYWN0byBkb21pbmFuY2UuXG4gICAgKiAgIFRoZSBkZWZhdWx0IHZhbHVlcyBtYXkgdmFyeSBiZXR3ZWVuIGRldmljZXMgYW5kIGJyb3dzZXJzLlxuICAgICogICBUbyBsZWFybiBhYm91dCB0aGlzIGRlY2xhcmF0aW9uIGluIEZpcmVmb3ggZm9yIE1vYmlsZSwgc2VlIFt0aGlzIGFydGljbGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW9iaWxlL1ZpZXdwb3J0X21ldGFfdGFnICJNb2JpbGUvVmlld3BvcnQgbWV0YSB0YWciKS4nfX0se25hbWU6Imh0dHAtZXF1aXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0RlZmluZXMgYSBwcmFnbWEgZGlyZWN0aXZlLiBUaGUgYXR0cmlidXRlIGlzIG5hbWVkIGAqKmh0dHAtZXF1aXYqKihhbGVudClgIGJlY2F1c2UgYWxsIHRoZSBhbGxvd2VkIHZhbHVlcyBhcmUgbmFtZXMgb2YgcGFydGljdWxhciBIVFRQIGhlYWRlcnM6XG5cbiogICBgImNvbnRlbnQtbGFuZ3VhZ2UiYCAgXG4gICAgRGVmaW5lcyB0aGUgZGVmYXVsdCBsYW5ndWFnZSBvZiB0aGUgcGFnZS4gSXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIFtsYW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2xhbmcpIGF0dHJpYnV0ZSBvbiBhbnkgZWxlbWVudC5cbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gUHJlZmVyIHRoZSBgbGFuZ2AgYXR0cmlidXRlIG9uIHRoZSBbYDxodG1sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9odG1sICJUaGUgSFRNTCA8aHRtbD4gZWxlbWVudCByZXByZXNlbnRzIHRoZSByb290ICh0b3AtbGV2ZWwgZWxlbWVudCkgb2YgYW4gSFRNTCBkb2N1bWVudCwgc28gaXQgaXMgYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgcm9vdCBlbGVtZW50LiBBbGwgb3RoZXIgZWxlbWVudHMgbXVzdCBiZSBkZXNjZW5kYW50cyBvZiB0aGlzIGVsZW1lbnQuIikgZWxlbWVudC5cbiAgICBcbiogICBgImNvbnRlbnQtc2VjdXJpdHktcG9saWN5ImAgIFxuICAgIEFsbG93cyBwYWdlIGF1dGhvcnMgdG8gZGVmaW5lIGEgW2NvbnRlbnQgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9DU1AvQ1NQX3BvbGljeV9kaXJlY3RpdmVzKSBmb3IgdGhlIGN1cnJlbnQgcGFnZS4gQ29udGVudCBwb2xpY2llcyBtb3N0bHkgc3BlY2lmeSBhbGxvd2VkIHNlcnZlciBvcmlnaW5zIGFuZCBzY3JpcHQgZW5kcG9pbnRzIHdoaWNoIGhlbHAgZ3VhcmQgYWdhaW5zdCBjcm9zcy1zaXRlIHNjcmlwdGluZyBhdHRhY2tzLlxuKiAgIGAiY29udGVudC10eXBlImAgIFxuICAgIERlZmluZXMgdGhlIFtNSU1FIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvTUlNRV90eXBlKSBvZiB0aGUgZG9jdW1lbnQsIGZvbGxvd2VkIGJ5IGl0cyBjaGFyYWN0ZXIgZW5jb2RpbmcuIEl0IGZvbGxvd3MgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSBIVFRQIGBjb250ZW50LXR5cGVgIGVudGl0eS1oZWFkZXIgZmllbGQsIGJ1dCBhcyBpdCBpcyBpbnNpZGUgYSBIVE1MIHBhZ2UsIG1vc3QgdmFsdWVzIG90aGVyIHRoYW4gYHRleHQvaHRtbGAgYXJlIGltcG9zc2libGUuIFRoZXJlZm9yZSB0aGUgdmFsaWQgc3ludGF4IGZvciBpdHMgYGNvbnRlbnRgIGlzIHRoZSBzdHJpbmcgXCdgdGV4dC9odG1sYFwnIGZvbGxvd2VkIGJ5IGEgY2hhcmFjdGVyIHNldCB3aXRoIHRoZSBmb2xsb3dpbmcgc3ludGF4OiBcJ2A7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0X2BcJywgd2hlcmUgYElBTkFjaGFyc2V0YCBpcyB0aGUgX3ByZWZlcnJlZCBNSU1FIG5hbWVfIGZvciBhIGNoYXJhY3RlciBzZXQgYXMgW2RlZmluZWQgYnkgdGhlIElBTkEuXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cylcbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVXNlIHRoZSBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZSBvbiB0aGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50LlxuICAgIFxuICAgICoqTm90ZToqKiBBcyBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGNhblwndCBjaGFuZ2UgZG9jdW1lbnRzXCcgdHlwZXMgaW4gWEhUTUwgb3IgSFRNTDVcJ3MgWEhUTUwgc2VyaWFsaXphdGlvbiwgbmV2ZXIgc2V0IHRoZSBNSU1FIHR5cGUgdG8gYW4gWEhUTUwgTUlNRSB0eXBlIHdpdGggYDxtZXRhPmAuXG4gICAgXG4qICAgYCJyZWZyZXNoImAgIFxuICAgIFRoaXMgaW5zdHJ1Y3Rpb24gc3BlY2lmaWVzOlxuICAgICogICBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdW50aWwgdGhlIHBhZ2Ugc2hvdWxkIGJlIHJlbG9hZGVkIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuICAgICogICBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdW50aWwgdGhlIHBhZ2Ugc2hvdWxkIHJlZGlyZWN0IHRvIGFub3RoZXIgLSBvbmx5IGlmIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZSBjb250YWlucyBhIHBvc2l0aXZlIGludGVnZXIgZm9sbG93ZWQgYnkgdGhlIHN0cmluZyBcJ2A7dXJsPWBcJywgYW5kIGEgdmFsaWQgVVJMLlxuKiAgIGAic2V0LWNvb2tpZSJgICBcbiAgICBEZWZpbmVzIGEgW2Nvb2tpZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9jb29raWUpIGZvciB0aGUgcGFnZS4gSXRzIGNvbnRlbnQgbXVzdCBmb2xsb3cgdGhlIHN5bnRheCBkZWZpbmVkIGluIHRoZSBbSUVURiBIVFRQIENvb2tpZSBTcGVjaWZpY2F0aW9uXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwc3RhdGUtY29va2llLTE0KS5cbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGluc3RydWN0aW9uLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVXNlIHRoZSBIVFRQIGhlYWRlciBbYFNldC1Db29raWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvU2V0LUNvb2tpZSkgaW5zdGVhZC4nfX0se25hbWU6ImNvbnRlbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSB2YWx1ZSBmb3IgdGhlIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1uYW1lKSBhdHRyaWJ1dGUsIGRlcGVuZGluZyBvbiB3aGljaCBpcyB1c2VkLiJ9fSx7bmFtZToiY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVjbGFyZXMgdGhlIHBhZ2VcJ3MgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBtdXN0IGNvbnRhaW4gYSBbc3RhbmRhcmQgSUFOQSBNSU1FIG5hbWUgZm9yIGNoYXJhY3RlciBlbmNvZGluZ3NdKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzKS4gQWx0aG91Z2ggdGhlIHN0YW5kYXJkIGRvZXNuXCd0IHJlcXVlc3QgYSBzcGVjaWZpYyBlbmNvZGluZywgaXQgc3VnZ2VzdHM6XG5cbiogICBBdXRob3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHVzZSBbYFVURi04YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9VVEYtOCkuXG4qICAgQXV0aG9ycyBzaG91bGQgbm90IHVzZSBBU0NJSS1pbmNvbXBhdGlibGUgZW5jb2RpbmdzIHRvIGF2b2lkIHNlY3VyaXR5IHJpc2s6IGJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIHRoZW0gbWF5IGludGVycHJldCBoYXJtZnVsIGNvbnRlbnQgYXMgSFRNTC4gVGhpcyBoYXBwZW5zIHdpdGggdGhlIGBKSVNfQzYyMjYtMTk4M2AsIGBKSVNfWDAyMTItMTk5MGAsIGBIWi1HQi0yMzEyYCwgYEpPSEFCYCwgdGhlIElTTy0yMDIyIGZhbWlseSBhbmQgdGhlIEVCQ0RJQyBmYW1pbHkuXG5cbioqTm90ZToqKiBBU0NJSS1pbmNvbXBhdGlibGUgZW5jb2RpbmdzIGFyZSB0aG9zZSB0aGF0IGRvblwndCBtYXAgdGhlIDgtYml0IGNvZGUgcG9pbnRzIGAweDIwYCB0byBgMHg3RWAgdG8gdGhlIGAweDAwMjBgIHRvIGAweDAwN0VgIFVuaWNvZGUgY29kZSBwb2ludHMpXG5cbiogICBBdXRob3JzICoqbXVzdCBub3QqKiB1c2UgYENFU1UtOGAsIGBVVEYtN2AsIGBCT0NVLTFgIGFuZC9vciBgU0NTVWAgYXMgW2Nyb3NzLXNpdGUgc2NyaXB0aW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0Nyb3NzLXNpdGVfc2NyaXB0aW5nKSBhdHRhY2tzIHdpdGggdGhlc2UgZW5jb2RpbmdzIGhhdmUgYmVlbiBkZW1vbnN0cmF0ZWQuXG4qICAgQXV0aG9ycyBzaG91bGQgbm90IHVzZSBgVVRGLTMyYCBiZWNhdXNlIG5vdCBhbGwgSFRNTDUgZW5jb2RpbmcgYWxnb3JpdGhtcyBjYW4gZGlzdGluZ3Vpc2ggaXQgZnJvbSBgVVRGLTE2YC5cblxuKipOb3RlczoqKlxuXG4qICAgVGhlIGRlY2xhcmVkIGNoYXJhY3RlciBlbmNvZGluZyBtdXN0IG1hdGNoIHRoZSBvbmUgdGhlIHBhZ2Ugd2FzIHNhdmVkIHdpdGggdG8gYXZvaWQgZ2FyYmxlZCBjaGFyYWN0ZXJzIGFuZCBzZWN1cml0eSBob2xlcy5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IGRlY2xhcmluZyB0aGUgZW5jb2RpbmcgbXVzdCBiZSBpbnNpZGUgdGhlIFtgPGhlYWQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWQgIlRoZSBIVE1MIDxoZWFkPiBlbGVtZW50IHByb3ZpZGVzIGdlbmVyYWwgaW5mb3JtYXRpb24gKG1ldGFkYXRhKSBhYm91dCB0aGUgZG9jdW1lbnQsIGluY2x1ZGluZyBpdHMgdGl0bGUgYW5kIGxpbmtzIHRvIGl0c8Kgc2NyaXB0cyBhbmQgc3R5bGUgc2hlZXRzLiIpIGVsZW1lbnQgYW5kICoqd2l0aGluIHRoZSBmaXJzdCAxMDI0IGJ5dGVzKiogb2YgdGhlIEhUTUwgYXMgc29tZSBicm93c2VycyBvbmx5IGxvb2sgYXQgdGhvc2UgYnl0ZXMgYmVmb3JlIGNob29zaW5nIGFuIGVuY29kaW5nLlxuKiAgIFRoaXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IGlzIG9ubHkgb25lIHBhcnQgb2YgdGhlIFthbGdvcml0aG0gdG8gZGV0ZXJtaW5lIGEgcGFnZVwncyBjaGFyYWN0ZXIgc2V0XShodHRwczovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2VuY29kaW5nLXNuaWZmaW5nLWFsZ29yaXRobSAiQWxnb3JpdGhtIGNoYXJzZXQgcGFnZSIpLiBUaGUgW2BDb250ZW50LVR5cGVgIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtVHlwZSkgYW5kIGFueSBbQnl0ZS1PcmRlciBNYXJrc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9CeXRlLU9yZGVyX01hcmsgIlRoZSBkZWZpbml0aW9uIG9mIHRoYXQgdGVybSAoQnl0ZS1PcmRlciBNYXJrcykgaGFzIG5vdCBiZWVuIHdyaXR0ZW4geWV0OyBwbGVhc2UgY29uc2lkZXIgY29udHJpYnV0aW5nIGl0ISIpIG92ZXJyaWRlIHRoaXMgZWxlbWVudC5cbiogICBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhlIGNoYXJhY3RlciBlbmNvZGluZy4gSWYgYSBwYWdlXCdzIGVuY29kaW5nIGlzIHVuZGVmaW5lZCwgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZXMgYXJlIHBvc3NpYmxlLCBzdWNoIGFzIHRoZSBbYFVURi03YCBmYWxsYmFjayBjcm9zcy1zY3JpcHRpbmcgdGVjaG5pcXVlXShodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2RvY3R5cGUtbWlycm9yL3dpa2kvQXJ0aWNsZVV0ZjcpLlxuKiAgIFRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgd2l0aCBhIGBjaGFyc2V0YCBhdHRyaWJ1dGUgaXMgYSBzeW5vbnltIGZvciB0aGUgcHJlLUhUTUw1IGA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1fSUFOQWNoYXJzZXRfIj5gLCB3aGVyZSBfYElBTkFjaGFyc2V0YF8gY29udGFpbnMgdGhlIHZhbHVlIG9mIHRoZSBlcXVpdmFsZW50IFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgYXR0cmlidXRlLiBUaGlzIHN5bnRheCBpcyBzdGlsbCBhbGxvd2VkLCBhbHRob3VnaCBubyBsb25nZXIgcmVjb21tZW5kZWQuJ319LHtuYW1lOiJzY2hlbWUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzY2hlbWUgaW4gd2hpY2ggbWV0YWRhdGEgaXMgZGVzY3JpYmVkLiBBIHNjaGVtZSBpcyBhIGNvbnRleHQgbGVhZGluZyB0byB0aGUgY29ycmVjdCBpbnRlcnByZXRhdGlvbnMgb2YgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgdmFsdWUsIGxpa2UgYSBmb3JtYXQuXG5cbioqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBUaGVyZSBpcyBubyByZXBsYWNlbWVudCBhcyB0aGVyZSB3YXMgbm8gcmVhbCB1c2FnZSBmb3IgaXQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhIn1dfSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdHlsZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGVtYmVkIHN0eWxlIGluZm9ybWF0aW9uIGluIHRoZWlyIGRvY3VtZW50cy4gVGhlIHN0eWxlIGVsZW1lbnQgaXMgb25lIG9mIHNldmVyYWwgaW5wdXRzIHRvIHRoZSBzdHlsaW5nIHByb2Nlc3NpbmcgbW9kZWwuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgd2hpY2ggbWVkaWEgdGhlIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkIHRvLiBJdHMgdmFsdWUgaXMgYSBbbWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggZGVmYXVsdHMgdG8gYGFsbGAgaWYgdGhlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nLiJ9fSx7bmFtZToibm9uY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY3J5cHRvZ3JhcGhpYyBub25jZSAobnVtYmVyIHVzZWQgb25jZSkgdXNlZCB0byB3aGl0ZWxpc3QgaW5saW5lIHN0eWxlcyBpbiBhIFtzdHlsZS1zcmMgQ29udGVudC1TZWN1cml0eS1Qb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVNlY3VyaXR5LVBvbGljeS9zdHlsZS1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2XigJlzIHBvbGljeSBpcyBvdGhlcndpc2UgdHJpdmlhbC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHN0eWxpbmcgbGFuZ3VhZ2UgYXMgYSBNSU1FIHR5cGUgKGNoYXJzZXQgc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQpLiBUaGlzIGF0dHJpYnV0ZSBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gYHRleHQvY3NzYCBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkIOKAlCB0aGVyZSBpcyB2ZXJ5IGxpdHRsZSByZWFzb24gdG8gaW5jbHVkZSB0aGlzIGluIG1vZGVybiB3ZWIgZG9jdW1lbnRzLiJ9fSx7bmFtZToic2NvcGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyBbYWx0ZXJuYXRpdmUgc3R5bGUgc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpIHNldHMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSJ9XX0se25hbWU6ImJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBib2R5IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29udGVudCBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6Im9uYWZ0ZXJwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCBhZnRlciB0aGUgdXNlciBoYXMgcHJpbnRlZCB0aGUgZG9jdW1lbnQuIn19LHtuYW1lOiJvbmJlZm9yZXByaW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgcmVxdWVzdHMgcHJpbnRpbmcgb2YgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmV1bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaXMgYWJvdXQgdG8gYmUgdW5sb2FkZWQuIn19LHtuYW1lOiJvbmhhc2hjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZnJhZ21lbnQgaWRlbnRpZmllciBwYXJ0IChzdGFydGluZyB3aXRoIHRoZSBoYXNoIChgJyMnYCkgY2hhcmFjdGVyKSBvZiB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGFkZHJlc3MgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbmxhbmd1YWdlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHByZWZlcnJlZCBsYW5ndWFnZXMgY2hhbmdlZC4ifX0se25hbWU6Im9ubWVzc2FnZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgcmVjZWl2ZWQgYSBtZXNzYWdlLiJ9fSx7bmFtZToib25vZmZsaW5lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gbmV0d29yayBjb21tdW5pY2F0aW9uIGhhcyBmYWlsZWQuIn19LHtuYW1lOiJvbm9ubGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgYmVlbiByZXN0b3JlZC4ifX0se25hbWU6Im9ucGFnZWhpZGUifSx7bmFtZToib25wYWdlc2hvdyJ9LHtuYW1lOiJvbnBvcHN0YXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG5hdmlnYXRlZCBzZXNzaW9uIGhpc3RvcnkuIn19LHtuYW1lOiJvbnN0b3JhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgc3RvcmFnZSBhcmVhIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib251bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaXMgZ29pbmcgYXdheS4ifX0se25hbWU6ImFsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgaHlwZXJsaW5rcyB3aGVuIHNlbGVjdGVkLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDphY3RpdmVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmFjdGl2ZSAiVGhlIDphY3RpdmUgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgKHN1Y2ggYXMgYSBidXR0b24pIHRoYXQgaXMgYmVpbmcgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfSx7bmFtZToiYmFja2dyb3VuZCIsZGVzY3JpcHRpb246J1VSSSBvZiBhIGltYWdlIHRvIHVzZSBhcyBhIGJhY2tncm91bmQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZCAiVGhlIGJhY2tncm91bmQgc2hvcnRoYW5kIENTUyBwcm9wZXJ0eSBzZXRzIGFsbCBiYWNrZ3JvdW5kIHN0eWxlIHByb3BlcnRpZXMgYXQgb25jZSwgc3VjaCBhcyBjb2xvciwgaW1hZ2UsIG9yaWdpbiBhbmQgc2l6ZSwgb3IgcmVwZWF0IG1ldGhvZC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J0JhY2tncm91bmQgY29sb3IgZm9yIHRoZSBkb2N1bWVudC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJib3R0b21tYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBib3R0b20gb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1ib3R0b21gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJvdHRvbSAiVGhlIG1hcmdpbi1ib3R0b20gQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBib3R0b20gb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToibGVmdG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIGxlZnQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1sZWZ0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1sZWZ0ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIHVudmlzaXRlZCBoeXBlcnRleHQgbGlua3MuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOmxpbmtgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmxpbmsgIlRoZSA6bGluayBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBub3QgeWV0IGJlZW4gdmlzaXRlZC4gSXQgbWF0Y2hlcyBldmVyeSB1bnZpc2l0ZWQgPGE+LCA8YXJlYT4sIG9yIDxsaW5rPiBlbGVtZW50IHRoYXQgaGFzIGFuIGhyZWYgYXR0cmlidXRlLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfSx7bmFtZToib25ibHVyIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBsb3NlcyBmb2N1cy4ifSx7bmFtZToib25lcnJvciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgZmFpbHMgdG8gbG9hZCBwcm9wZXJseS4ifSx7bmFtZToib25mb2N1cyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgcmVjZWl2ZXMgZm9jdXMuIn0se25hbWU6Im9ubG9hZCIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn0se25hbWU6Im9ucmVkbyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbW92ZWQgZm9yd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgYmVlbiByZXNpemVkLiJ9LHtuYW1lOiJvbnVuZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGJhY2t3YXJkIGluIHVuZG8gdHJhbnNhY3Rpb24gaGlzdG9yeS4ifSx7bmFtZToicmlnaHRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSByaWdodCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLXJpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246J0ZvcmVncm91bmQgY29sb3Igb2YgdGV4dC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRvcG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIHRvcCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLXRvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tdG9wICJUaGUgbWFyZ2luLXRvcCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ2bGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIHZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDp2aXNpdGVkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzp2aXNpdGVkICJUaGUgOnZpc2l0ZWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGxpbmtzIHRoYXQgdGhlIHVzZXIgaGFzIGFscmVhZHkgdmlzaXRlZC4gRm9yIHByaXZhY3kgcmVhc29ucywgdGhlIHN0eWxlcyB0aGF0IGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGlzIHNlbGVjdG9yIGFyZSB2ZXJ5IGxpbWl0ZWQuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYm9keSJ9XX0se25hbWU6ImFydGljbGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhcnRpY2xlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbXBsZXRlLCBvciBzZWxmLWNvbnRhaW5lZCwgY29tcG9zaXRpb24gaW4gYSBkb2N1bWVudCwgcGFnZSwgYXBwbGljYXRpb24sIG9yIHNpdGUgYW5kIHRoYXQgaXMsIGluIHByaW5jaXBsZSwgaW5kZXBlbmRlbnRseSBkaXN0cmlidXRhYmxlIG9yIHJldXNhYmxlLCBlLmcuIGluIHN5bmRpY2F0aW9uLiBUaGlzIGNvdWxkIGJlIGEgZm9ydW0gcG9zdCwgYSBtYWdhemluZSBvciBuZXdzcGFwZXIgYXJ0aWNsZSwgYSBibG9nIGVudHJ5LCBhIHVzZXItc3VibWl0dGVkIGNvbW1lbnQsIGFuIGludGVyYWN0aXZlIHdpZGdldCBvciBnYWRnZXQsIG9yIGFueSBvdGhlciBpbmRlcGVuZGVudCBpdGVtIG9mIGNvbnRlbnQuIEVhY2ggYXJ0aWNsZSBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKGgx4oCTaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgYXJ0aWNsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FydGljbGUifV19LHtuYW1lOiJzZWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2VjdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBnZW5lcmljIHNlY3Rpb24gb2YgYSBkb2N1bWVudCBvciBhcHBsaWNhdGlvbi4gQSBzZWN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGlzIGEgdGhlbWF0aWMgZ3JvdXBpbmcgb2YgY29udGVudC4gRWFjaCBzZWN0aW9uIHNob3VsZCBiZSBpZGVudGlmaWVkLCB0eXBpY2FsbHkgYnkgaW5jbHVkaW5nIGEgaGVhZGluZyAoIGgxLSBoNiBlbGVtZW50KSBhcyBhIGNoaWxkIG9mIHRoZSBzZWN0aW9uIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VjdGlvbiJ9XX0se25hbWU6Im5hdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hdiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGxpbmtzIHRvIG90aGVyIHBhZ2VzIG9yIHRvIHBhcnRzIHdpdGhpbiB0aGUgcGFnZTogYSBzZWN0aW9uIHdpdGggbmF2aWdhdGlvbiBsaW5rcy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9uYXYifV19LHtuYW1lOiJhc2lkZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFzaWRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gb2YgYSBwYWdlIHRoYXQgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIHRhbmdlbnRpYWxseSByZWxhdGVkIHRvIHRoZSBjb250ZW50IGFyb3VuZCB0aGUgYXNpZGUgZWxlbWVudCwgYW5kIHdoaWNoIGNvdWxkIGJlIGNvbnNpZGVyZWQgc2VwYXJhdGUgZnJvbSB0aGF0IGNvbnRlbnQuIFN1Y2ggc2VjdGlvbnMgYXJlIG9mdGVuIHJlcHJlc2VudGVkIGFzIHNpZGViYXJzIGluIHByaW50ZWQgdHlwb2dyYXBoeS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hc2lkZSJ9XX0se25hbWU6ImgxIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDEgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoMiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMyBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDQgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImhlYWRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlYWRlciBlbGVtZW50IHJlcHJlc2VudHMgaW50cm9kdWN0b3J5IGNvbnRlbnQgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBoZWFkZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGEgZ3JvdXAgb2YgaW50cm9kdWN0b3J5IG9yIG5hdmlnYXRpb25hbCBhaWRzLiBXaGVuIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudCBpcyB0aGUgYm9keSBlbGVtZW50LCB0aGVuIGl0IGFwcGxpZXMgdG8gdGhlIHdob2xlIHBhZ2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZGVyIn1dfSx7bmFtZToiZm9vdGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZm9vdGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZvb3RlciBmb3IgaXRzIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50LiBBIGZvb3RlciB0eXBpY2FsbHkgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHNlY3Rpb24gc3VjaCBhcyB3aG8gd3JvdGUgaXQsIGxpbmtzIHRvIHJlbGF0ZWQgZG9jdW1lbnRzLCBjb3B5cmlnaHQgZGF0YSwgYW5kIHRoZSBsaWtlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvb3RlciJ9XX0se25hbWU6ImFkZHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhZGRyZXNzIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgaXRzIG5lYXJlc3QgYXJ0aWNsZSBvciBib2R5IGVsZW1lbnQgYW5jZXN0b3IuIElmIHRoYXQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBhcHBsaWVzIHRvIHRoZSBkb2N1bWVudCBhcyBhIHdob2xlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FkZHJlc3MifV19LHtuYW1lOiJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcCBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJhZ3JhcGguIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcCJ9XX0se25hbWU6ImhyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaHIgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLWxldmVsIHRoZW1hdGljIGJyZWFrLCBlLmcuIGEgc2NlbmUgY2hhbmdlIGluIGEgc3RvcnksIG9yIGEgdHJhbnNpdGlvbiB0byBhbm90aGVyIHRvcGljIHdpdGhpbiBhIHNlY3Rpb24gb2YgYSByZWZlcmVuY2UgYm9vay4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UuIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYGxlZnRgLiJ9LHtuYW1lOiJjb2xvciIsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBydWxlIHRocm91Z2ggY29sb3IgbmFtZSBvciBoZXhhZGVjaW1hbCB2YWx1ZS4ifSx7bmFtZToibm9zaGFkZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIHJ1bGUgdG8gaGF2ZSBubyBzaGFkaW5nLiJ9LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgaGVpZ2h0LCBpbiBwaXhlbHMsIG9mIHRoZSBydWxlLiJ9LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246IlNldHMgdGhlIGxlbmd0aCBvZiB0aGUgcnVsZSBvbiB0aGUgcGFnZSB0aHJvdWdoIGEgcGl4ZWwgb3IgcGVyY2VudGFnZSB2YWx1ZS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hyIn1dfSx7bmFtZToicHJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcHJlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJsb2NrIG9mIHByZWZvcm1hdHRlZCB0ZXh0LCBpbiB3aGljaCBzdHJ1Y3R1cmUgaXMgcmVwcmVzZW50ZWQgYnkgdHlwb2dyYXBoaWMgY29udmVudGlvbnMgcmF0aGVyIHRoYW4gYnkgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gSXQgd2FzIGEgbm9uLXN0YW5kYXJkIHN5bm9ueW0gb2YgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUjYXR0ci13aWR0aCkuIFRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aWR0aCAiVGhlIHdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIGFuIGVsZW1lbnRcJ3Mgd2lkdGguIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgYnV0IGlmIGJveC1zaXppbmcgaXMgc2V0IHRvIGJvcmRlci1ib3gsIGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgYXJlYS4iKSBpbnN0ZWFkLid9LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246J0NvbnRhaW5zIHRoZSBfcHJlZmVycmVkXyBjb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgYSBsaW5lIHNob3VsZCBoYXZlLiBUaG91Z2ggdGVjaG5pY2FsbHkgc3RpbGwgaW1wbGVtZW50ZWQsIHRoaXMgYXR0cmlidXRlIGhhcyBubyB2aXN1YWwgZWZmZWN0OyB0byBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246J0lzIGEgX2hpbnRfIGluZGljYXRpbmcgaG93IHRoZSBvdmVyZmxvdyBtdXN0IGhhcHBlbi4gSW4gbW9kZXJuIGJyb3dzZXIgdGhpcyBoaW50IGlzIGlnbm9yZWQgYW5kIG5vIHZpc3VhbCBlZmZlY3QgcmVzdWx0cyBpbiBpdHMgcHJlc2VudDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdoaXRlLXNwYWNlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3doaXRlLXNwYWNlICJUaGUgd2hpdGUtc3BhY2UgQ1NTIHByb3BlcnR5IHNldHMgaG93IHdoaXRlIHNwYWNlIGluc2lkZSBhbiBlbGVtZW50IGlzIGhhbmRsZWQuIikgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ByZSJ9XX0se25hbWU6ImJsb2NrcXVvdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBibG9ja3F1b3RlIGVsZW1lbnQgcmVwcmVzZW50cyBjb250ZW50IHRoYXQgaXMgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGNpdGF0aW9uIHdoaWNoIG11c3QgYmUgd2l0aGluIGEgZm9vdGVyIG9yIGNpdGUgZWxlbWVudCwgYW5kIG9wdGlvbmFsbHkgd2l0aCBpbi1saW5lIGNoYW5nZXMgc3VjaCBhcyBhbm5vdGF0aW9ucyBhbmQgYWJicmV2aWF0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBVUkwgdGhhdCBkZXNpZ25hdGVzIGEgc291cmNlIGRvY3VtZW50IG9yIG1lc3NhZ2UgZm9yIHRoZSBpbmZvcm1hdGlvbiBxdW90ZWQuIFRoaXMgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHBvaW50IHRvIGluZm9ybWF0aW9uIGV4cGxhaW5pbmcgdGhlIGNvbnRleHQgb3IgdGhlIHJlZmVyZW5jZSBmb3IgdGhlIHF1b3RlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jsb2NrcXVvdGUifV19LHtuYW1lOiJvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9sIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3Qgb2YgaXRlbXMsIHdoZXJlIHRoZSBpdGVtcyBoYXZlIGJlZW4gaW50ZW50aW9uYWxseSBvcmRlcmVkLCBzdWNoIHRoYXQgY2hhbmdpbmcgdGhlIG9yZGVyIHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InJldmVyc2VkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgYXJlIHNwZWNpZmllZCBpbiByZXZlcnNlZCBvcmRlci4ifX0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGludGVnZXIgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgc3RhcnQgdmFsdWUgZm9yIG51bWJlcmluZyB0aGUgaW5kaXZpZHVhbCBsaXN0IGl0ZW1zLiBBbHRob3VnaCB0aGUgb3JkZXJpbmcgdHlwZSBvZiBsaXN0IGVsZW1lbnRzIG1pZ2h0IGJlIFJvbWFuIG51bWVyYWxzLCBzdWNoIGFzIFhYWEksIG9yIGxldHRlcnMsIHRoZSB2YWx1ZSBvZiBzdGFydCBpcyBhbHdheXMgcmVwcmVzZW50ZWQgYXMgYSBudW1iZXIuIFRvIHN0YXJ0IG51bWJlcmluZyBlbGVtZW50cyBmcm9tIHRoZSBsZXR0ZXIgIkMiLCB1c2UgYDxvbCBzdGFydD0iMyI+YC5cblxuKipOb3RlKio6IFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1Lid9fSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6Imx0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIG51bWJlcmluZyB0eXBlOlxuXG4qICAgYCdhJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBsZXR0ZXJzLFxuKiAgIGAnQSdgIGluZGljYXRlcyB1cHBlcmNhc2UgbGV0dGVycyxcbiogICBgJ2knYCBpbmRpY2F0ZXMgbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGAnSSdgIGluZGljYXRlcyB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHMsXG4qICAgYW5kIGAnMSdgIGluZGljYXRlcyBudW1iZXJzIChkZWZhdWx0KS5cblxuVGhlIHR5cGUgc2V0IGlzIHVzZWQgZm9yIHRoZSBlbnRpcmUgbGlzdCB1bmxlc3MgYSBkaWZmZXJlbnQgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpI2F0dHItdHlwZSkgYXR0cmlidXRlIGlzIHVzZWQgd2l0aGluIGFuIGVuY2xvc2VkIFtgPGxpPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSBcIlRoZSBIVE1MIDxsaT4gZWxlbWVudCBpcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBpdGVtIGluIGEgbGlzdC4gSXQgbXVzdCBiZSBjb250YWluZWQgaW4gYSBwYXJlbnQgZWxlbWVudDogYW4gb3JkZXJlZCBsaXN0ICg8b2w+KSwgYW4gdW5vcmRlcmVkIGxpc3QgKDx1bD4pLCBvciBhIG1lbnUgKDxtZW51PikuIEluIG1lbnVzIGFuZCB1bm9yZGVyZWQgbGlzdHMsIGxpc3QgaXRlbXMgYXJlIHVzdWFsbHkgZGlzcGxheWVkIHVzaW5nIGJ1bGxldCBwb2ludHMuIEluIG9yZGVyZWQgbGlzdHMsIHRoZXkgYXJlIHVzdWFsbHkgZGlzcGxheWVkIHdpdGggYW4gYXNjZW5kaW5nIGNvdW50ZXIgb24gdGhlIGxlZnQsIHN1Y2ggYXMgYSBudW1iZXIgb3IgbGV0dGVyLlwiKSBlbGVtZW50LlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cblVubGVzcyB0aGUgdmFsdWUgb2YgdGhlIGxpc3QgbnVtYmVyIG1hdHRlcnMgKGUuZy4gaW4gbGVnYWwgb3IgdGVjaG5pY2FsIGRvY3VtZW50cyB3aGVyZSBpdGVtcyBhcmUgdG8gYmUgcmVmZXJlbmNlZCBieSB0aGVpciBudW1iZXIvbGV0dGVyKSwgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgXCJUaGUgbGlzdC1zdHlsZS10eXBlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJrZXIgKHN1Y2ggYXMgYSBkaXNjLCBjaGFyYWN0ZXIsIG9yIGN1c3RvbSBjb3VudGVyIHN0eWxlKSBvZiBhIGxpc3QgaXRlbSBlbGVtZW50LlwiKSBwcm9wZXJ0eSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiJ9fSx7bmFtZToiY29tcGFjdCIsZGVzY3JpcHRpb246J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaGludHMgdGhhdCB0aGUgbGlzdCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYSBjb21wYWN0IHN0eWxlLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBhdHRyaWJ1dGUgZGVwZW5kcyBvbiB0aGUgdXNlciBhZ2VudCBhbmQgaXQgZG9lc25cJ3Qgd29yayBpbiBhbGwgYnJvd3NlcnMuXG5cbioqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gZ2l2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byB0aGUgYGNvbXBhY3RgIGF0dHJpYnV0ZSwgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0eSBbYGxpbmUtaGVpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpbmUtaGVpZ2h0ICJUaGUgbGluZS1oZWlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGFtb3VudCBvZiBzcGFjZSB1c2VkIGZvciBsaW5lcywgc3VjaCBhcyBpbiB0ZXh0LiBPbiBibG9jay1sZXZlbCBlbGVtZW50cywgaXQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGhlaWdodCBvZiBsaW5lIGJveGVzIHdpdGhpbiB0aGUgZWxlbWVudC4gT24gbm9uLXJlcGxhY2VkIGlubGluZSBlbGVtZW50cywgaXQgc3BlY2lmaWVzIHRoZSBoZWlnaHQgdGhhdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSBsaW5lIGJveCBoZWlnaHQuIikgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wifV19LHtuYW1lOiJ1bCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3Qgb2YgaXRlbXMsIHdoZXJlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaXMgbm90IGltcG9ydGFudCDigJQgdGhhdCBpcywgd2hlcmUgY2hhbmdpbmcgdGhlIG9yZGVyIHdvdWxkIG5vdCBtYXRlcmlhbGx5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKlVzYWdlIG5vdGU6wqAqKkRvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHRoZSBbYDx1bD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwgIlRoZSBIVE1MIDx1bD4gZWxlbWVudCByZXByZXNlbnRzIGFuIHVub3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBidWxsZXRlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYSBzaW1pbGFyIGVmZmVjdCBhcyB0aGUgYGNvbXBhY3RgIGF0dHJpYnV0ZSwgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0eSBbbGluZS1oZWlnaHRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2xpbmUtaGVpZ2h0KSBjYW4gYmUgdXNlZCB3aXRoIGEgdmFsdWUgb2YgYDgwJWAuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCJ9XX0se25hbWU6ImxpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGkgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBpdGVtLiBJZiBpdHMgcGFyZW50IGVsZW1lbnQgaXMgYW4gb2wsIHVsLCBvciBtZW51IGVsZW1lbnQsIHRoZW4gdGhlIGVsZW1lbnQgaXMgYW4gaXRlbSBvZiB0aGUgcGFyZW50IGVsZW1lbnQncyBsaXN0LCBhcyBkZWZpbmVkIGZvciB0aG9zZSBlbGVtZW50cy4gT3RoZXJ3aXNlLCB0aGUgbGlzdCBpdGVtIGhhcyBubyBkZWZpbmVkIGxpc3QtcmVsYXRlZCByZWxhdGlvbnNoaXAgdG8gYW55IG90aGVyIGxpIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGludGVnZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgY3VycmVudCBvcmRpbmFsIHZhbHVlIG9mIHRoZSBsaXN0IGl0ZW0gYXMgZGVmaW5lZCBieSB0aGUgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudC4gVGhlIG9ubHkgYWxsb3dlZCB2YWx1ZSBmb3IgdGhpcyBhdHRyaWJ1dGUgaXMgYSBudW1iZXIsIGV2ZW4gaWYgdGhlIGxpc3QgaXMgZGlzcGxheWVkIHdpdGggUm9tYW4gbnVtZXJhbHMgb3IgbGV0dGVycy4gTGlzdCBpdGVtcyB0aGF0IGZvbGxvdyB0aGlzIG9uZSBjb250aW51ZSBudW1iZXJpbmcgZnJvbSB0aGUgdmFsdWUgc2V0LiBUaGUgKip2YWx1ZSoqIGF0dHJpYnV0ZSBoYXMgbm8gbWVhbmluZyBmb3IgdW5vcmRlcmVkIGxpc3RzIChbYDx1bD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwgIlRoZSBIVE1MIDx1bD4gZWxlbWVudCByZXByZXNlbnRzIGFuIHVub3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBidWxsZXRlZCBsaXN0LiIpKSBvciBmb3IgbWVudXMgKFtgPG1lbnU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21lbnUgIlRoZSBIVE1MIDxtZW51PiBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBjb21tYW5kcyB0aGF0IGEgdXNlciBjYW4gcGVyZm9ybSBvciBhY3RpdmF0ZS4gVGhpcyBpbmNsdWRlcyBib3RoIGxpc3QgbWVudXMsIHdoaWNoIG1pZ2h0IGFwcGVhciBhY3Jvc3MgdGhlIHRvcCBvZiBhIHNjcmVlbiwgYXMgd2VsbCBhcyBjb250ZXh0IG1lbnVzLCBzdWNoIGFzIHRob3NlIHRoYXQgbWlnaHQgYXBwZWFyIHVuZGVybmVhdGggYSBidXR0b24gYWZ0ZXIgaXQgaGFzIGJlZW4gY2xpY2tlZC4iKSkuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS5cblxuKipOb3RlOioqIFByaW9yIHRvIEdlY2tvwqA5LjAsIG5lZ2F0aXZlIHZhbHVlcyB3ZXJlIGluY29ycmVjdGx5IGNvbnZlcnRlZCB0byAwLiBTdGFydGluZyBpbiBHZWNrb8KgOS4wIGFsbCBpbnRlZ2VyIHZhbHVlcyBhcmUgY29ycmVjdGx5IHBhcnNlZC4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidUaGlzIGNoYXJhY3RlciBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGBhYDogbG93ZXJjYXNlIGxldHRlcnNcbiogICBgQWA6IHVwcGVyY2FzZSBsZXR0ZXJzXG4qICAgYGlgOiBsb3dlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgSWA6IHVwcGVyY2FzZSBSb21hbiBudW1lcmFsc1xuKiAgIGAxYDogbnVtYmVyc1xuXG5UaGlzIHR5cGUgb3ZlcnJpZGVzIHRoZSBvbmUgdXNlZCBieSBpdHMgcGFyZW50IFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQsIGlmIGFueS5cblxuKipVc2FnZSBub3RlOioqIFRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHVzZSB0aGUgQ1NTIFtgbGlzdC1zdHlsZS10eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtdHlwZSAiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkifV19LHtuYW1lOiJkbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRsIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhc3NvY2lhdGlvbiBsaXN0IGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG5hbWUtdmFsdWUgZ3JvdXBzIChhIGRlc2NyaXB0aW9uIGxpc3QpLiBBIG5hbWUtdmFsdWUgZ3JvdXAgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgbmFtZXMgKGR0IGVsZW1lbnRzKSBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSB2YWx1ZXMgKGRkIGVsZW1lbnRzKSwgaWdub3JpbmcgYW55IG5vZGVzIG90aGVyIHRoYW4gZHQgYW5kIGRkIGVsZW1lbnRzLiBXaXRoaW4gYSBzaW5nbGUgZGwgZWxlbWVudCwgdGhlcmUgc2hvdWxkIG5vdCBiZSBtb3JlIHRoYW4gb25lIGR0IGVsZW1lbnQgZm9yIGVhY2ggbmFtZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kbCJ9XX0se25hbWU6ImR0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHQgZWxlbWVudCByZXByZXNlbnRzIHRoZSB0ZXJtLCBvciBuYW1lLCBwYXJ0IG9mIGEgdGVybS1kZXNjcmlwdGlvbiBncm91cCBpbiBhIGRlc2NyaXB0aW9uIGxpc3QgKGRsIGVsZW1lbnQpLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2R0In1dfSx7bmFtZToiZGQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uLCBkZWZpbml0aW9uLCBvciB2YWx1ZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiSWYgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBgeWVzYCwgdGhlIGRlZmluaXRpb24gdGV4dCB3aWxsIG5vdCB3cmFwLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgbm9gLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGQifV19LHtuYW1lOiJmaWd1cmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWd1cmUgZWxlbWVudCByZXByZXNlbnRzIHNvbWUgZmxvdyBjb250ZW50LCBvcHRpb25hbGx5IHdpdGggYSBjYXB0aW9uLCB0aGF0IGlzIHNlbGYtY29udGFpbmVkIChsaWtlIGEgY29tcGxldGUgc2VudGVuY2UpIGFuZCBpcyB0eXBpY2FsbHkgcmVmZXJlbmNlZCBhcyBhIHNpbmdsZSB1bml0IGZyb20gdGhlIG1haW4gZmxvdyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmlndXJlIn1dfSx7bmFtZToiZmlnY2FwdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZ2NhcHRpb24gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBvciBsZWdlbmQgZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlnY2FwdGlvbiBlbGVtZW50J3MgcGFyZW50IGZpZ3VyZSBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmlnY2FwdGlvbiJ9XX0se25hbWU6Im1haW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYWluIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbWFpbiBjb250ZW50IG9mIHRoZSBib2R5IG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIFRoZSBtYWluIGNvbnRlbnQgYXJlYSBjb25zaXN0cyBvZiBjb250ZW50IHRoYXQgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBvciBleHBhbmRzIHVwb24gdGhlIGNlbnRyYWwgdG9waWMgb2YgYSBkb2N1bWVudCBvciBjZW50cmFsIGZ1bmN0aW9uYWxpdHkgb2YgYW4gYXBwbGljYXRpb24uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFpbiJ9XX0se25hbWU6ImRpdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpdiBlbGVtZW50IGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYXQgYWxsLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4gSXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgY2xhc3MsIGxhbmcsIGFuZCB0aXRsZSBhdHRyaWJ1dGVzIHRvIG1hcmsgdXAgc2VtYW50aWNzIGNvbW1vbiB0byBhIGdyb3VwIG9mIGNvbnNlY3V0aXZlIGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpdiJ9XX0se25hbWU6ImEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBhIGVsZW1lbnQgaGFzIGFuIGhyZWYgYXR0cmlidXRlLCB0aGVuIGl0IHJlcHJlc2VudHMgYSBoeXBlcmxpbmsgKGEgaHlwZXJ0ZXh0IGFuY2hvcikgbGFiZWxlZCBieSBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgVVJMIG9yIGEgVVJMIGZyYWdtZW50IHRoYXQgdGhlIGh5cGVybGluayBwb2ludHMgdG8uIn19LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NwZWNpZmllcyB3aGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLiBJdCBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XzogYSB0YWIsIHdpbmRvdywgb3IgYDxpZnJhbWU+YC4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgVVJMIGludG8gYSBuZXcgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBpcyB1c3VhbGx5IGEgdGFiLCBidXQgdXNlcnMgY2FuIGNvbmZpZ3VyZSBicm93c2VycyB0byB1c2UgbmV3IHdpbmRvd3MgaW5zdGVhZC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgImhpZ2hlc3QiIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG5cbioqTm90ZToqKiBXaGVuIHVzaW5nIGB0YXJnZXRgLCBjb25zaWRlciBhZGRpbmcgYHJlbD0ibm9yZWZlcnJlciJgIHRvIGF2b2lkIGV4cGxvaXRhdGlvbiBvZiB0aGUgYHdpbmRvdy5vcGVuZXJgIEFQSS5cblxuKipOb3RlOioqIExpbmtpbmcgdG8gYW5vdGhlciBwYWdlIHVzaW5nIGB0YXJnZXQ9Il9ibGFuayJgIHdpbGwgcnVuIHRoZSBuZXcgcGFnZSBvbiB0aGUgc2FtZSBwcm9jZXNzIGFzIHlvdXIgcGFnZS4gSWYgdGhlIG5ldyBwYWdlIGlzIGV4ZWN1dGluZyBleHBlbnNpdmUgSlMsIHlvdXIgcGFnZVwncyBwZXJmb3JtYW5jZSBtYXkgc3VmZmVyLiBUbyBhdm9pZCB0aGlzIHVzZSBgcmVsPSJub29wZW5lciJgLid9fSx7bmFtZToiZG93bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluc3RydWN0cyBicm93c2VycyB0byBkb3dubG9hZCBhIFVSTCBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gaXQsIHNvIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gc2F2ZSBpdCBhcyBhIGxvY2FsIGZpbGUuIElmIHRoZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUsIGl0IGlzIHVzZWQgYXMgdGhlIHByZS1maWxsZWQgZmlsZSBuYW1lIGluIHRoZSBTYXZlIHByb21wdCAodGhlIHVzZXIgY2FuIHN0aWxsIGNoYW5nZSB0aGUgZmlsZSBuYW1lIGlmIHRoZXkgd2FudCkuIFRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgb24gYWxsb3dlZCB2YWx1ZXMsIHRob3VnaCBgL2AgYW5kIGBcXGAgYXJlIGNvbnZlcnRlZCB0byB1bmRlcnNjb3Jlcy4gTW9zdCBmaWxlIHN5c3RlbXMgbGltaXQgc29tZSBwdW5jdHVhdGlvbiBpbiBmaWxlIG5hbWVzLCBhbmQgYnJvd3NlcnMgd2lsbCBhZGp1c3QgdGhlIHN1Z2dlc3RlZCBuYW1lIGFjY29yZGluZ2x5LlxuXG4qKk5vdGVzOioqXG5cbiogICBUaGlzIGF0dHJpYnV0ZSBvbmx5IHdvcmtzIGZvciBbc2FtZS1vcmlnaW4gVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KS5cbiogICBBbHRob3VnaCBIVFRQKHMpIFVSTHMgbmVlZCB0byBiZSBpbiB0aGUgc2FtZS1vcmlnaW4sIFtgYmxvYjpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwuY3JlYXRlT2JqZWN0VVJMKSBhbmQgW2BkYXRhOmAgVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9EYXRhX1VSSXMpIGFyZSBhbGxvd2VkIHNvIHRoYXQgY29udGVudCBnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdCwgc3VjaCBhcyBwaWN0dXJlcyBjcmVhdGVkIGluIGFuIGltYWdlLWVkaXRvciBXZWIgYXBwLCBjYW4gYmUgZG93bmxvYWRlZC5cbiogICBJZiB0aGUgSFRUUCBoZWFkZXIgW2BDb250ZW50LURpc3Bvc2l0aW9uOmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LURpc3Bvc2l0aW9uKSBnaXZlcyBhIGRpZmZlcmVudCBmaWxlbmFtZSB0aGFuIHRoaXMgYXR0cmlidXRlLCB0aGUgSFRUUCBoZWFkZXIgdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGlzIGF0dHJpYnV0ZS5cbiogICBJZiBgQ29udGVudC1EaXNwb3NpdGlvbjpgIGlzIHNldCB0byBgaW5saW5lYCwgRmlyZWZveCBwcmlvcml0aXplcyBgQ29udGVudC1EaXNwb3NpdGlvbmAsIGxpa2UgdGhlIGZpbGVuYW1lIGNhc2UsIHdoaWxlIENocm9tZSBwcmlvcml0aXplcyB0aGUgYGRvd25sb2FkYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJwaW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidDb250YWlucyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSTHMgdG8gd2hpY2gsIHdoZW4gdGhlIGh5cGVybGluayBpcyBmb2xsb3dlZCwgW2BQT1NUYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9NZXRob2RzL1BPU1QgIlRoZSBIVFRQIFBPU1QgbWV0aG9kIHNlbmRzIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhlIHR5cGUgb2YgdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QgaXMgaW5kaWNhdGVkIGJ5IHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLiIpIHJlcXVlc3RzIHdpdGggdGhlIGJvZHkgYFBJTkdgIHdpbGwgYmUgc2VudCBieSB0aGUgYnJvd3NlciAoaW4gdGhlIGJhY2tncm91bmQpLiBUeXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmcuJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgcmVsYXRpb25zaGlwIG9mIHRoZSB0YXJnZXQgb2JqZWN0IHRvIHRoZSBsaW5rIG9iamVjdC4gVGhlIHZhbHVlIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgW2xpbmsgdHlwZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBodW1hbiBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnksIHdpdGggbm8gYnVpbHQtaW4gZnVuY3Rpb25hbGl0eS4gQWxsb3dlZCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgW0JDUDQ3XShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCAiVGFncyBmb3IgSWRlbnRpZnlpbmcgTGFuZ3VhZ2VzIikuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgdGhlIG1lZGlhIHR5cGUgaW4gdGhlIGZvcm0gb2YgYSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSAiTUlNRSB0eXBlOiBBwqBNSU1FIHR5cGXCoChub3cgcHJvcGVybHkgY2FsbGVkICJtZWRpYSB0eXBlIiwgYnV0wqBhbHNvIHNvbWV0aW1lcyAiY29udGVudCB0eXBlIikgaXMgYSBzdHJpbmcgc2VudCBhbG9uZ8Kgd2l0aCBhIGZpbGUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiB0aGUgZmlsZSAoZGVzY3JpYmluZyB0aGUgY29udGVudCBmb3JtYXQsIGZvciBleGFtcGxlLCBhIHNvdW5kIGZpbGUgbWlnaHQgYmUgbGFiZWxlZMKgYXVkaW8vb2dnLCBvciBhbiBpbWFnZSBmaWxlwqBpbWFnZS9wbmcpLiIpIGZvciB0aGUgbGlua2VkIFVSTC4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuJ319LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIFVSTDpcblxuKiAgIGAnbm8tcmVmZXJyZXInYCBtZWFucyB0aGUgYFJlZmVyZXI6YCBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJ2AgbWVhbnMgbm8gYFJlZmVyZXI6YCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBIVFRQUy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiogICBgJ29yaWdpbidgIG1lYW5zIHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgb2YgdGhlIHBhZ2UsIG5vdCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gYWZ0ZXIgdGhlIGRvbWFpbi5cbiogICBgJ29yaWdpbi13aGVuLWNyb3NzLW9yaWdpbidgIG1lYW5pbmcgdGhhdCBuYXZpZ2F0aW9ucyB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgcGF0aC5cbiogICBgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYFxuKiAgIGAndW5zYWZlLXVybCdgIG1lYW5zIHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgcGF0aCwgYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBkYXRhIGZyb20gc2VjdXJlIFVSTHMgdG8gaW5zZWN1cmUgb25lcy4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EifV19LHtuYW1lOiJlbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGVtIGVsZW1lbnQgcmVwcmVzZW50cyBzdHJlc3MgZW1waGFzaXMgb2YgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtIn1dfSx7bmFtZToic3Ryb25nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3Ryb25nIGVsZW1lbnQgcmVwcmVzZW50cyBzdHJvbmcgaW1wb3J0YW5jZSwgc2VyaW91c25lc3MsIG9yIHVyZ2VuY3kgZm9yIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHJvbmcifV19LHtuYW1lOiJzbWFsbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNtYWxsIGVsZW1lbnQgcmVwcmVzZW50cyBzaWRlIGNvbW1lbnRzIHN1Y2ggYXMgc21hbGwgcHJpbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc21hbGwifV19LHtuYW1lOiJzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcyBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFjY3VyYXRlIG9yIG5vIGxvbmdlciByZWxldmFudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zIn1dfSx7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNpdGUgZWxlbWVudCByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIGEgY3JlYXRpdmUgd29yay4gSXQgbXVzdCBpbmNsdWRlIHRoZSB0aXRsZSBvZiB0aGUgd29yayBvciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yKHBlcnNvbiwgcGVvcGxlIG9yIG9yZ2FuaXphdGlvbikgb3IgYW4gVVJMIHJlZmVyZW5jZSwgb3IgYSByZWZlcmVuY2UgaW4gYWJicmV2aWF0ZWQgZm9ybSBhcyBwZXIgdGhlIGNvbnZlbnRpb25zIHVzZWQgZm9yIHRoZSBhZGRpdGlvbiBvZiBjaXRhdGlvbiBtZXRhZGF0YS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jaXRlIn1dfSx7bmFtZToicSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHEgZWxlbWVudCByZXByZXNlbnRzIHNvbWUgcGhyYXNpbmcgY29udGVudCBxdW90ZWQgZnJvbSBhbm90aGVyIHNvdXJjZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9xIn1dfSx7bmFtZToiZGZuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGZuIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZGVmaW5pbmcgaW5zdGFuY2Ugb2YgYSB0ZXJtLiBUaGUgcGFyYWdyYXBoLCBkZXNjcmlwdGlvbiBsaXN0IGdyb3VwLCBvciBzZWN0aW9uIHRoYXQgaXMgdGhlIG5lYXJlc3QgYW5jZXN0b3Igb2YgdGhlIGRmbiBlbGVtZW50IG11c3QgYWxzbyBjb250YWluIHRoZSBkZWZpbml0aW9uKHMpIGZvciB0aGUgdGVybSBnaXZlbiBieSB0aGUgZGZuIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGZuIn1dfSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFiYnIgZWxlbWVudCByZXByZXNlbnRzIGFuIGFiYnJldmlhdGlvbiBvciBhY3JvbnltLCBvcHRpb25hbGx5IHdpdGggaXRzIGV4cGFuc2lvbi4gVGhlIHRpdGxlIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBwcm92aWRlIGFuIGV4cGFuc2lvbiBvZiB0aGUgYWJicmV2aWF0aW9uLiBUaGUgYXR0cmlidXRlLCBpZiBzcGVjaWZpZWQsIG11c3QgY29udGFpbiBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbiwgYW5kIG5vdGhpbmcgZWxzZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hYmJyIn1dfSx7bmFtZToicnVieSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJ1YnkgZWxlbWVudCBhbGxvd3Mgb25lIG9yIG1vcmUgc3BhbnMgb2YgcGhyYXNpbmcgY29udGVudCB0byBiZSBtYXJrZWQgd2l0aCBydWJ5IGFubm90YXRpb25zLiBSdWJ5IGFubm90YXRpb25zIGFyZSBzaG9ydCBydW5zIG9mIHRleHQgcHJlc2VudGVkIGFsb25nc2lkZSBiYXNlIHRleHQsIHByaW1hcmlseSB1c2VkIGluIEVhc3QgQXNpYW4gdHlwb2dyYXBoeSBhcyBhIGd1aWRlIGZvciBwcm9udW5jaWF0aW9uIG9yIHRvIGluY2x1ZGUgb3RoZXIgYW5ub3RhdGlvbnMuIEluIEphcGFuZXNlLCB0aGlzIGZvcm0gb2YgdHlwb2dyYXBoeSBpcyBhbHNvIGtub3duIGFzIGZ1cmlnYW5hLiBSdWJ5IHRleHQgY2FuIGFwcGVhciBvbiBlaXRoZXIgc2lkZSwgYW5kIHNvbWV0aW1lcyBib3RoIHNpZGVzLCBvZiB0aGUgYmFzZSB0ZXh0LCBhbmQgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCBpdHMgcG9zaXRpb24gdXNpbmcgQ1NTLiBBIG1vcmUgY29tcGxldGUgaW50cm9kdWN0aW9uIHRvIHJ1YnkgY2FuIGJlIGZvdW5kIGluIHRoZSBVc2UgQ2FzZXMgJiBFeHBsb3JhdG9yeSBBcHByb2FjaGVzIGZvciBSdWJ5IE1hcmt1cCBkb2N1bWVudCBhcyB3ZWxsIGFzIGluIENTUyBSdWJ5IE1vZHVsZSBMZXZlbCAxLiBbUlVCWS1VQ10gW0NTU1JVQlldIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnVieSJ9XX0se25hbWU6InJiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmIgZWxlbWVudCBtYXJrcyB0aGUgYmFzZSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4gV2hlbiBpdCBpcyB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBwYXJlbnQgcnVieSBlbGVtZW50IHVzZXMgaXQgYXMgcGFydCBvZiBkZXRlcm1pbmluZyB3aGF0IGl0IHJlcHJlc2VudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcmIifV19LHtuYW1lOiJydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJ0IGVsZW1lbnQgbWFya3MgdGhlIHJ1YnkgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50IG9yIG9mIGFuIHJ0YyBlbGVtZW50IHRoYXQgaXMgaXRzZWxmIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCwgaXQgZG9lc24ndCByZXByZXNlbnQgYW55dGhpbmcgaXRzZWxmLCBidXQgaXRzIGFuY2VzdG9yIHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J0In1dfSx7bmFtZToicnAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBycCBlbGVtZW50IGlzIHVzZWQgdG8gcHJvdmlkZSBmYWxsYmFjayB0ZXh0IHRvIGJlIHNob3duIGJ5IHVzZXIgYWdlbnRzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBydWJ5IGFubm90YXRpb25zLiBPbmUgd2lkZXNwcmVhZCBjb252ZW50aW9uIGlzIHRvIHByb3ZpZGUgcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JwIn1dfSx7bmFtZToidGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpbWUgZWxlbWVudCByZXByZXNlbnRzIGl0cyBjb250ZW50cywgYWxvbmcgd2l0aCBhIG1hY2hpbmUtcmVhZGFibGUgZm9ybSBvZiB0aG9zZSBjb250ZW50cyBpbiB0aGUgZGF0ZXRpbWUgYXR0cmlidXRlLiBUaGUga2luZCBvZiBjb250ZW50IGlzIGxpbWl0ZWQgdG8gdmFyaW91cyBraW5kcyBvZiBkYXRlcywgdGltZXMsIHRpbWUtem9uZSBvZmZzZXRzLCBhbmQgZHVyYXRpb25zLCBhcyBkZXNjcmliZWQgYmVsb3cuIn0sYXR0cmlidXRlczpbe25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kL29yIGRhdGUgb2YgdGhlIGVsZW1lbnQgYW5kIG11c3QgYmUgaW4gb25lIG9mIHRoZSBmb3JtYXRzIGRlc2NyaWJlZCBiZWxvdy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aW1lIn1dfSx7bmFtZToiY29kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvZGUgZWxlbWVudCByZXByZXNlbnRzIGEgZnJhZ21lbnQgb2YgY29tcHV0ZXIgY29kZS4gVGhpcyBjb3VsZCBiZSBhbiBYTUwgZWxlbWVudCBuYW1lLCBhIGZpbGUgbmFtZSwgYSBjb21wdXRlciBwcm9ncmFtLCBvciBhbnkgb3RoZXIgc3RyaW5nIHRoYXQgYSBjb21wdXRlciB3b3VsZCByZWNvZ25pemUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29kZSJ9XX0se25hbWU6InZhciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhciBlbGVtZW50IHJlcHJlc2VudHMgYSB2YXJpYWJsZS4gVGhpcyBjb3VsZCBiZSBhbiBhY3R1YWwgdmFyaWFibGUgaW4gYSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbiBvciBwcm9ncmFtbWluZyBjb250ZXh0LCBhbiBpZGVudGlmaWVyIHJlcHJlc2VudGluZyBhIGNvbnN0YW50LCBhIHN5bWJvbCBpZGVudGlmeWluZyBhIHBoeXNpY2FsIHF1YW50aXR5LCBhIGZ1bmN0aW9uIHBhcmFtZXRlciwgb3IganVzdCBiZSBhIHRlcm0gdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGluIHByb3NlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZhciJ9XX0se25hbWU6InNhbXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzYW1wIGVsZW1lbnQgcmVwcmVzZW50cyBzYW1wbGUgb3IgcXVvdGVkIG91dHB1dCBmcm9tIGFub3RoZXIgcHJvZ3JhbSBvciBjb21wdXRpbmcgc3lzdGVtLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NhbXAifV19LHtuYW1lOiJrYmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBrYmQgZWxlbWVudCByZXByZXNlbnRzIHVzZXIgaW5wdXQgKHR5cGljYWxseSBrZXlib2FyZCBpbnB1dCwgYWx0aG91Z2ggaXQgbWF5IGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQgb3RoZXIgaW5wdXQsIHN1Y2ggYXMgdm9pY2UgY29tbWFuZHMpLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2tiZCJ9XX0se25hbWU6InN1YiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1YiBlbGVtZW50IHJlcHJlc2VudHMgYSBzdWJzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3ViIn1dfSx7bmFtZToic3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1cGVyc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1cCJ9XX0se25hbWU6ImkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCBpbiBhbiBhbHRlcm5hdGUgdm9pY2Ugb3IgbW9vZCwgb3Igb3RoZXJ3aXNlIG9mZnNldCBmcm9tIHRoZSBub3JtYWwgcHJvc2UgaW4gYSBtYW5uZXIgaW5kaWNhdGluZyBhIGRpZmZlcmVudCBxdWFsaXR5IG9mIHRleHQsIHN1Y2ggYXMgYSB0YXhvbm9taWMgZGVzaWduYXRpb24sIGEgdGVjaG5pY2FsIHRlcm0sIGFuIGlkaW9tYXRpYyBwaHJhc2UgZnJvbSBhbm90aGVyIGxhbmd1YWdlLCB0cmFuc2xpdGVyYXRpb24sIGEgdGhvdWdodCwgb3IgYSBzaGlwIG5hbWUgaW4gV2VzdGVybiB0ZXh0cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pIn1dfSx7bmFtZToiYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGIgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHRvIHdoaWNoIGF0dGVudGlvbiBpcyBiZWluZyBkcmF3biBmb3IgdXRpbGl0YXJpYW4gcHVycG9zZXMgd2l0aG91dCBjb252ZXlpbmcgYW55IGV4dHJhIGltcG9ydGFuY2UgYW5kIHdpdGggbm8gaW1wbGljYXRpb24gb2YgYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIHN1Y2ggYXMga2V5IHdvcmRzIGluIGEgZG9jdW1lbnQgYWJzdHJhY3QsIHByb2R1Y3QgbmFtZXMgaW4gYSByZXZpZXcsIGFjdGlvbmFibGUgd29yZHMgaW4gaW50ZXJhY3RpdmUgdGV4dC1kcml2ZW4gc29mdHdhcmUsIG9yIGFuIGFydGljbGUgbGVkZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iIn1dfSx7bmFtZToidSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHUgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHdpdGggYW4gdW5hcnRpY3VsYXRlZCwgdGhvdWdoIGV4cGxpY2l0bHkgcmVuZGVyZWQsIG5vbi10ZXh0dWFsIGFubm90YXRpb24sIHN1Y2ggYXMgbGFiZWxpbmcgdGhlIHRleHQgYXMgYmVpbmcgYSBwcm9wZXIgbmFtZSBpbiBDaGluZXNlIHRleHQgKGEgQ2hpbmVzZSBwcm9wZXIgbmFtZSBtYXJrKSwgb3IgbGFiZWxpbmcgdGhlIHRleHQgYXMgYmVpbmcgbWlzc3BlbHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdSJ9XX0se25hbWU6Im1hcmsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXJrIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJ1biBvZiB0ZXh0IGluIG9uZSBkb2N1bWVudCBtYXJrZWQgb3IgaGlnaGxpZ2h0ZWQgZm9yIHJlZmVyZW5jZSBwdXJwb3NlcywgZHVlIHRvIGl0cyByZWxldmFuY2UgaW4gYW5vdGhlciBjb250ZXh0LiBXaGVuIHVzZWQgaW4gYSBxdW90YXRpb24gb3Igb3RoZXIgYmxvY2sgb2YgdGV4dCByZWZlcnJlZCB0byBmcm9tIHRoZSBwcm9zZSwgaXQgaW5kaWNhdGVzIGEgaGlnaGxpZ2h0IHRoYXQgd2FzIG5vdCBvcmlnaW5hbGx5IHByZXNlbnQgYnV0IHdoaWNoIGhhcyBiZWVuIGFkZGVkIHRvIGJyaW5nIHRoZSByZWFkZXIncyBhdHRlbnRpb24gdG8gYSBwYXJ0IG9mIHRoZSB0ZXh0IHRoYXQgbWlnaHQgbm90IGhhdmUgYmVlbiBjb25zaWRlcmVkIGltcG9ydGFudCBieSB0aGUgb3JpZ2luYWwgYXV0aG9yIHdoZW4gdGhlIGJsb2NrIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4sIGJ1dCB3aGljaCBpcyBub3cgdW5kZXIgcHJldmlvdXNseSB1bmV4cGVjdGVkIHNjcnV0aW55LiBXaGVuIHVzZWQgaW4gdGhlIG1haW4gcHJvc2Ugb2YgYSBkb2N1bWVudCwgaXQgaW5kaWNhdGVzIGEgcGFydCBvZiB0aGUgZG9jdW1lbnQgdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCBkdWUgdG8gaXRzIGxpa2VseSByZWxldmFuY2UgdG8gdGhlIHVzZXIncyBjdXJyZW50IGFjdGl2aXR5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcmsifV19LHtuYW1lOiJiZGkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZGkgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHRoYXQgaXMgdG8gYmUgaXNvbGF0ZWQgZnJvbSBpdHMgc3Vycm91bmRpbmdzIGZvciB0aGUgcHVycG9zZXMgb2YgYmlkaXJlY3Rpb25hbCB0ZXh0IGZvcm1hdHRpbmcuIFtCSURJXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JkaSJ9XX0se25hbWU6ImJkbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJkbyBlbGVtZW50IHJlcHJlc2VudHMgZXhwbGljaXQgdGV4dCBkaXJlY3Rpb25hbGl0eSBmb3JtYXR0aW5nIGNvbnRyb2wgZm9yIGl0cyBjaGlsZHJlbi4gSXQgYWxsb3dzIGF1dGhvcnMgdG8gb3ZlcnJpZGUgdGhlIFVuaWNvZGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0gYnkgZXhwbGljaXRseSBzcGVjaWZ5aW5nIGEgZGlyZWN0aW9uIG92ZXJyaWRlLiBbQklESV0ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlyIixkZXNjcmlwdGlvbjoiVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0ZXh0IHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGlzIGVsZW1lbnQncyBjb250ZW50cy4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsdHJgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBzaG91bGQgZ28gaW4gYSBsZWZ0LXRvLXJpZ2h0IGRpcmVjdGlvbi5cbiogICBgcnRsYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgcmlnaHQtdG8tbGVmdCBkaXJlY3Rpb24uIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZG8ifV19LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3BhbiBlbGVtZW50IGRvZXNuJ3QgbWVhbiBhbnl0aGluZyBvbiBpdHMgb3duLCBidXQgY2FuIGJlIHVzZWZ1bCB3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgZ2xvYmFsIGF0dHJpYnV0ZXMsIGUuZy4gY2xhc3MsIGxhbmcsIG9yIGRpci4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3BhbiJ9XX0se25hbWU6ImJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhay4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2xlYXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hlcmUgdG8gYmVnaW4gdGhlIG5leHQgbGluZSBhZnRlciB0aGUgYnJlYWsuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iciJ9XX0se25hbWU6IndiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdiciBlbGVtZW50IHJlcHJlc2VudHMgYSBsaW5lIGJyZWFrIG9wcG9ydHVuaXR5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3diciJ9XX0se25hbWU6ImlucyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlucyBlbGVtZW50IHJlcHJlc2VudHMgYW4gYWRkaXRpb24gdG8gdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgVVJJIG9mIGEgcmVzb3VyY2UgdGhhdCBleHBsYWlucyB0aGUgY2hhbmdlLCBzdWNoIGFzIGEgbGluayB0byBtZWV0aW5nIG1pbnV0ZXMgb3IgYSB0aWNrZXQgaW4gYSB0cm91Ymxlc2hvb3Rpbmcgc3lzdGVtLiJ9LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQgZGF0ZSBvZiB0aGUgY2hhbmdlIGFuZCBtdXN0IGJlIGEgdmFsaWQgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIHBhcnNlZCBhcyBhIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZywgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHRpbWUgc3RhbXAuIEZvciB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgd2l0aG91dCBhIHRpbWUsIHNlZSBbRm9ybWF0IG9mIGEgdmFsaWQgZGF0ZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2RhdGVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuIFRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyBpZiBpdCBpbmNsdWRlcyBib3RoIGRhdGUgYW5kIHRpbWUgaXMgY292ZXJlZCBpbiBbRm9ybWF0IG9mIGEgdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2xvY2FsX2RhdGVfYW5kX3RpbWVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnMifV19LHtuYW1lOiJkZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZWwgZWxlbWVudCByZXByZXNlbnRzIGEgcmVtb3ZhbCBmcm9tIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBVUkkgZm9yIGEgcmVzb3VyY2UgdGhhdCBleHBsYWlucyB0aGUgY2hhbmdlIChmb3IgZXhhbXBsZSwgbWVldGluZyBtaW51dGVzKS4ifX0se25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgc3RyaW5nIHdpdGggYW4gb3B0aW9uYWwgdGltZS4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RlbCJ9XX0se25hbWU6InBpY3R1cmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwaWN0dXJlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgd2hpY2ggcHJvdmlkZXMgbXVsdGlwbGUgc291cmNlcyB0byBpdHMgY29udGFpbmVkIGltZyBlbGVtZW50IHRvIGFsbG93IGF1dGhvcnMgdG8gZGVjbGFyYXRpdmVseSBjb250cm9sIG9yIGdpdmUgaGludHMgdG8gdGhlIHVzZXIgYWdlbnQgYWJvdXQgd2hpY2ggaW1hZ2UgcmVzb3VyY2UgdG8gdXNlLCBiYXNlZCBvbiB0aGUgc2NyZWVuIHBpeGVsIGRlbnNpdHksIHZpZXdwb3J0IHNpemUsIGltYWdlIGZvcm1hdCwgYW5kIG90aGVyIGZhY3RvcnMuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUifV19LHtuYW1lOiJpbWciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGltZyBlbGVtZW50IHJlcHJlc2VudHMgYW4gaW1hZ2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyBhbiBhbHRlcm5hdGl2ZSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBpbWFnZS5cblxuKipOb3RlOioqIEJyb3dzZXJzIGRvIG5vdCBhbHdheXMgZGlzcGxheSB0aGUgaW1hZ2UgcmVmZXJlbmNlZCBieSB0aGUgZWxlbWVudC4gVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLWdyYXBoaWNhbCBicm93c2VycyAoaW5jbHVkaW5nIHRob3NlIHVzZWQgYnkgcGVvcGxlIHdpdGggdmlzdWFsIGltcGFpcm1lbnRzKSwgaWYgdGhlIHVzZXIgY2hvb3NlcyBub3QgdG8gZGlzcGxheSBpbWFnZXMsIG9yIGlmIHRoZSBicm93c2VyIGNhbm5vdCBkaXNwbGF5IHRoZSBpbWFnZSBiZWNhdXNlIGl0IGlzIGludmFsaWQgb3IgYW4gW3Vuc3VwcG9ydGVkIHR5cGVdKCNTdXBwb3J0ZWRfaW1hZ2VfZm9ybWF0cykuIEluIHRoZXNlIGNhc2VzLCB0aGUgYnJvd3NlciBtYXkgcmVwbGFjZSB0aGUgaW1hZ2Ugd2l0aCB0aGUgdGV4dCBkZWZpbmVkIGluIHRoaXMgZWxlbWVudFwncyBgYWx0YCBhdHRyaWJ1dGUuIFlvdSBzaG91bGQsIGZvciB0aGVzZSByZWFzb25zIGFuZCBvdGhlcnMsIHByb3ZpZGUgYSB1c2VmdWwgdmFsdWUgZm9yIGBhbHRgIHdoZW5ldmVyIHBvc3NpYmxlLlxuXG4qKk5vdGU6KiogT21pdHRpbmcgdGhpcyBhdHRyaWJ1dGUgYWx0b2dldGhlciBpbmRpY2F0ZXMgdGhhdCB0aGUgaW1hZ2UgaXMgYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCwgYW5kIG5vIHRleHR1YWwgZXF1aXZhbGVudCBpcyBhdmFpbGFibGUuIFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgdG8gYW4gZW1wdHkgc3RyaW5nIChgYWx0PSIiYCkgaW5kaWNhdGVzIHRoYXQgdGhpcyBpbWFnZSBpcyBfbm90XyBhIGtleSBwYXJ0IG9mIHRoZSBjb250ZW50IChkZWNvcmF0aXZlKSwgYW5kIHRoYXQgbm9uLXZpc3VhbCBicm93c2VycyBtYXkgb21pdCBpdCBmcm9tIHJlbmRlcmluZy4nfX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGltYWdlIFVSTC4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGZvciB0aGUgYDxpbWc+YCBlbGVtZW50LiBPbiBicm93c2VycyBzdXBwb3J0aW5nIGBzcmNzZXRgLCBgc3JjYCBpcyB0cmVhdGVkIGxpa2UgYSBjYW5kaWRhdGUgaW1hZ2Ugd2l0aCBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBgMXhgIHVubGVzcyBhbiBpbWFnZSB3aXRoIHRoaXMgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBgc3Jjc2V0LGAgb3IgdW5sZXNzIGBzcmNzZXRgIGNvbnRhaW5zICdgd2AnIGRlc2NyaXB0b3JzLiJ9fSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2YgcG9zc2libGUgaW1hZ2Ugc291cmNlcyBmb3IgdGhlIHVzZXIgYWdlbnQgdG8gdXNlLiBFYWNoIHN0cmluZyBpcyBjb21wb3NlZCBvZjpcblxuMS4gIGEgVVJMIHRvIGFuIGltYWdlLFxuMi4gIG9wdGlvbmFsbHksIHdoaXRlc3BhY2UgZm9sbG93ZWQgYnkgb25lIG9mOlxuICAgICogICBBIHdpZHRoIGRlc2NyaXB0b3IsIG9yIGEgcG9zaXRpdmUgaW50ZWdlciBkaXJlY3RseSBmb2xsb3dlZCBieSAnYHdgJy4gVGhlIHdpZHRoIGRlc2NyaXB0b3IgaXMgZGl2aWRlZCBieSB0aGUgc291cmNlIHNpemUgZ2l2ZW4gaW4gdGhlIGBzaXplc2AgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZSB0aGUgZWZmZWN0aXZlIHBpeGVsIGRlbnNpdHkuXG4gICAgKiAgIEEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB3aGljaCBpcyBhIHBvc2l0aXZlIGZsb2F0aW5nIHBvaW50IG51bWJlciBkaXJlY3RseSBmb2xsb3dlZCBieSAnYHhgJy5cblxuSWYgbm8gZGVzY3JpcHRvciBpcyBzcGVjaWZpZWQsIHRoZSBzb3VyY2UgaXMgYXNzaWduZWQgdGhlIGRlZmF1bHQgZGVzY3JpcHRvcjogYDF4YC5cblxuSXQgaXMgaW5jb3JyZWN0IHRvIG1peCB3aWR0aCBkZXNjcmlwdG9ycyBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9ycyBpbiB0aGUgc2FtZSBgc3Jjc2V0YCBhdHRyaWJ1dGUuIER1cGxpY2F0ZSBkZXNjcmlwdG9ycyAoZm9yIGluc3RhbmNlLCB0d28gc291cmNlcyBpbiB0aGUgc2FtZSBgc3Jjc2V0YCB3aGljaCBhcmUgYm90aCBkZXNjcmliZWQgd2l0aCAnYDJ4YCcpIGFyZSBhbHNvIGludmFsaWQuXG5cblRoZSB1c2VyIGFnZW50IHNlbGVjdHMgYW55IG9uZSBvZiB0aGUgYXZhaWxhYmxlIHNvdXJjZXMgYXQgaXRzIGRpc2NyZXRpb24uIFRoaXMgcHJvdmlkZXMgdGhlbSB3aXRoIHNpZ25pZmljYW50IGxlZXdheSB0byB0YWlsb3IgdGhlaXIgc2VsZWN0aW9uIGJhc2VkIG9uIHRoaW5ncyBsaWtlIHVzZXIgcHJlZmVyZW5jZXMgb3IgYmFuZHdpZHRoIGNvbmRpdGlvbnMuIFNlZSBvdXIgW1Jlc3BvbnNpdmUgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0xlYXJuL0hUTUwvTXVsdGltZWRpYV9hbmRfZW1iZWRkaW5nL1Jlc3BvbnNpdmVfaW1hZ2VzKSB0dXRvcmlhbCBmb3IgYW4gZXhhbXBsZS4ifX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGlmIHRoZSBmZXRjaGluZyBvZiB0aGUgcmVsYXRlZCBpbWFnZSBtdXN0IGJlIGRvbmUgdXNpbmcgQ09SUyBvciBub3QuIFtDT1JTLWVuYWJsZWQgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nICJbdGFpbnRlZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX2VuYWJsZWRfaW1hZ2UjV2hhdF9pc19hX3RhaW50ZWRfY2FudmFzKS4iIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6J319LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBwYXJ0aWFsIFVSTCAoc3RhcnRpbmcgd2l0aCBcJyNcJykgb2YgYW4gW2ltYWdlIG1hcF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0VsZW1lbnQvbWFwKSBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQuXG5cbioqTm90ZToqKiBZb3UgY2Fubm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGUgYDxpbWc+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBhbiBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIikgb3IgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJpc21hcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIHBhcnQgb2YgYSBzZXJ2ZXItc2lkZSBtYXAuIElmIHNvLCB0aGUgcHJlY2lzZSBjb29yZGluYXRlcyBvZiBhIGNsaWNrIGFyZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXG5cbioqTm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBpcyBhbGxvd2VkIG9ubHkgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIGVsZW1lbnQgd2l0aCBhIHZhbGlkIFtgaHJlZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItaHJlZikgYXR0cmlidXRlLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGltYWdlIGluIHBpeGVscy4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGludHJpbnNpYyBoZWlnaHQgb2YgdGhlIGltYWdlIGluIHBpeGVscy4ifX0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gaW1hZ2UgZGVjb2RpbmcgaGludCB0byB0aGUgYnJvd3Nlci4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZToifSx7bmFtZToiZGVjb2RpbmciLGRlc2NyaXB0aW9uOiJgc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBzeW5jaHJvbm91c2x5IGZvciBhdG9taWMgcHJlc2VudGF0aW9uIHdpdGggb3RoZXIgY29udGVudC5cblxuYGFzeW5jYFxuXG5EZWNvZGUgdGhlIGltYWdlIGFzeW5jaHJvbm91c2x5IHRvIHJlZHVjZSBkZWxheSBpbiBwcmVzZW50aW5nIG90aGVyIGNvbnRlbnQuXG5cbmBhdXRvYFxuXG5EZWZhdWx0IG1vZGUsIHdoaWNoIGluZGljYXRlcyBubyBwcmVmZXJlbmNlIGZvciB0aGUgZGVjb2RpbmcgbW9kZS4gVGhlIGJyb3dzZXIgZGVjaWRlcyB3aGF0IGlzIGJlc3QgZm9yIHRoZSB1c2VyLiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNlIG9mIHRoZSByZXNvdXJjZS4gUHJpb3JpdHkgaGludHMgYXJlIGRlbGVnYXRlZCB1c2luZyB0aGUgdmFsdWVzOiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiYGF1dG9gOiBJbmRpY2F0ZXPCoCoqbm/CoHByZWZlcmVuY2UqKi4gVGhlIGJyb3dzZXIgbWF5IHVzZSBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgaW1hZ2UuXG5cbmBoaWdoYDogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgaW1hZ2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG5gbG93YDrCoEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmxvdyoqIHByaW9yaXR5LiJ9LHtuYW1lOiJpbnRyaW5zaWNzaXplIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgdGVsbHMgdGhlIGJyb3dzZXIgdG8gaWdub3JlIHRoZSBhY3R1YWwgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlIGFuZCBwcmV0ZW5kIGl04oCZcyB0aGUgc2l6ZSBzcGVjaWZpZWQgaW4gdGhlIGF0dHJpYnV0ZS4gU3BlY2lmaWNhbGx5LCB0aGUgaW1hZ2Ugd291bGQgcmFzdGVyIGF0IHRoZXNlIGRpbWVuc2lvbnMgYW5kIGBuYXR1cmFsV2lkdGhgL2BuYXR1cmFsSGVpZ2h0YCBvbiBpbWFnZXMgd291bGQgcmV0dXJuIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoaXMgYXR0cmlidXRlLiBbRXhwbGFpbmVyXShodHRwczovL2dpdGh1Yi5jb20vb2phbnZhZmFpL2ludHJpbnNpY3NpemUtYXR0cmlidXRlKSwgW2V4YW1wbGVzXShodHRwczovL2dvb2dsZWNocm9tZS5naXRodWIuaW8vc2FtcGxlcy9pbnRyaW5zaWMtc2l6ZS9pbmRleC5odG1sKSJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246IkEgc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyOmAgVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyIFwiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS5cIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlOmAgTm8gYFJlZmVyZXJgIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IFRMUyAoSFRUUFMpLiBUaGlzIGlzIGEgdXNlciBhZ2VudOKAmXMgZGVmYXVsdCBiZWhhdmlvciBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBwYWdlIG9mIG9yaWdpbidzIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luOmAgTmF2aWdhdGluZyB0byBvdGhlciBvcmlnaW5zIHdpbGwgbGltaXQgdGhlIGluY2x1ZGVkIHJlZmVycmFsIGRhdGEgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW5nIGZyb20gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXIncyBmdWxsIHBhdGguXG4qICAgYHVuc2FmZS11cmw6YCBUaGUgYFJlZmVyZXJgIGhlYWRlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgY2FzZSBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuIn0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHNvdXJjZSBzaXplcy4gRWFjaCBzb3VyY2Ugc2l6ZSBjb25zaXN0cyBvZjpcblxuMS4gIGEgbWVkaWEgY29uZGl0aW9uLiBUaGlzIG11c3QgYmUgb21pdHRlZCBmb3IgdGhlIGxhc3QgaXRlbS5cbjIuICBhIHNvdXJjZSBzaXplIHZhbHVlLlxuXG5Tb3VyY2Ugc2l6ZSB2YWx1ZXMgc3BlY2lmeSB0aGUgaW50ZW5kZWQgZGlzcGxheSBzaXplIG9mIHRoZSBpbWFnZS4gVXNlciBhZ2VudHMgdXNlIHRoZSBjdXJyZW50IHNvdXJjZSBzaXplIHRvIHNlbGVjdCBvbmUgb2YgdGhlIHNvdXJjZXMgc3VwcGxpZWQgYnkgdGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSwgd2hlbiB0aG9zZSBzb3VyY2VzIGFyZSBkZXNjcmliZWQgdXNpbmcgd2lkdGggKCdgd2AnKSBkZXNjcmlwdG9ycy4gVGhlIHNlbGVjdGVkIHNvdXJjZSBzaXplIGFmZmVjdHMgdGhlIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSAodGhlIGltYWdl4oCZcyBkaXNwbGF5IHNpemUgaWYgbm8gQ1NTIHN0eWxpbmcgaXMgYXBwbGllZCkuIElmIHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUgaXMgYWJzZW50LCBvciBjb250YWlucyBubyB2YWx1ZXMgd2l0aCBhIHdpZHRoIChgd2ApIGRlc2NyaXB0b3IsIHRoZW4gdGhlIGBzaXplc2AgYXR0cmlidXRlIGhhcyBubyBlZmZlY3QuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbWcifV19LHtuYW1lOiJpZnJhbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpZnJhbWUgZWxlbWVudCByZXByZXNlbnRzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSTCBvZiB0aGUgcGFnZSB0byBlbWJlZC4gVXNlIGEgdmFsdWUgb2YgYGFib3V0OmJsYW5rYCB0byBlbWJlZCBhbiBlbXB0eSBwYWdlIHRoYXQgY29uZm9ybXMgdG8gdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSNJbmhlcml0ZWRfb3JpZ2lucykuIEFsc28gbm90ZSB0aGF0IHByb2dyYW1hdGljYWxseSByZW1vdmluZyBhbiBgPGlmcmFtZT5gXCdzIHNyYyBhdHRyaWJ1dGUgKGUuZy4gdmlhIFtgRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L3JlbW92ZUF0dHJpYnV0ZSAiVGhlIEVsZW1lbnQgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSgpIHJlbW92ZXMgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBlbGVtZW50LiIpKSBjYXVzZXMgYGFib3V0OmJsYW5rYCB0byBiZSBsb2FkZWQgaW4gdGhlIGZyYW1lIGluIEZpcmVmb3ggKGZyb20gdmVyc2lvbiA2NSksIENocm9taXVtLWJhc2VkIGJyb3dzZXJzLCBhbmQgU2FmYXJpL2lPUy4nfX0se25hbWU6InNyY2RvYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5saW5lIEhUTUwgdG8gZW1iZWQsIG92ZXJyaWRpbmcgdGhlIGBzcmNgIGF0dHJpYnV0ZS4gSWYgYSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGBzcmNkb2NgIGF0dHJpYnV0ZSwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gdGhlIFVSTCBpbiB0aGUgYHNyY2AgYXR0cmlidXRlLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSB0YXJnZXRhYmxlIG5hbWUgZm9yIHRoZSBlbWJlZGRlZCBicm93c2luZyBjb250ZXh0LiBUaGlzIGNhbiBiZSB1c2VkIGluIHRoZSBgdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSwgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIiksIG9yIFtgPGJhc2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jhc2UgIlRoZSBIVE1MIDxiYXNlPiBlbGVtZW50IHNwZWNpZmllcyB0aGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgcmVsYXRpdmUgVVJMcyBjb250YWluZWQgd2l0aGluIGEgZG9jdW1lbnQuIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSA8YmFzZT4gZWxlbWVudCBpbiBhIGRvY3VtZW50LiIpIGVsZW1lbnRzOyB0aGUgYGZvcm10YXJnZXRgIGF0dHJpYnV0ZSBvZiB0aGUgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgb3IgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGVsZW1lbnRzOyBvciB0aGUgYHdpbmRvd05hbWVgIHBhcmFtZXRlciBpbiB0aGUgW2B3aW5kb3cub3BlbigpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9vcGVuICJUaGXCoFdpbmRvdyBpbnRlcmZhY2VcJ3Mgb3BlbigpIG1ldGhvZCBsb2FkcyB0aGUgc3BlY2lmaWVkIHJlc291cmNlIGludG8gdGhlIGJyb3dzaW5nIGNvbnRleHQgKHdpbmRvdywgPGlmcmFtZT4gb3IgdGFiKSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4gSWYgdGhlIG5hbWUgZG9lc25cJ3QgZXhpc3QsIHRoZW4gYSBuZXcgd2luZG93IGlzIG9wZW5lZCBhbmQgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpcyBsb2FkZWQgaW50byBpdHMgYnJvd3NpbmcgY29udGV4dC4iKSBtZXRob2QuJ319LHtuYW1lOiJzYW5kYm94Iix2YWx1ZVNldDoic2IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0FwcGxpZXMgZXh0cmEgcmVzdHJpY3Rpb25zIHRvIHRoZSBjb250ZW50IGluIHRoZSBmcmFtZS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgY2FuIGVpdGhlciBiZSBlbXB0eSB0byBhcHBseSBhbGwgcmVzdHJpY3Rpb25zLCBvciBzcGFjZS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGxpZnQgcGFydGljdWxhciByZXN0cmljdGlvbnM6XG5cbiogICBgYWxsb3ctZm9ybXNgOiBBbGxvd3MgdGhlIHJlc291cmNlIHRvIHN1Ym1pdCBmb3Jtcy4gSWYgdGhpcyBrZXl3b3JkIGlzIG5vdCB1c2VkLCBmb3JtIHN1Ym1pc3Npb24gaXMgYmxvY2tlZC5cbiogICBgYWxsb3ctbW9kYWxzYDogTGV0cyB0aGUgcmVzb3VyY2UgW29wZW4gbW9kYWwgd2luZG93c10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjc2FuZGJveGVkLW1vZGFscy1mbGFnKS5cbiogICBgYWxsb3ctb3JpZW50YXRpb24tbG9ja2A6IExldHMgdGhlIHJlc291cmNlIFtsb2NrIHRoZSBzY3JlZW4gb3JpZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TY3JlZW4vbG9ja09yaWVudGF0aW9uKS5cbiogICBgYWxsb3ctcG9pbnRlci1sb2NrYDogTGV0cyB0aGUgcmVzb3VyY2UgdXNlIHRoZSBbUG9pbnRlciBMb2NrIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWJBUEkvUG9pbnRlcl9Mb2NrKS5cbiogICBgYWxsb3ctcG9wdXBzYDogQWxsb3dzIHBvcHVwcyAoc3VjaCBhcyBgd2luZG93Lm9wZW4oKWAsIGB0YXJnZXQ9Il9ibGFuayJgLCBvciBgc2hvd01vZGFsRGlhbG9nKClgKS4gSWYgdGhpcyBrZXl3b3JkIGlzIG5vdCB1c2VkLCB0aGUgcG9wdXAgd2lsbCBzaWxlbnRseSBmYWlsIHRvIG9wZW4uXG4qICAgYGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveGA6IExldHMgdGhlIHNhbmRib3hlZCBkb2N1bWVudCBvcGVuIG5ldyB3aW5kb3dzIHdpdGhvdXQgdGhvc2Ugd2luZG93cyBpbmhlcml0aW5nIHRoZSBzYW5kYm94aW5nLiBGb3IgZXhhbXBsZSwgdGhpcyBjYW4gc2FmZWx5IHNhbmRib3ggYW4gYWR2ZXJ0aXNlbWVudCB3aXRob3V0IGZvcmNpbmcgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIHVwb24gdGhlIHBhZ2UgdGhlIGFkIGxpbmtzIHRvLlxuKiAgIGBhbGxvdy1wcmVzZW50YXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBzdGFydCBhIFtwcmVzZW50YXRpb24gc2Vzc2lvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1ByZXNlbnRhdGlvblJlcXVlc3QpLlxuKiAgIGBhbGxvdy1zYW1lLW9yaWdpbmA6IElmIHRoaXMgdG9rZW4gaXMgbm90IHVzZWQsIHRoZSByZXNvdXJjZSBpcyB0cmVhdGVkIGFzIGJlaW5nIGZyb20gYSBzcGVjaWFsIG9yaWdpbiB0aGF0IGFsd2F5cyBmYWlscyB0aGUgW3NhbWUtb3JpZ2luIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9zYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUtb3JpZ2luIHBvbGljeTogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIikuXG4qICAgYGFsbG93LXNjcmlwdHNgOiBMZXRzIHRoZSByZXNvdXJjZSBydW4gc2NyaXB0cyAoYnV0IG5vdCBjcmVhdGUgcG9wdXAgd2luZG93cykuXG4qICAgYGFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbmAgOiBMZXRzIHRoZSByZXNvdXJjZSByZXF1ZXN0IGFjY2VzcyB0byB0aGUgcGFyZW50XCdzIHN0b3JhZ2UgY2FwYWJpbGl0aWVzIHdpdGggdGhlIFtTdG9yYWdlIEFjY2VzcyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TdG9yYWdlX0FjY2Vzc19BUEkpLlxuKiAgIGBhbGxvdy10b3AtbmF2aWdhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhlIG9uZSBuYW1lZCBgX3RvcGApLlxuKiAgIGBhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQsIGJ1dCBvbmx5IGlmIGluaXRpYXRlZCBieSBhIHVzZXIgZ2VzdHVyZS5cblxuKipOb3RlcyBhYm91dCBzYW5kYm94aW5nOioqXG5cbiogICBXaGVuIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBlbWJlZGRpbmcgcGFnZSwgaXQgaXMgKipzdHJvbmdseSBkaXNjb3VyYWdlZCoqIHRvIHVzZSBib3RoIGBhbGxvdy1zY3JpcHRzYCBhbmQgYGFsbG93LXNhbWUtb3JpZ2luYCwgYXMgdGhhdCBsZXRzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCByZW1vdmUgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUg4oCUIG1ha2luZyBpdCBubyBtb3JlIHNlY3VyZSB0aGFuIG5vdCB1c2luZyB0aGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBhdCBhbGwuXG4qICAgU2FuZGJveGluZyBpcyB1c2VsZXNzIGlmIHRoZSBhdHRhY2tlciBjYW4gZGlzcGxheSBjb250ZW50IG91dHNpZGUgYSBzYW5kYm94ZWQgYGlmcmFtZWAg4oCUIHN1Y2ggYXMgaWYgdGhlIHZpZXdlciBvcGVucyB0aGUgZnJhbWUgaW4gYSBuZXcgdGFiLiBTdWNoIGNvbnRlbnQgc2hvdWxkIGJlIGFsc28gc2VydmVkIGZyb20gYSBfc2VwYXJhdGUgb3JpZ2luXyB0byBsaW1pdCBwb3RlbnRpYWwgZGFtYWdlLlxuKiAgIFRoZSBgc2FuZGJveGAgYXR0cmlidXRlIGlzIHVuc3VwcG9ydGVkIGluIEludGVybmV0IEV4cGxvcmVyIDkgYW5kIGVhcmxpZXIuJ319LHtuYW1lOiJzZWFtbGVzcyIsdmFsdWVTZXQ6InYifSx7bmFtZToiYWxsb3dmdWxsc2NyZWVuIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU2V0IHRvIGB0cnVlYCBpZiB0aGUgYDxpZnJhbWU+YCBjYW4gYWN0aXZhdGUgZnVsbHNjcmVlbiBtb2RlIGJ5IGNhbGxpbmcgdGhlIFtgcmVxdWVzdEZ1bGxzY3JlZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L3JlcXVlc3RGdWxsc2NyZWVuICJUaGUgRWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpIG1ldGhvZCBpc3N1ZXMgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbWFrZSB0aGUgZWxlbWVudCBiZSBkaXNwbGF5ZWQgaW4gZnVsbC1zY3JlZW4gbW9kZS4iKSBtZXRob2QuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBmcmFtZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0IGlzIGAzMDBgLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBmcmFtZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0IGlzIGAxNTBgLiJ9fSx7bmFtZToiYWxsb3ciLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBbZmVhdHVyZSBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvRmVhdHVyZV9Qb2xpY3kpIGZvciB0aGUgYDxpZnJhbWU+YC4ifSx7bmFtZToiYWxsb3dwYXltZW50cmVxdWVzdCIsZGVzY3JpcHRpb246IlNldCB0byBgdHJ1ZWAgaWYgYSBjcm9zcy1vcmlnaW4gYDxpZnJhbWU+YCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbnZva2UgdGhlIFtQYXltZW50IFJlcXVlc3QgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUGF5bWVudF9SZXF1ZXN0X0FQSSkuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpcyBjb25zaWRlcmVkIGEgbGVnYWN5IGF0dHJpYnV0ZSBhbmQgcmVkZWZpbmVkIGFzIGBhbGxvdz0icGF5bWVudCJgLid9LHtuYW1lOiJjc3AiLGRlc2NyaXB0aW9uOidBIFtDb250ZW50IFNlY3VyaXR5IFBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApIGVuZm9yY2VkIGZvciB0aGUgZW1iZWRkZWQgcmVzb3VyY2UuIFNlZSBbYEhUTUxJRnJhbWVFbGVtZW50LmNzcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSUZyYW1lRWxlbWVudC9jc3AgIlRoZSBjc3AgcHJvcGVydHkgb2YgdGhlIEhUTUxJRnJhbWVFbGVtZW50IGludGVyZmFjZSBzcGVjaWZpZXMgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHRoYXQgYW4gZW1iZWRkZWQgZG9jdW1lbnQgbXVzdCBhZ3JlZSB0byBlbmZvcmNlIHVwb24gaXRzZWxmLiIpIGZvciBkZXRhaWxzLid9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiVGhlIGRvd25sb2FkIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYDxpZnJhbWU+YCdzIGBzcmNgIGF0dHJpYnV0ZS4gQWxsb3dlZCB2YWx1ZXM6XG5cbmBhdXRvYCAoZGVmYXVsdClcblxuTm8gcHJlZmVyZW5jZS4gVGhlIGJyb3dzZXIgdXNlcyBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UuXG5cbmBoaWdoYFxuXG5UaGUgcmVzb3VyY2Ugc2hvdWxkIGJlIGRvd25sb2FkZWQgYmVmb3JlIG90aGVyIGxvd2VyLXByaW9yaXR5IHBhZ2UgcmVzb3VyY2VzLlxuXG5gbG93YFxuXG5UaGUgcmVzb3VyY2Ugc2hvdWxkIGJlIGRvd25sb2FkZWQgYWZ0ZXIgb3RoZXIgaGlnaGVyLXByaW9yaXR5IHBhZ2UgcmVzb3VyY2VzLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBmcmFtZVwncyByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcmA6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIChkZWZhdWx0KTogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50IHRvIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvb3JpZ2luICJvcmlnaW46IFdlYiBjb250ZW50XCdzIG9yaWdpbiBpcyBkZWZpbmVkIGJ5IHRoZSBzY2hlbWUgKHByb3RvY29sKSwgaG9zdCAoZG9tYWluKSwgYW5kIHBvcnQgb2YgdGhlIFVSTCB1c2VkIHRvIGFjY2VzcyBpdC4gVHdvIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gb25seSB3aGVuIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGFsbCBtYXRjaC4iKXMgd2l0aG91dCBbVExTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1RMUyAiVExTOiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUyksIHByZXZpb3VzbHkga25vd24gYXMgU2VjdXJlIFNvY2tldHMgTGF5ZXIgKFNTTCksIGlzIGEgcHJvdG9jb2wgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gY29tbXVuaWNhdGUgc2VjdXJlbHkgYWNyb3NzIGEgbmV0d29yaywgcHJldmVudGluZyB0YW1wZXJpbmcgd2l0aCBhbmQgZWF2ZXNkcm9wcGluZyBvbiBlbWFpbCwgd2ViIGJyb3dzaW5nLCBtZXNzYWdpbmcsIGFuZCBvdGhlciBwcm90b2NvbHMuIikgKFtIVFRQU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9IVFRQUyAiSFRUUFM6IEhUVFBTIChIVFRQIFNlY3VyZSkgaXMgYW4gZW5jcnlwdGVkIHZlcnNpb24gb2YgdGhlIEhUVFAgcHJvdG9jb2wuIEl0IHVzdWFsbHkgdXNlcyBTU0wgb3IgVExTIHRvIGVuY3J5cHQgYWxsIGNvbW11bmljYXRpb24gYmV0d2VlbiBhIGNsaWVudCBhbmQgYSBzZXJ2ZXIuIFRoaXMgc2VjdXJlIGNvbm5lY3Rpb24gYWxsb3dzIGNsaWVudHMgdG8gc2FmZWx5IGV4Y2hhbmdlIHNlbnNpdGl2ZSBkYXRhIHdpdGggYSBzZXJ2ZXIsIGZvciBleGFtcGxlIGZvciBiYW5raW5nIGFjdGl2aXRpZXMgb3Igb25saW5lIHNob3BwaW5nLiIpKS5cbiogICBgb3JpZ2luYDogVGhlIHNlbnQgcmVmZXJyZXIgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHJlZmVycmluZyBwYWdlOiBpdHMgW3NjaGVtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9BcmNoaXZlL01vemlsbGEvVVJJU2NoZW1lKSwgW2hvc3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvaG9zdCAiaG9zdDogQSBob3N0IGlzIGEgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgSW50ZXJuZXQgKG9yIGEgbG9jYWwgbmV0d29yaykuIFNvbWUgaG9zdHMgY2FsbGVkIHNlcnZlcnMgb2ZmZXIgYWRkaXRpb25hbCBzZXJ2aWNlcyBsaWtlIHNlcnZpbmcgd2VicGFnZXMgb3Igc3RvcmluZyBmaWxlcyBhbmQgZW1haWxzLiIpLCBhbmQgW3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvcG9ydCAicG9ydDogRm9yIGEgY29tcHV0ZXIgY29ubmVjdGVkIHRvIGEgbmV0d29yayB3aXRoIGFuIElQIGFkZHJlc3MsIGEgcG9ydCBpcyBhIGNvbW11bmljYXRpb24gZW5kcG9pbnQuIFBvcnRzIGFyZSBkZXNpZ25hdGVkIGJ5IG51bWJlcnMsIGFuZCBiZWxvdyAxMDI0IGVhY2ggcG9ydCBpcyBhc3NvY2lhdGVkIGJ5IGRlZmF1bHQgd2l0aCBhIHNwZWNpZmljIHByb3RvY29sLiIpLlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBUaGUgcmVmZXJyZXIgc2VudCB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LiBOYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBzdGlsbCBpbmNsdWRlIHRoZSBwYXRoLlxuKiAgIGBzYW1lLW9yaWdpbmA6IEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZSBvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvU2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lIG9yaWdpbjogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIiksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuKiAgIGBzdHJpY3Qtb3JpZ2luYDogT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChIVFRQU+KGkkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUifV19LHtuYW1lOiJlbWJlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGVtYmVkIGVsZW1lbnQgcHJvdmlkZXMgYW4gaW50ZWdyYXRpb24gcG9pbnQgZm9yIGFuIGV4dGVybmFsICh0eXBpY2FsbHkgbm9uLUhUTUwpIGFwcGxpY2F0aW9uIG9yIGludGVyYWN0aXZlIGNvbnRlbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSTMKgb2YgdGhlIHJlc291cmNlIGJlaW5nIGVtYmVkZGVkLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUXCoHR5cGUgdG8gdXNlIHRvIHNlbGVjdCB0aGUgcGx1Zy1pbiB0byBpbnN0YW50aWF0ZS4ifX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIHdpZHRoIG9mIHRoZSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIFRoaXMgbXVzdCBiZSBhbiBhYnNvbHV0ZSB2YWx1ZTsgcGVyY2VudGFnZXMgYXJlIF9ub3RfIGFsbG93ZWQuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXNwbGF5ZWQgaGVpZ2h0IG9mIHRoZSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIFRoaXMgbXVzdCBiZSBhbiBhYnNvbHV0ZSB2YWx1ZTsgcGVyY2VudGFnZXMgYXJlIF9ub3RfIGFsbG93ZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZW1iZWQifV19LHtuYW1lOiJvYmplY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvYmplY3QgZWxlbWVudCBjYW4gcmVwcmVzZW50IGFuIGV4dGVybmFsIHJlc291cmNlLCB3aGljaCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZSwgd2lsbCBlaXRoZXIgYmUgdHJlYXRlZCBhcyBhbiBpbWFnZSwgYXMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgb3IgYXMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UgdG8gYmUgcHJvY2Vzc2VkIGJ5IGEgcGx1Z2luLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBvZiB0aGUgcmVzb3VyY2UgYXMgYSB2YWxpZCBVUkwuIEF0IGxlYXN0IG9uZSBvZiAqKmRhdGEqKiBhbmQgKip0eXBlKiogbXVzdCBiZSBkZWZpbmVkLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFtjb250ZW50IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ29udGVudF90eXBlKSBvZiB0aGUgcmVzb3VyY2Ugc3BlY2lmaWVkIGJ5ICoqZGF0YSoqLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGVtdXN0bWF0Y2giLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgKip0eXBlKiogYXR0cmlidXRlIGFuZCB0aGUgYWN0dWFsIFtjb250ZW50IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ29udGVudF90eXBlKSBvZiB0aGUgcmVzb3VyY2UgbXVzdCBtYXRjaCB0byBiZSB1c2VkLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdmFsaWQgYnJvd3NpbmcgY29udGV4dCAoSFRNTDUpLCBvciB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCAoSFRNTCA0KS4ifX0se25hbWU6InVzZW1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBoYXNoLW5hbWUgcmVmZXJlbmNlIHRvIGEgW2A8bWFwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAgXCJUaGUgSFRNTCA8bWFwPiBlbGVtZW50IGlzIHVzZWQgd2l0aCA8YXJlYT4gZWxlbWVudHMgdG8gZGVmaW5lIGFuIGltYWdlIG1hcCAoYSBjbGlja2FibGUgbGluayBhcmVhKS5cIikgZWxlbWVudDsgdGhhdCBpcyBhICcjJyBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgYSBbYG5hbWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwI2F0dHItbmFtZSkgb2YgYSBtYXAgZWxlbWVudC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQsIGlmIGFueSwgdGhhdCB0aGUgb2JqZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgX2Zvcm0gb3duZXJfKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBJRCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBkaXNwbGF5IHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gLS0gKEFic29sdXRlIHZhbHVlcyBvbmx5LiBbTk8gcGVyY2VudGFnZXNdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkaW1lbnNpb24tYXR0cmlidXRlcykpIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGRpc3BsYXllZCByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiYXJjaGl2ZSIsZGVzY3JpcHRpb246IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgVVJJcyBmb3IgYXJjaGl2ZXMgb2YgcmVzb3VyY2VzIGZvciB0aGUgb2JqZWN0LiJ9LHtuYW1lOiJib3JkZXIiLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggb2YgYSBib3JkZXIgYXJvdW5kIHRoZSBjb250cm9sLCBpbiBwaXhlbHMuIn0se25hbWU6ImNsYXNzaWQiLGRlc2NyaXB0aW9uOiJUaGUgVVJJIG9mIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbi4gSXQgY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCwgb3IgaW4gcGxhY2Ugb2YsIHRoZSAqKmRhdGEqKiBhdHRyaWJ1dGUuIn0se25hbWU6ImNvZGViYXNlIixkZXNjcmlwdGlvbjoiVGhlIGJhc2UgcGF0aCB1c2VkIHRvIHJlc29sdmUgcmVsYXRpdmUgVVJJcyBzcGVjaWZpZWQgYnkgKipjbGFzc2lkKiosICoqZGF0YSoqLCBvciAqKmFyY2hpdmUqKi4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgaXMgdGhlIGJhc2UgVVJJIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LiJ9LHtuYW1lOiJjb2RldHlwZSIsZGVzY3JpcHRpb246IlRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGRhdGEgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLiJ9LHtuYW1lOiJkZWNsYXJlIixkZXNjcmlwdGlvbjoiVGhlIHByZXNlbmNlIG9mIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbWFrZXMgdGhpcyBlbGVtZW50IGEgZGVjbGFyYXRpb24gb25seS4gVGhlIG9iamVjdCBtdXN0IGJlIGluc3RhbnRpYXRlZCBieSBhIHN1YnNlcXVlbnQgYDxvYmplY3Q+YCBlbGVtZW50LiBJbiBIVE1MNSwgcmVwZWF0IHRoZSA8b2JqZWN0PiBlbGVtZW50IGNvbXBsZXRlbHkgZWFjaCB0aGF0IHRoYXQgdGhlIHJlc291cmNlIGlzIHJldXNlZC4ifSx7bmFtZToic3RhbmRieSIsZGVzY3JpcHRpb246IkEgbWVzc2FnZSB0aGF0IHRoZSBicm93c2VyIGNhbiBzaG93IHdoaWxlIGxvYWRpbmcgdGhlIG9iamVjdCdzIGltcGxlbWVudGF0aW9uIGFuZCBkYXRhLiJ9LHtuYW1lOiJ0YWJpbmRleCIsZGVzY3JpcHRpb246IlRoZSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBpbiB0aGUgdGFiYmluZyBuYXZpZ2F0aW9uIG9yZGVyIGZvciB0aGUgY3VycmVudCBkb2N1bWVudC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29iamVjdCJ9XX0se25hbWU6InBhcmFtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGFyYW0gZWxlbWVudCBkZWZpbmVzIHBhcmFtZXRlcnMgZm9yIHBsdWdpbnMgaW52b2tlZCBieSBvYmplY3QgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJOYW1lIG9mIHRoZSBwYXJhbWV0ZXIuIn19LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246J09ubHkgdXNlZCBpZiB0aGUgYHZhbHVldHlwZWAgaXMgc2V0IHRvICJyZWYiLiBTcGVjaWZpZXMgdGhlIE1JTUUgdHlwZSBvZiB2YWx1ZXMgZm91bmQgYXQgdGhlIFVSSSBzcGVjaWZpZWQgYnkgdmFsdWUuJ30se25hbWU6InZhbHVldHlwZSIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBkYXRhOiBEZWZhdWx0IHZhbHVlLiBUaGUgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBvYmplY3RcJ3MgaW1wbGVtZW50YXRpb24gYXMgYSBzdHJpbmcuXG4qICAgcmVmOiBUaGUgdmFsdWUgaXMgYSBVUkkgdG8gYSByZXNvdXJjZSB3aGVyZSBydW4tdGltZSB2YWx1ZXMgYXJlIHN0b3JlZC5cbiogICBvYmplY3Q6IEFuIElEIG9mIGFub3RoZXIgW2A8b2JqZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QgIlRoZSBIVE1MIDxvYmplY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2ggY2FuIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGEgcmVzb3VyY2UgdG8gYmUgaGFuZGxlZCBieSBhIHBsdWdpbi4iKSBpbiB0aGUgc2FtZSBkb2N1bWVudC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BhcmFtIn1dfSx7bmFtZToidmlkZW8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgdmlkZW8gZWxlbWVudCBpcyB1c2VkIGZvciBwbGF5aW5nIHZpZGVvcyBvciBtb3ZpZXMsIGFuZCBhdWRpbyBmaWxlcyB3aXRoIGNhcHRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMifSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byJ9LHtuYW1lOiJwb3N0ZXIifSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIn0se25hbWU6ImF1dG9wbGF5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTsgaWYgc3BlY2lmaWVkLCB0aGUgdmlkZW8gYXV0b21hdGljYWxseSBiZWdpbnMgdG8gcGxheSBiYWNrIGFzIHNvb24gYXMgaXQgY2FuIGRvIHNvIHdpdGhvdXQgc3RvcHBpbmcgdG8gZmluaXNoIGxvYWRpbmcgdGhlIGRhdGEuIn19LHtuYW1lOiJtZWRpYWdyb3VwIn0se25hbWU6Imxvb3AiLHZhbHVlU2V0OiJ2In0se25hbWU6Im11dGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJjb250cm9scyIsdmFsdWVTZXQ6InYifSx7bmFtZToid2lkdGgifSx7bmFtZToiaGVpZ2h0In1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyJ9XX0se25hbWU6ImF1ZGlvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBhdWRpbyBlbGVtZW50IHJlcHJlc2VudHMgYSBzb3VuZCBvciBhdWRpbyBzdHJlYW0uIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSTCBvZiB0aGUgYXVkaW8gdG8gZW1iZWQuIFRoaXMgaXMgc3ViamVjdCB0byBbSFRUUCBhY2Nlc3MgY29udHJvbHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRUUF9hY2Nlc3NfY29udHJvbCkuIFRoaXMgaXMgb3B0aW9uYWw7IHlvdSBtYXkgaW5zdGVhZCB1c2UgdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlICJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuIikgZWxlbWVudCB3aXRoaW4gdGhlIGF1ZGlvIGJsb2NrIHRvIHNwZWNpZnkgdGhlIGF1ZGlvIHRvIGVtYmVkLid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgQ09SUyB0byBmZXRjaCB0aGUgcmVsYXRlZCBpbWFnZS4gW0NPUlMtZW5hYmxlZCByZXNvdXJjZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgX3RhaW50ZWRfLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG5hbm9ueW1vdXNcblxuU2VuZHMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB3aXRob3V0IGEgY3JlZGVudGlhbC4gSW4gb3RoZXIgd29yZHMsIGl0IHNlbmRzIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIgd2l0aG91dCBhIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAoYnkgbm90IHNldHRpbmcgdGhlIGBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXywgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG51c2UtY3JlZGVudGlhbHNcblxuU2VuZHMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB3aXRoIGEgY3JlZGVudGlhbC4gSW4gb3RoZXIgd29yZHMsIGl0IHNlbmRzIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIgd2l0aCBhIGNvb2tpZSwgYSBjZXJ0aWZpY2F0ZSwgb3IgcGVyZm9ybWluZyBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlICh0aHJvdWdoIGBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsczpgIEhUVFAgaGVhZGVyKSwgdGhlIGltYWdlIHdpbGwgYmUgX3RhaW50ZWRfIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuV2hlbiBub3QgcHJlc2VudCwgdGhlIHJlc291cmNlIGlzIGZldGNoZWQgd2l0aG91dCBhIENPUlMgcmVxdWVzdCAoaS5lLiB3aXRob3V0IHNlbmRpbmcgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciksIHByZXZlbnRpbmcgaXRzIG5vbi10YWludGVkIHVzZWQgaW4gW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudHMuIElmIGludmFsaWQsIGl0IGlzIGhhbmRsZWQgYXMgaWYgdGhlIGVudW1lcmF0ZWQga2V5d29yZCAqKmFub255bW91cyoqIHdhcyB1c2VkLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJwcmVsb2FkIix2YWx1ZVNldDoicGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIGhpbnQgdG8gdGhlIGJyb3dzZXIgYWJvdXQgd2hhdCB0aGUgYXV0aG9yIHRoaW5rcyB3aWxsIGxlYWQgdG8gdGhlIGJlc3QgdXNlciBleHBlcmllbmNlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgbm9uZWA6IEluZGljYXRlcyB0aGF0IHRoZSBhdWRpbyBzaG91bGQgbm90IGJlIHByZWxvYWRlZC5cbiogICBgbWV0YWRhdGFgOiBJbmRpY2F0ZXMgdGhhdCBvbmx5IGF1ZGlvIG1ldGFkYXRhIChlLmcuIGxlbmd0aCkgaXMgZmV0Y2hlZC5cbiogICBgYXV0b2A6IEluZGljYXRlcyB0aGF0IHRoZSB3aG9sZSBhdWRpbyBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLCBldmVuIGlmIHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byB1c2UgaXQuXG4qICAgX2VtcHR5IHN0cmluZ186IEEgc3lub255bSBvZiB0aGUgYGF1dG9gIHZhbHVlLlxuXG5JZiBub3Qgc2V0LCBgcHJlbG9hZGAncyBkZWZhdWx0IHZhbHVlIGlzIGJyb3dzZXItZGVmaW5lZCAoaS5lLiBlYWNoIGJyb3dzZXIgbWF5IGhhdmUgaXRzIG93biBkZWZhdWx0IHZhbHVlKS4gVGhlIHNwZWMgYWR2aXNlcyBpdCB0byBiZSBzZXQgdG8gYG1ldGFkYXRhYC5cblxuKipVc2FnZSBub3RlczoqKlxuXG4qICAgVGhlIGBhdXRvcGxheWAgYXR0cmlidXRlIGhhcyBwcmVjZWRlbmNlIG92ZXLCoGBwcmVsb2FkYC4gSWYgYGF1dG9wbGF5YCBpcyBzcGVjaWZpZWQsIHRoZSBicm93c2VyIHdvdWxkIG9idmlvdXNseSBuZWVkIHRvIHN0YXJ0IGRvd25sb2FkaW5nIHRoZSBhdWRpbyBmb3IgcGxheWJhY2suXG4qICAgVGhlIGJyb3dzZXIgaXMgbm90IGZvcmNlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiB0byBmb2xsb3cgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlOyBpdCBpcyBhIG1lcmUgaGludC4ifX0se25hbWU6ImF1dG9wbGF5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTrCoGlmIHNwZWNpZmllZCwgdGhlIGF1ZGlvIHdpbGwgYXV0b21hdGljYWxseSBiZWdpbiBwbGF5YmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbywgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZW50aXJlIGF1ZGlvIGZpbGUgdG8gZmluaXNoIGRvd25sb2FkaW5nLlxuXG4qKk5vdGUqKjogU2l0ZXMgdGhhdCBhdXRvbWF0aWNhbGx5IHBsYXkgYXVkaW8gKG9yIHZpZGVvcyB3aXRoIGFuIGF1ZGlvIHRyYWNrKSBjYW4gYmUgYW4gdW5wbGVhc2FudCBleHBlcmllbmNlIGZvciB1c2Vycywgc28gc2hvdWxkIGJlIGF2b2lkZWQgd2hlbiBwb3NzaWJsZS4gSWYgeW91IG11c3Qgb2ZmZXIgYXV0b3BsYXkgZnVuY3Rpb25hbGl0eSwgeW91IHNob3VsZCBtYWtlIGl0IG9wdC1pbiAocmVxdWlyaW5nIGEgdXNlciB0byBzcGVjaWZpY2FsbHkgZW5hYmxlIGl0KS4gSG93ZXZlciwgdGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgbWVkaWEgZWxlbWVudHMgd2hvc2Ugc291cmNlIHdpbGwgYmUgc2V0IGF0IGEgbGF0ZXIgdGltZSwgdW5kZXIgdXNlciBjb250cm9sLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTrCoGlmIHNwZWNpZmllZCwgdGhlIGF1ZGlvIHBsYXllciB3aWxswqBhdXRvbWF0aWNhbGx5IHNlZWsgYmFjayB0byB0aGUgc3RhcnTCoHVwb24gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgYXVkaW8uIn19LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYXVkaW8gd2lsbCBiZSBpbml0aWFsbHkgc2lsZW5jZWQuIEl0cyBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuIn19LHtuYW1lOiJjb250cm9scyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgYXR0cmlidXRlIGlzIHByZXNlbnQsIHRoZSBicm93c2VyIHdpbGwgb2ZmZXIgY29udHJvbHMgdG8gYWxsb3cgdGhlIHVzZXIgdG8gY29udHJvbCBhdWRpbyBwbGF5YmFjaywgaW5jbHVkaW5nIHZvbHVtZSwgc2Vla2luZywgYW5kIHBhdXNlL3Jlc3VtZSBwbGF5YmFjay4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyJ9XX0se25hbWU6InNvdXJjZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNvdXJjZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgbXVsdGlwbGUgYWx0ZXJuYXRpdmUgbWVkaWEgcmVzb3VyY2VzIGZvciBtZWRpYSBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUmVxdWlyZWQgZm9yIFtgPGF1ZGlvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyAiVGhlIEhUTUwgPGF1ZGlvPiBlbGVtZW50IGlzIHVzZWQgdG8gZW1iZWQgc291bmQgY29udGVudCBpbiBkb2N1bWVudHMuIEl0IG1heSBjb250YWluIG9uZSBvciBtb3JlIGF1ZGlvIHNvdXJjZXMsIHJlcHJlc2VudGVkIHVzaW5nIHRoZSBzcmMgYXR0cmlidXRlIG9yIHRoZSA8c291cmNlPiBlbGVtZW50OsKgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2UgdGhlIG1vc3Qgc3VpdGFibGUgb25lLiBJdCBjYW4gYWxzbyBiZSB0aGUgZGVzdGluYXRpb24gZm9yIHN0cmVhbWVkIG1lZGlhLCB1c2luZyBhIE1lZGlhU3RyZWFtLiIpIGFuZCBbYDx2aWRlbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8gIlRoZSBIVE1MIFZpZGVvIGVsZW1lbnQgKDx2aWRlbz4pIGVtYmVkcyBhIG1lZGlhIHBsYXllciB3aGljaCBzdXBwb3J0cyB2aWRlbyBwbGF5YmFjayBpbnRvIHRoZSBkb2N1bWVudC4iKSwgYWRkcmVzcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2UuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIHdoZW4gdGhlIGA8c291cmNlPmAgZWxlbWVudCBpcyBwbGFjZWQgaW5zaWRlIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgTUlNRS10eXBlIG9mIHRoZSByZXNvdXJjZSwgb3B0aW9uYWxseSB3aXRoIGEgYGNvZGVjc2AgcGFyYW1ldGVyLiBTZWUgW1JGQyA0MjgxXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDI4MSkgZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IGNvZGVjcy4ifX0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjonSXMgYSBsaXN0IG9mIHNvdXJjZSBzaXplcyB0aGF0IGRlc2NyaWJlcyB0aGUgZmluYWwgcmVuZGVyZWQgd2lkdGggb2YgdGhlIGltYWdlIHJlcHJlc2VudGVkIGJ5IHRoZSBzb3VyY2UuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBtZWRpYSBjb25kaXRpb24tbGVuZ3RoIHBhaXJzLiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgdG8gZGV0ZXJtaW5lLCBiZWZvcmUgbGF5aW5nIHRoZSBwYWdlIG91dCwgd2hpY2ggaW1hZ2UgZGVmaW5lZCBpbiBbYHNyY3NldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UjYXR0ci1zcmNzZXQpIHRvIHVzZS4gIFxuVGhlIGBzaXplc2AgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgaXMgdGhlIGRpcmVjdCBjaGlsZCBvZiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9LHtuYW1lOiJzcmNzZXQiLGRlc2NyaXB0aW9uOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2YgcG9zc2libGUgaW1hZ2VzIHJlcHJlc2VudGVkIGJ5IHRoZSBzb3VyY2UgZm9yIHRoZSBicm93c2VyIHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBvbmUgVVJMIHRvIGFuIGltYWdlLFxuMi4gIGEgd2lkdGggZGVzY3JpcHRvciwgdGhhdCBpcyBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgYCd3J2AuIFRoZSBkZWZhdWx0IHZhbHVlLCBpZiBtaXNzaW5nLCBpcyB0aGUgaW5maW5pdHkuXG4zLiAgYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgYCd4J2AuIFRoZSBkZWZhdWx0IHZhbHVlLCBpZiBtaXNzaW5nLCBpcyBgMXhgLlxuXG5FYWNoIHN0cmluZyBpbiB0aGUgbGlzdCBtdXN0IGhhdmUgYXQgbGVhc3QgYSB3aWR0aCBkZXNjcmlwdG9yIG9yIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIHRvIGJlIHZhbGlkLiBBbW9uZyB0aGUgbGlzdCwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2FtZSB0dXBsZSBvZiB3aWR0aCBkZXNjcmlwdG9yIGFuZCBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IuICBcblRoZSBicm93c2VyIGNob29zZXMgdGhlIG1vc3QgYWRlcXVhdGUgaW1hZ2UgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHBvaW50IG9mIHRpbWUuICBcblRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUgaGFzIGFuIGVmZmVjdCBvbmx5IHdoZW4gdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlIFwiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LlwiKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIFwiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLlwiKSBlbGVtZW50LiJ9LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246J1tNZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvTWVkaWFfcXVlcmllcykgb2YgdGhlIHJlc291cmNlXCdzIGludGVuZGVkIG1lZGlhOyB0aGlzIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSJ9XX0se25hbWU6InRyYWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHJhY2sgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IGV4cGxpY2l0IGV4dGVybmFsIHRpbWVkIHRleHQgdHJhY2tzIGZvciBtZWRpYSBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6ImRlZmF1bHQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdHJhY2sgc2hvdWxkIGJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgaW5kaWNhdGUgdGhhdCBhbm90aGVyIHRyYWNrIGlzIG1vcmUgYXBwcm9wcmlhdGUuIFRoaXMgbWF5IG9ubHkgYmUgdXNlZCBvbiBvbmUgYHRyYWNrYCBlbGVtZW50IHBlciBtZWRpYSBlbGVtZW50LiJ9fSx7bmFtZToia2luZCIsdmFsdWVTZXQ6InRrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJIb3cgdGhlIHRleHQgdHJhY2sgaXMgbWVhbnQgdG8gYmUgdXNlZC4gSWYgb21pdHRlZCB0aGUgZGVmYXVsdCBraW5kIGlzIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCBpdCB3aWxsIHVzZSB0aGUgYHN1YnRpdGxlc2AuIElmIHRoZSBhdHRyaWJ1dGUgY29udGFpbnMgYW4gaW52YWxpZCB2YWx1ZSwgaXQgd2lsbCB1c2UgYG1ldGFkYXRhYC4gKFZlcnNpb25zIG9mIENocm9tZSBlYXJsaWVyIHRoYW4gNTIgdHJlYXRlZCBhbiBpbnZhbGlkIHZhbHVlIGFzIGBzdWJ0aXRsZXNgLinCoFRoZSBmb2xsb3dpbmcga2V5d29yZHMgYXJlIGFsbG93ZWQ6XG5cbiogICBgc3VidGl0bGVzYFxuICAgICogICBTdWJ0aXRsZXMgcHJvdmlkZSB0cmFuc2xhdGlvbiBvZiBjb250ZW50IHRoYXQgY2Fubm90IGJlIHVuZGVyc3Rvb2QgYnkgdGhlIHZpZXdlci4gRm9yIGV4YW1wbGUgZGlhbG9ndWUgb3IgdGV4dCB0aGF0IGlzIG5vdCBFbmdsaXNoIGluIGFuIEVuZ2xpc2ggbGFuZ3VhZ2UgZmlsbS5cbiAgICAqICAgU3VidGl0bGVzIG1heSBjb250YWluIGFkZGl0aW9uYWwgY29udGVudCwgdXN1YWxseSBleHRyYSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSB0aGUgdGV4dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBTdGFyIFdhcnMgZmlsbXMsIG9yIHRoZSBkYXRlLCB0aW1lLCBhbmQgbG9jYXRpb24gb2YgYSBzY2VuZS5cbiogICBgY2FwdGlvbnNgXG4gICAgKiAgIENsb3NlZCBjYXB0aW9ucyBwcm92aWRlIGEgdHJhbnNjcmlwdGlvbiBhbmQgcG9zc2libHkgYSB0cmFuc2xhdGlvbiBvZiBhdWRpby5cbiAgICAqICAgSXQgbWF5IGluY2x1ZGUgaW1wb3J0YW50IG5vbi12ZXJiYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBtdXNpYyBjdWVzIG9yIHNvdW5kIGVmZmVjdHMuIEl0IG1heSBpbmRpY2F0ZSB0aGUgY3VlJ3Mgc291cmNlIChlLmcuIG11c2ljLCB0ZXh0LCBjaGFyYWN0ZXIpLlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBkZWFmIG9yIHdoZW4gdGhlIHNvdW5kIGlzIG11dGVkLlxuKiAgIGBkZXNjcmlwdGlvbnNgXG4gICAgKiAgIFRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHZpZGVvIGNvbnRlbnQuXG4gICAgKiAgIFN1aXRhYmxlIGZvciB1c2VycyB3aG8gYXJlIGJsaW5kIG9yIHdoZXJlIHRoZSB2aWRlbyBjYW5ub3QgYmUgc2Vlbi5cbiogICBgY2hhcHRlcnNgXG4gICAgKiAgIENoYXB0ZXIgdGl0bGVzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIHdoZW4gdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgbWVkaWEgcmVzb3VyY2UuXG4qICAgYG1ldGFkYXRhYFxuICAgICogICBUcmFja3MgdXNlZCBieSBzY3JpcHRzLiBOb3QgdmlzaWJsZSB0byB0aGUgdXNlci4ifX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHVzZXItcmVhZGFibGUgdGl0bGUgb2YgdGhlIHRleHQgdHJhY2sgd2hpY2ggaXMgdXNlZCBieSB0aGUgYnJvd3NlciB3aGVuIGxpc3RpbmcgYXZhaWxhYmxlIHRleHQgdHJhY2tzLiJ9fSx7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBZGRyZXNzIG9mIHRoZSB0cmFjayAoYC52dHRgIGZpbGUpLiBNdXN0IGJlIGEgdmFsaWQgVVJMLiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNwZWNpZmllZCBhbmQgaXRzIFVSTCB2YWx1ZSBtdXN0IGhhdmUgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBkb2N1bWVudCDigJQgdW5sZXNzIHRoZSBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBvciBbYDx2aWRlbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8gIlRoZSBIVE1MIFZpZGVvIGVsZW1lbnQgKDx2aWRlbz4pIGVtYmVkcyBhIG1lZGlhIHBsYXllciB3aGljaCBzdXBwb3J0cyB2aWRlbyBwbGF5YmFjayBpbnRvIHRoZSBkb2N1bWVudC4iKSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgYHRyYWNrYCBlbGVtZW50IGhhcyBhIFtgY3Jvc3NvcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgYXR0cmlidXRlLid9fSx7bmFtZToic3JjbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrIHRleHQgZGF0YS4gSXQgbXVzdCBiZSBhIHZhbGlkIFtCQ1AgNDddKGh0dHBzOi8vcjEyYS5naXRodWIuaW8vYXBwLXN1YnRhZ3MvKSBsYW5ndWFnZSB0YWcuIElmIHRoZSBga2luZGAgYXR0cmlidXRlIGlzIHNldCB0b8KgYHN1YnRpdGxlcyxgIHRoZW4gYHNyY2xhbmdgIG11c3QgYmUgZGVmaW5lZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90cmFjayJ9XX0se25hbWU6Im1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1hcCBlbGVtZW50LCBpbiBjb25qdW5jdGlvbiB3aXRoIGFuIGltZyBlbGVtZW50IGFuZCBhbnkgYXJlYSBlbGVtZW50IGRlc2NlbmRhbnRzLCBkZWZpbmVzIGFuIGltYWdlIG1hcC4gVGhlIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIGF0dHJpYnV0ZSBnaXZlcyB0aGUgbWFwIGEgbmFtZSBzbyB0aGF0IGl0IGNhbiBiZSByZWZlcmVuY2VkLiBUaGUgYXR0cmlidXRlIG11c3QgYmUgcHJlc2VudCBhbmQgbXVzdCBoYXZlIGEgbm9uLWVtcHR5IHZhbHVlIHdpdGggbm8gc3BhY2UgY2hhcmFjdGVycy4gVGhlIHZhbHVlIG9mIHRoZSBuYW1lIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSBhIGNvbXBhdGliaWxpdHktY2FzZWxlc3MgbWF0Y2ggZm9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgYW5vdGhlciBtYXAgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhlIGlkIGF0dHJpYnV0ZSBpcyBhbHNvIHNwZWNpZmllZCwgYm90aCBhdHRyaWJ1dGVzIG11c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAifV19LHtuYW1lOiJhcmVhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJlYSBlbGVtZW50IHJlcHJlc2VudHMgZWl0aGVyIGEgaHlwZXJsaW5rIHdpdGggc29tZSB0ZXh0IGFuZCBhIGNvcnJlc3BvbmRpbmcgYXJlYSBvbiBhbiBpbWFnZSBtYXAsIG9yIGEgZGVhZCBhcmVhIG9uIGFuIGltYWdlIG1hcC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWx0In0se25hbWU6ImNvb3JkcyJ9LHtuYW1lOiJzaGFwZSIsdmFsdWVTZXQ6InNoIn0se25hbWU6ImhyZWYifSx7bmFtZToidGFyZ2V0In0se25hbWU6ImRvd25sb2FkIn0se25hbWU6InBpbmcifSx7bmFtZToicmVsIn0se25hbWU6ImhyZWZsYW5nIn0se25hbWU6InR5cGUifSx7bmFtZToiYWNjZXNza2V5IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEga2V5Ym9hcmQgbmF2aWdhdGlvbiBhY2NlbGVyYXRvciBmb3IgdGhlIGVsZW1lbnQuIFByZXNzaW5nIEFMVCBvciBhIHNpbWlsYXIga2V5IGluIGFzc29jaWF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2VsZWN0cyB0aGUgZm9ybSBjb250cm9sIGNvcnJlbGF0ZWQgd2l0aCB0aGF0IGtleSBzZXF1ZW5jZS4gUGFnZSBkZXNpZ25lcnMgYXJlIGZvcmV3YXJuZWQgdG8gYXZvaWQga2V5IHNlcXVlbmNlcyBhbHJlYWR5IGJvdW5kIHRvIGJyb3dzZXJzLiBUaGlzIGF0dHJpYnV0ZSBpcyBnbG9iYWwgc2luY2UgSFRNTDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcmVhIn1dfSx7bmFtZToidGFibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0YWJsZSBlbGVtZW50IHJlcHJlc2VudHMgZGF0YSB3aXRoIG1vcmUgdGhhbiBvbmUgZGltZW5zaW9uLCBpbiB0aGUgZm9ybSBvZiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJib3JkZXIifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBob3cgdGhlIHRhYmxlIG11c3QgYmUgYWxpZ25lZCBpbnNpZGUgdGhlIGNvbnRhaW5pbmcgZG9jdW1lbnQuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgbGVmdDogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkb2N1bWVudDtcbiogICBjZW50ZXI6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgaW4gdGhlIGNlbnRlciBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgcmlnaHQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRvY3VtZW50LlxuXG4qKlVzYWdlIE5vdGUqKlxuXG4qICAgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlKiosIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFRoZSBbYDx0YWJsZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUgIlRoZSBIVE1MIDx0YWJsZT4gZWxlbWVudCByZXByZXNlbnRzIHRhYnVsYXIgZGF0YSDigJQgdGhhdCBpcywgaW5mb3JtYXRpb24gcHJlc2VudGVkIGluIGEgdHdvLWRpbWVuc2lvbmFsIHRhYmxlIGNvbXByaXNlZCBvZiByb3dzIGFuZCBjb2x1bW5zIG9mIGNlbGxzIGNvbnRhaW5pbmcgZGF0YS4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBTZXQgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgYW5kIFtgbWFyZ2luLXJpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSB0byBgYXV0b2Agb3IgW2BtYXJnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luICJUaGUgbWFyZ2luIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiBhbGwgZm91ciBzaWRlcyBvZiBhbiBlbGVtZW50LiBJdCBpcyBhIHNob3J0aGFuZCBmb3IgbWFyZ2luLXRvcCwgbWFyZ2luLXJpZ2h0LCBtYXJnaW4tYm90dG9tLCBhbmQgbWFyZ2luLWxlZnQuIikgdG8gYDAgYXV0b2AgdG8gYWNoaWV2ZSBhbiBlZmZlY3QgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBhbGlnbiBhdHRyaWJ1dGUuXG4qICAgUHJpb3IgdG8gRmlyZWZveCA0LCBGaXJlZm94IGFsc28gc3VwcG9ydGVkIHRoZSBgbWlkZGxlYCwgYGFic21pZGRsZWAsIGFuZCBgYWJzY2VudGVyYCB2YWx1ZXMgYXMgc3lub255bXMgb2YgYGNlbnRlcmAsIGluIHF1aXJrcyBtb2RlIG9ubHkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90YWJsZSJ9XX0se25hbWU6ImNhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGl0bGUgb2YgdGhlIHRhYmxlIHRoYXQgaXMgaXRzIHBhcmVudCwgaWYgaXQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBob3cgdGhlIGNhcHRpb24gbXVzdCBiZSBhbGlnbmVkIHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUuIEl0IG1heSBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuYGxlZnRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgbGVmdCBvZiB0aGUgdGFibGUuXG5cbmB0b3BgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCBhYm92ZSB0aGUgdGFibGUuXG5cbmByaWdodGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGFibGUuXG5cbmBib3R0b21gXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCBiZWxvdyB0aGUgdGFibGUuXG5cbioqVXNhZ2Ugbm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8Y2FwdGlvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FwdGlvbiAiVGhlIEhUTUwgVGFibGUgQ2FwdGlvbiBlbGVtZW50ICg8Y2FwdGlvbj4pIHNwZWNpZmllcyB0aGUgY2FwdGlvbiAob3IgdGl0bGUpIG9mIGEgdGFibGUsIGFuZCBpZiB1c2VkIGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hpbGQgb2YgYSA8dGFibGU+LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnRpZXMgW2BjYXB0aW9uLXNpZGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY2FwdGlvbi1zaWRlICJUaGUgY2FwdGlvbi1zaWRlIENTUyBwcm9wZXJ0eSBwdXRzIHRoZSBjb250ZW50IG9mIGEgdGFibGVcJ3MgPGNhcHRpb24+IG9uIHRoZSBzcGVjaWZpZWQgc2lkZS4gVGhlIHZhbHVlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHdyaXRpbmctbW9kZSBvZiB0aGUgdGFibGUuIikgYW5kIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24ifV19LHtuYW1lOiJjb2xncm91cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvbGdyb3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIG9uZSBvciBtb3JlIGNvbHVtbnMgaW4gdGhlIHRhYmxlIHRoYXQgaXMgaXRzIHBhcmVudCwgaWYgaXQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuIFRoZSBkZXNjZW5kYW50IFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50cyBtYXkgb3ZlcnJpZGUgdGhpcyB2YWx1ZSB1c2luZyB0aGVpciBvd24gW2BhbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1hbGlnbikgYXR0cmlidXRlLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXM6XG4gICAgKiAgIERvIG5vdCB0cnkgdG8gc2V0IHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gYSBzZWxlY3RvciBnaXZpbmcgYSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudCwgdGhleSB3b25cJ3QgaW5oZXJpdCBpdC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXNuXCd0IHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdXNlIG9uZSBgdGQ6bnRoLWNoaWxkKGFuK2IpYCBDU1Mgc2VsZWN0b3IgcGVyIGNvbHVtbiwgd2hlcmUgYSBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHRoZSBjb2x1bW5zIGluIHRoZSB0YWJsZSBhbmQgYiBpcyB0aGUgb3JkaW5hbCBwb3NpdGlvbiBvZiB0aGlzIGNvbHVtbiBpbiB0aGUgdGFibGUuIE9ubHkgYWZ0ZXIgdGhpcyBzZWxlY3RvciB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IGNhbiBiZSB1c2VkLlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lcyB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHRoZSBlZmZlY3QgY2FuIGJlIGFjaGlldmVkIGJ5IGNvbWJpbmluZyBhZGVxdWF0ZSBDU1MgYXR0cmlidXRlIHNlbGVjdG9ycyBsaWtlIGBbY29sc3Bhbj1uXWAsIHRob3VnaCB0aGlzIGlzIG5vdCB0cml2aWFsLlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwIn1dfSx7bmFtZToiY29sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiBhIGNvbCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIGNvbGdyb3VwIGVsZW1lbnQgdGhhdCBpdHNlbGYgaGFzIGEgcGFyZW50IHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LCB0aGVuIHRoZSBjb2wgZWxlbWVudCByZXByZXNlbnRzIG9uZSBvciBtb3JlIGNvbHVtbnMgaW4gdGhlIGNvbHVtbiBncm91cCByZXByZXNlbnRlZCBieSB0aGF0IGNvbGdyb3VwLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcGFuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY29sdW1uIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgW2BhbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWFsaWduKSBvZiB0aGUgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudCB0aGlzIGA8Y29sPmAgZWxlbWVudCBiZWxvbmdzIHRvby4gSWYgdGhlcmUgYXJlIG5vbmUsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQuIEJlY2F1c2UgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudHMgYXJlIG5vdCBkZXNjZW5kYW50IG9mIHRoZSBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudCwgdGhleSB3b25cJ3QgaW5oZXJpdCBpdC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXNuXCd0IHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdXNlIHRoZSBgdGQ6bnRoLWNoaWxkKGFuK2IpYCBDU1Mgc2VsZWN0b3IuIFNldCBgYWAgdG8gemVybyBhbmQgYGJgIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uIGluIHRoZSB0YWJsZSwgZS5nLiBgdGQ6bnRoLWNoaWxkKDIpIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1gIHRvIHJpZ2h0LWFsaWduIHRoZSBzZWNvbmQgY29sdW1uLlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lcyB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHRoZSBlZmZlY3QgY2FuIGJlIGFjaGlldmVkIGJ5IGNvbWJpbmluZyBhZGVxdWF0ZSBDU1MgYXR0cmlidXRlIHNlbGVjdG9ycyBsaWtlIGBbY29sc3Bhbj1uXWAsIHRob3VnaCB0aGlzIGlzIG5vdCB0cml2aWFsLlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wifV19LHtuYW1lOiJ0Ym9keSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRib2R5IGVsZW1lbnQgcmVwcmVzZW50cyBhIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIGEgYm9keSBvZiBkYXRhIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0Ym9keSBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcm9mZikgYXR0cmlidXRlcy5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSJ9XX0se25hbWU6InRoZWFkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGhlYWQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIGxhYmVscyAoaGVhZGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRoZWFkIGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkIn1dfSx7bmFtZToidGZvb3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Zm9vdCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIHRoZSBjb2x1bW4gc3VtbWFyaWVzIChmb290ZXJzKSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGZvb3QgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGZvb3QjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGZvb3QifV19LHtuYW1lOiJ0ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJvdyBvZiBjZWxscyBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgd2hpY2ggc3BlY2lmaWVzIGhvdyB0aGUgY2VsbFwncyBjb250ZXh0IHNob3VsZCBiZSBhbGlnbmVkIGhvcml6b250YWxseSB3aXRoaW4gdGhlIGNlbGxzIGluIHRoZSByb3c7IHRoaXMgaXMgc2hvcnRoYW5kIGZvciB1c2luZyBgYWxpZ25gIG9uIGV2ZXJ5IGNlbGwgaW4gdGhlIHJvdyBpbmRpdmlkdWFsbHkuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbmBsZWZ0YFxuXG5BbGlnbiB0aGUgY29udGVudCBvZiBlYWNoIGNlbGwgYXQgaXRzIGxlZnQgZWRnZS5cblxuYGNlbnRlcmBcblxuQ2VudGVyIHRoZSBjb250ZW50cyBvZiBlYWNoIGNlbGwgYmV0d2VlbiB0aGVpciBsZWZ0IGFuZCByaWdodCBlZGdlcy5cblxuYHJpZ2h0YFxuXG5BbGlnbiB0aGUgY29udGVudCBvZiBlYWNoIGNlbGwgYXQgaXRzIHJpZ2h0IGVkZ2UuXG5cbmBqdXN0aWZ5YFxuXG5XaWRlbiB3aGl0ZXNwYWNlcyB3aXRoaW4gdGhlIHRleHQgb2YgZWFjaCBjZWxsIHNvIHRoYXQgdGhlIHRleHQgZmlsbHMgdGhlIGZ1bGwgd2lkdGggb2YgZWFjaCBjZWxsIChmdWxsIGp1c3RpZmljYXRpb24pLlxuXG5gY2hhcmBcblxuQWxpZ24gZWFjaCBjZWxsIGluIHRoZSByb3cgb24gYSBzcGVjaWZpYyBjaGFyYWN0ZXIgKHN1Y2ggdGhhdCBlYWNoIHJvdyBpbiB0aGUgY29sdW1uIHRoYXQgaXMgY29uZmlndXJlZCB0aGlzIHdheSB3aWxsIGhvcml6b250YWxseSBhbGlnbiBpdHMgY2VsbHMgb24gdGhhdCBjaGFyYWN0ZXIpLiBUaGlzIHVzZXMgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyb2ZmKSB0byBlc3RhYmxpc2ggdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIgKHR5cGljYWxseSAiLiIgb3IgIiwiIHdoZW4gYWxpZ25pbmcgbnVtZXJpY2FsIGRhdGEpIGFuZCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgZm9sbG93IHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyLiBUaGlzIGFsaWdubWVudCB0eXBlIHdhcyBuZXZlciB3aWRlbHkgc3VwcG9ydGVkLlxuXG5JZiBubyB2YWx1ZSBpcyBleHByZXNzbHkgc2V0IGZvciBgYWxpZ25gLCB0aGUgcGFyZW50IG5vZGVcJ3MgdmFsdWUgaXMgaW5oZXJpdGVkLlxuXG5JbnN0ZWFkIG9mIHVzaW5nIHRoZSBvYnNvbGV0ZSBgYWxpZ25gIGF0dHJpYnV0ZSwgeW91IHNob3VsZCBpbnN0ZWFkIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byBlc3RhYmxpc2ggYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCwgb3IgYGp1c3RpZnlgIGFsaWdubWVudCBmb3IgdGhlIHJvd1wncyBjZWxscy4gVG8gYXBwbHkgY2hhcmFjdGVyLWJhc2VkIGFsaWdubWVudCwgc2V0IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyIChzdWNoIGFzIGAiLiJgIG9yIGAiLCJgKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyIn1dfSx7bmFtZToidGQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZCBlbGVtZW50IHJlcHJlc2VudHMgYSBkYXRhIGNlbGwgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29sc3BhbiJ9LHtuYW1lOiJyb3dzcGFuIn0se25hbWU6ImhlYWRlcnMifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgc2hvcnQgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGwncyBjb250ZW50LiBTb21lIHVzZXItYWdlbnRzLCBzdWNoIGFzIHNwZWVjaCByZWFkZXJzLCBtYXkgcHJlc2VudCB0aGlzIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgY29udGVudCBpdHNlbGYuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHV0IHRoZSBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBpbnNpZGUgdGhlIGNlbGwgYW5kIHBsYWNlIHRoZSBsb25nIGNvbnRlbnQgaW4gdGhlICoqdGl0bGUqKiBhdHRyaWJ1dGUuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC4ifSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgZWFjaCBjZWxsIGluIGEgY29sdW1uLiBJdCBjb25zaXN0cyBvZiBhIDYtZGlnaXQgaGV4YWRlY2ltYWwgY29kZSBhcyBkZWZpbmVkIGluIFtzUkdCXShodHRwczovL3d3dy53My5vcmcvR3JhcGhpY3MvQ29sb3Ivc1JHQikgYW5kIGlzIHByZWZpeGVkIGJ5IFwnI1wnLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB3aXRoIG9uZSBvZiBzaXh0ZWVuIHByZWRlZmluZWQgY29sb3Igc3RyaW5nczpcblxuwqBcblxuYGJsYWNrYCA9ICIjMDAwMDAwIlxuXG7CoFxuXG5gZ3JlZW5gID0gIiMwMDgwMDAiXG5cbsKgXG5cbmBzaWx2ZXJgID0gIiNDMEMwQzAiXG5cbsKgXG5cbmBsaW1lYCA9ICIjMDBGRjAwIlxuXG7CoFxuXG5gZ3JheWAgPSAiIzgwODA4MCJcblxuwqBcblxuYG9saXZlYCA9ICIjODA4MDAwIlxuXG7CoFxuXG5gd2hpdGVgID0gIiNGRkZGRkYiXG5cbsKgXG5cbmB5ZWxsb3dgID0gIiNGRkZGMDAiXG5cbsKgXG5cbmBtYXJvb25gID0gIiM4MDAwMDAiXG5cbsKgXG5cbmBuYXZ5YCA9ICIjMDAwMDgwIlxuXG7CoFxuXG5gcmVkYCA9ICIjRkYwMDAwIlxuXG7CoFxuXG5gYmx1ZWAgPSAiIzAwMDBGRiJcblxuwqBcblxuYHB1cnBsZWAgPSAiIzgwMDA4MCJcblxuwqBcblxuYHRlYWxgID0gIiMwMDgwODAiXG5cbsKgXG5cbmBmdWNoc2lhYCA9ICIjRkYwMEZGIlxuXG7CoFxuXG5gYXF1YWAgPSAiIzAwRkZGRiJcblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGlzIG5vbi1zdGFuZGFyZCBhbmQgb25seSBpbXBsZW1lbnRlZCBpbiBzb21lIHZlcnNpb25zIG9mIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlcjogVGhlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGNyZWF0ZSBhIHNpbWlsYXIgZWZmZWN0IHVzZSB0aGUgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgaW4gW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCJ9XX0se25hbWU6InRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGggZWxlbWVudCByZXByZXNlbnRzIGEgaGVhZGVyIGNlbGwgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29sc3BhbiJ9LHtuYW1lOiJyb3dzcGFuIn0se25hbWU6ImhlYWRlcnMifSx7bmFtZToic2NvcGUiLHZhbHVlU2V0OiJzIn0se25hbWU6InNvcnRlZCJ9LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLiJ9fSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgdGhlIGNlbGwgY29udGVudFwncyBob3Jpem9udGFsIGFsaWdubWVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGwuXG4qICAgYGNlbnRlcmA6IFRoZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIHRoZSBjZWxsLlxuKiAgIGByaWdodGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsLlxuKiAgIGBqdXN0aWZ5YCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBzdHJldGNoZWQgb3V0IGluc2lkZSB0aGUgY2VsbCBzbyB0aGF0IGl0IGNvdmVycyBpdHMgZW50aXJlIHdpZHRoLlxuKiAgIGBjaGFyYCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIGEgY2hhcmFjdGVyIGluc2lkZSB0aGUgYDx0aD5gIGVsZW1lbnQgd2l0aCBtaW5pbWFsIG9mZnNldC4gVGhpcyBjaGFyYWN0ZXIgaXMgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cblRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpcyBgbGVmdGAuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCBhcHBseSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgZWxlbWVudC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBnaXZlIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdGhlIHNhbWUgdmFsdWUgeW91IHdvdWxkIHVzZSBmb3IgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpLiBVbmltcGxlbWVudGVkIGluIENTUzMuJ30se25hbWU6ImF4aXMiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGlzIHRoZSBgaWRgIG9mIGEgZ3JvdXAgb2YgY2VsbHMgdGhhdCB0aGlzIGhlYWRlciBhcHBsaWVzIHRvLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkOiB1c2UgdGhlIFtgc2NvcGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1zY29wZSkgYXR0cmlidXRlIGluc3RlYWQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0aD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGggIlRoZSBIVE1MIDx0aD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBhcyBoZWFkZXIgb2YgYSBncm91cCBvZiB0YWJsZSBjZWxscy4gVGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGdyb3VwIGlzIGRlZmluZWQgYnkgdGhlIHNjb3BlIGFuZCBoZWFkZXJzIGF0dHJpYnV0ZXMuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykuIFRvIGNyZWF0ZSBhIHNpbWlsYXIgZWZmZWN0IHVzZSB0aGUgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgaW4gW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgifV19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZm9ybSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cywgc29tZSBvZiB3aGljaCBjYW4gcmVwcmVzZW50IGVkaXRhYmxlIHZhbHVlcyB0aGF0IGNhbiBiZSBzdWJtaXR0ZWQgdG8gYSBzZXJ2ZXIgZm9yIHByb2Nlc3NpbmcuIn0sYXR0cmlidXRlczpbe25hbWU6ImFjY2VwdC1jaGFyc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLSBvciBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBjaGFyYWN0ZXIgZW5jb2RpbmdzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLiBUaGUgYnJvd3NlciB1c2VzIHRoZW0gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGxpc3RlZC4gVGhlIGRlZmF1bHQgdmFsdWUsIHRoZSByZXNlcnZlZCBzdHJpbmcgYCJVTktOT1dOImAsIGluZGljYXRlcyB0aGUgc2FtZSBlbmNvZGluZyBhcyB0aGF0IG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmb3JtIGVsZW1lbnQuICBcbkluIHByZXZpb3VzIHZlcnNpb25zIG9mIEhUTUwsIHRoZSBkaWZmZXJlbnQgY2hhcmFjdGVyIGVuY29kaW5ncyBjb3VsZCBiZSBkZWxpbWl0ZWQgYnkgc3BhY2VzIG9yIGNvbW1hcy4gSW4gSFRNTDUsIG9ubHkgc3BhY2VzIGFyZSBhbGxvd2VkIGFzIGRlbGltaXRlcnMuJ319LHtuYW1lOiJhY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkkgb2YgYSBwcm9ncmFtIHRoYXQgcHJvY2Vzc2VzIHRoZSBmb3JtIGluZm9ybWF0aW9uLiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtYWN0aW9uYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1hY3Rpb24pIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoibyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgaW5wdXQgZWxlbWVudHMgY2FuIGJ5IGRlZmF1bHQgaGF2ZSB0aGVpciB2YWx1ZXMgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFRoaXMgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudCBiZWxvbmdpbmcgdG8gdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byBlYWNoIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgZW50cmllcy5cbiogICBgb25gOiBUaGUgYnJvd3NlciBjYW4gYXV0b21hdGljYWxseSBjb21wbGV0ZSB2YWx1ZXMgYmFzZWQgb24gdmFsdWVzIHRoYXQgdGhlIHVzZXIgaGFzIHByZXZpb3VzbHkgZW50ZXJlZCBpbiB0aGUgZm9ybS5cblxuRm9yIG1vc3QgbW9kZXJuIGJyb3dzZXJzIChpbmNsdWRpbmcgRmlyZWZveCAzOCssIEdvb2dsZSBDaHJvbWUgMzQrLCBJRSAxMSspIHNldHRpbmcgdGhlIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgd2lsbCBub3QgcHJldmVudCBhIGJyb3dzZXIncyBwYXNzd29yZCBtYW5hZ2VyIGZyb20gYXNraW5nIHRoZSB1c2VyIGlmIHRoZXkgd2FudCB0byBzdG9yZSBsb2dpbiBmaWVsZHMgKHVzZXJuYW1lIGFuZCBwYXNzd29yZCksIGlmIHRoZSB1c2VyIHBlcm1pdHMgdGhlIHN0b3JhZ2UgdGhlIGJyb3dzZXIgd2lsbCBhdXRvZmlsbCB0aGUgbG9naW4gdGhlIG5leHQgdGltZSB0aGUgdXNlciB2aXNpdHMgdGhlIHBhZ2UuIFNlZSBbVGhlIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgYW5kIGxvZ2luIGZpZWxkc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2VjdXJpbmdfeW91cl9zaXRlL1R1cm5pbmdfb2ZmX2Zvcm1fYXV0b2NvbXBsZXRpb24jVGhlX2F1dG9jb21wbGV0ZV9hdHRyaWJ1dGVfYW5kX2xvZ2luX2ZpZWxkcykuIn19LHtuYW1lOiJlbmN0eXBlIix2YWx1ZVNldDoiZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1doZW4gdGhlIHZhbHVlIG9mIHRoZSBgbWV0aG9kYCBhdHRyaWJ1dGUgaXMgYHBvc3RgLCBlbmN0eXBlIGlzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW1lX3R5cGUpIG9mIGNvbnRlbnQgdGhhdCBpcyB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSB0byB0aGUgc2VydmVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGA6IFRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWA6IFRoZSB2YWx1ZSB1c2VkIGZvciBhbiBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IHdpdGggdGhlIGB0eXBlYCBhdHRyaWJ1dGUgc2V0IHRvICJmaWxlIi5cbiogICBgdGV4dC9wbGFpbmA6IChIVE1MNSlcblxuVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybWVuY3R5cGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibWV0aG9kIix2YWx1ZVNldDoibSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtIVFRQXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQKSBtZXRob2QgdGhhdCB0aGUgYnJvd3NlciB1c2VzIHRvIHN1Ym1pdCB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBwb3N0YDogQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KSA7IGZvcm0gZGF0YSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci5cbiogICBgZ2V0YDogQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW0dFVCBtZXRob2RdKGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzkuaHRtbCNzZWM5LjMpOyBmb3JtIGRhdGEgYXJlIGFwcGVuZGVkIHRvIHRoZSBgYWN0aW9uYCBhdHRyaWJ1dGUgVVJJIHdpdGggYSBcJz9cJyBhcyBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy5cbiogICBgZGlhbG9nYDogVXNlIHdoZW4gdGhlIGZvcm0gaXMgaW5zaWRlIGHCoFtgPGRpYWxvZz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGlhbG9nICJUaGUgSFRNTCA8ZGlhbG9nPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkaWFsb2cgYm94IG9yIG90aGVyIGludGVyYWN0aXZlIGNvbXBvbmVudCwgc3VjaCBhcyBhbiBpbnNwZWN0b3Igb3Igd2luZG93LiIpIGVsZW1lbnQgdG8gY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHN1Ym1pdHRlZC5cblxuVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtbWV0aG9kKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBmb3JtLiBJbiBIVE1MIDQsIGl0cyB1c2UgaXMgZGVwcmVjYXRlZCAoYGlkYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkKS4gSXQgbXVzdCBiZSB1bmlxdWUgYW1vbmcgdGhlIGZvcm1zIGluIGEgZG9jdW1lbnQgYW5kIG5vdCBqdXN0IGFuIGVtcHR5IHN0cmluZyBpbiBIVE1MIDUuIn19LHtuYW1lOiJub3ZhbGlkYXRlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZm9ybSBpcyBub3QgdG8gYmUgdmFsaWRhdGVkIHdoZW4gc3VibWl0dGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIChhbmQgdGhlcmVmb3JlIHRoZSBmb3JtIGlzIHZhbGlkYXRlZCksIHRoaXMgZGVmYXVsdCBzZXR0aW5nIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3Jtbm92YWxpZGF0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3Jtbm92YWxpZGF0ZSkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLid9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gSW4gSFRNTCA0LCB0aGlzIGlzIHRoZSBuYW1lL2tleXdvcmQgZm9yIGEgZnJhbWUuIEluIEhUTUw1LCBpdCBpcyBhIG5hbWUva2V5d29yZCBmb3IgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlLCB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBzYW1lIEhUTUwgNCBmcmFtZSAob3IgSFRNTDUgYnJvd3NpbmcgY29udGV4dCkgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byBhIG5ldyB1bm5hbWVkIEhUTUwgNCB3aW5kb3cgb3IgSFRNTDUgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIEhUTUwgNCBmcmFtZXNldCBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgZnJhbWUsIG9yIEhUTUw1IHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogSFRNTCA0OiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBmdWxsIG9yaWdpbmFsIHdpbmRvdywgYW5kIGNhbmNlbCBhbGwgb3RoZXIgZnJhbWVzLiBIVE1MNTogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKGkuZS4sIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBfaWZyYW1lbmFtZV86IFRoZSByZXNwb25zZSBpcyBkaXNwbGF5ZWQgaW4gYSBuYW1lZCBbYDxpZnJhbWU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lmcmFtZSAiVGhlIEhUTUwgSW5saW5lIEZyYW1lIGVsZW1lbnQgKDxpZnJhbWU+KSByZXByZXNlbnRzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIGVtYmVkZGluZyBhbm90aGVyIEhUTUwgcGFnZSBpbnRvIHRoZSBjdXJyZW50IG9uZS4iKS5cblxuSFRNTDU6IFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm10YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybXRhcmdldCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJhY2NlcHQiLGRlc2NyaXB0aW9uOidBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbnRlbnQgdHlwZXMgdGhhdCB0aGUgc2VydmVyIGFjY2VwdHMuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGluIEhUTUw1IGFuZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuIEluc3RlYWQsIHVzZSB0aGUgW2BhY2NlcHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjYXR0ci1hY2NlcHQpIGF0dHJpYnV0ZSBvZiB0aGUgc3BlY2lmaWMgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGlzIGEgbm9uc3RhbmRhcmQgYXR0cmlidXRlIHVzZWQgYnkgaU9TIFNhZmFyaSBNb2JpbGUgd2hpY2ggY29udHJvbHMgd2hldGhlciBhbmQgaG93IHRoZSB0ZXh0IHZhbHVlIGZvciB0ZXh0dWFsIGZvcm0gY29udHJvbCBkZXNjZW5kYW50cyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gSWYgdGhlIGBhdXRvY2FwaXRhbGl6ZWAgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiBhbiBpbmRpdmlkdWFsIGZvcm0gY29udHJvbCBkZXNjZW5kYW50LCBpdCB0cnVtcHMgdGhlIGZvcm0td2lkZSBgYXV0b2NhcGl0YWxpemVgIHNldHRpbmcuIFRoZSBub24tZGVwcmVjYXRlZCB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBpbiBpT1MgNSBhbmQgbGF0ZXIuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBzZW50ZW5jZXNgLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG5vbmVgOiBDb21wbGV0ZWx5IGRpc2FibGVzIGF1dG9tYXRpYyBjYXBpdGFsaXphdGlvblxuKiAgIGBzZW50ZW5jZXNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBzZW50ZW5jZXMuXG4qICAgYHdvcmRzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygd29yZHMuXG4qICAgYGNoYXJhY3RlcnNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgYWxsIGNoYXJhY3RlcnMuXG4qICAgYG9uYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS5cbiogICBgb2ZmYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0ifV19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxhYmVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gaW4gYSB1c2VyIGludGVyZmFjZS4gVGhlIGNhcHRpb24gY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGZvcm0gY29udHJvbCwga25vd24gYXMgdGhlIGxhYmVsIGVsZW1lbnQncyBsYWJlbGVkIGNvbnRyb2wsIGVpdGhlciB1c2luZyB0aGUgZm9yIGF0dHJpYnV0ZSwgb3IgYnkgcHV0dGluZyB0aGUgZm9ybSBjb250cm9sIGluc2lkZSB0aGUgbGFiZWwgZWxlbWVudCBpdHNlbGYuIn0sYXR0cmlidXRlczpbe25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHdpdGggd2hpY2ggdGhlIGxhYmVsIGlzIGFzc29jaWF0ZWQgKGl0cyBfZm9ybSBvd25lcl8pLiBJZiBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGlzIHRoZSBgaWRgIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gVGhpcyBsZXRzIHlvdSBwbGFjZSBsYWJlbCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6ImZvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFtgaWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaWQpIG9mIGEgW2xhYmVsYWJsZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvR3VpZGUvSFRNTC9Db250ZW50X2NhdGVnb3JpZXMjRm9ybV9sYWJlbGFibGUpIGZvcm0tcmVsYXRlZCBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHRoZSBgPGxhYmVsPmAgZWxlbWVudC4gVGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IHdpdGggYW4gYGlkYCBtYXRjaGluZyB0aGUgdmFsdWUgb2YgdGhlIGBmb3JgIGF0dHJpYnV0ZSBpcyB0aGUgX2xhYmVsZWQgY29udHJvbF8gZm9yIHRoaXMgbGFiZWwgZWxlbWVudCwgaWYgaXQgaXMgYSBsYWJlbGFibGUgZWxlbWVudC4gSWYgaXQgaXPCoG5vdCBsYWJlbGFibGUgdGhlbiB0aGUgYGZvcmAgYXR0cmlidXRlIGhhcyBubyBlZmZlY3QuIElmIHRoZXJlIGFyZSBvdGhlciBlbGVtZW50cyB3aGljaCBhbHNvIG1hdGNoIHRoZSBgaWRgIHZhbHVlLCBsYXRlciBpbiB0aGUgZG9jdW1lbnQsIHRoZXkgYXJlIG5vdCBjb25zaWRlcmVkLlxuXG4qKk5vdGUqKjogQSBgPGxhYmVsPmAgZWxlbWVudCBjYW4gaGF2ZSBib3RoIGEgYGZvcmAgYXR0cmlidXRlIGFuZCBhIGNvbnRhaW5lZCBjb250cm9sIGVsZW1lbnQsIGFzIGxvbmcgYXMgdGhlIGBmb3JgIGF0dHJpYnV0ZSBwb2ludHMgdG8gdGhlIGNvbnRhaW5lZCBjb250cm9sIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGFiZWwifV19LHtuYW1lOiJpbnB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlucHV0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHR5cGVkIGRhdGEgZmllbGQsIHVzdWFsbHkgd2l0aCBhIGZvcm0gY29udHJvbCB0byBhbGxvdyB0aGUgdXNlciB0byBlZGl0IHRoZSBkYXRhLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQifSx7bmFtZToiYWx0In0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIn0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYifSx7bmFtZToiY2hlY2tlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiZGlybmFtZSJ9LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybSJ9LHtuYW1lOiJmb3JtYWN0aW9uIn0se25hbWU6ImZvcm1lbmN0eXBlIix2YWx1ZVNldDoiZXQifSx7bmFtZToiZm9ybW1ldGhvZCIsdmFsdWVTZXQ6ImZtIn0se25hbWU6ImZvcm1ub3ZhbGlkYXRlIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJmb3JtdGFyZ2V0In0se25hbWU6ImhlaWdodCJ9LHtuYW1lOiJpbnB1dG1vZGUiLHZhbHVlU2V0OiJpbSJ9LHtuYW1lOiJsaXN0In0se25hbWU6Im1heCJ9LHtuYW1lOiJtYXhsZW5ndGgifSx7bmFtZToibWluIn0se25hbWU6Im1pbmxlbmd0aCJ9LHtuYW1lOiJtdWx0aXBsZSIsdmFsdWVTZXQ6InYifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJwYXR0ZXJuIn0se25hbWU6InBsYWNlaG9sZGVyIn0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiJ9LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToic2l6ZSJ9LHtuYW1lOiJzcmMifSx7bmFtZToic3RlcCJ9LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoidCJ9LHtuYW1lOiJ2YWx1ZSJ9LHtuYW1lOiJ3aWR0aCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQifV19LHtuYW1lOiJidXR0b24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBidXR0b24gZWxlbWVudCByZXByZXNlbnRzIGEgYnV0dG9uIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCB0aGUgYnV0dG9uIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMsIHVubGVzcyB0aGUgdXNlciBvdmVycmlkZXMgaXQsIGZvciBleGFtcGxlIGJ5IHR5cGluZyBpbiBhIGRpZmZlcmVudCBjb250cm9sLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgYnV0dG9uLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYnV0dG9uIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgW2A8ZmllbGRzZXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0ICJUaGUgSFRNTCA8ZmllbGRzZXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBncm91cCBzZXZlcmFsIGNvbnRyb2xzIGFzIHdlbGwgYXMgbGFiZWxzICg8bGFiZWw+KSB3aXRoaW4gYSB3ZWIgZm9ybS4iKTsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdpdGggdGhlICoqZGlzYWJsZWQqKiBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBidXR0b24gaXMgZW5hYmxlZC5cblxuRmlyZWZveCB3aWxsLCB1bmxpa2Ugb3RoZXIgYnJvd3NlcnMsIGJ5IGRlZmF1bHQsIFtwZXJzaXN0IHRoZSBkeW5hbWljIGRpc2FibGVkIHN0YXRlXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81OTg1ODM5L2J1Zy13aXRoLWZpcmVmb3gtZGlzYWJsZWQtYXR0cmlidXRlLW9mLWlucHV0LW5vdC1yZXNldHRpbmctd2hlbi1yZWZyZXNoaW5nKSBvZiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBhY3Jvc3MgcGFnZSBsb2Fkcy4gVXNlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1hdXRvY29tcGxldGUpIGF0dHJpYnV0ZSB0byBjb250cm9sIHRoaXMgZmVhdHVyZS4nfX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQgdGhhdCB0aGUgYnV0dG9uIGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlICoqaWQqKiBhdHRyaWJ1dGUgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYDxidXR0b24+YCBlbGVtZW50IHdpbGwgYmUgYXNzb2NpYXRlZCB0byBhbiBhbmNlc3RvciBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50LCBpZiBvbmUgZXhpc3RzLiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBhc3NvY2lhdGUgYDxidXR0b24+YCBlbGVtZW50cyB0byBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMuJ319LHtuYW1lOiJmb3JtYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgaW5mb3JtYXRpb24gc3VibWl0dGVkIGJ5IHRoZSBidXR0b24uIElmIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYWN0aW9uKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgdGhhdCBpcyB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSB0byB0aGUgc2VydmVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGA6IFRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWA6IFVzZSB0aGlzIHZhbHVlIGlmIHlvdSBhcmUgdXNpbmcgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBbYHR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjYXR0ci10eXBlKSBhdHRyaWJ1dGUgc2V0IHRvIGBmaWxlYC5cbiogICBgdGV4dC9wbGFpbmBcblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgZW5jdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItZW5jdHlwZSkgYXR0cmlidXRlIG9mIHRoZSBidXR0b25cJ3MgZm9ybSBvd25lci4nfX0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgSFRUUCBtZXRob2QgdGhhdCB0aGUgYnJvd3NlciB1c2VzIHRvIHN1Ym1pdCB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBwb3N0YDogVGhlIGRhdGEgZnJvbSB0aGUgZm9ybSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci5cbiogICBgZ2V0YDogVGhlIGRhdGEgZnJvbSB0aGUgZm9ybSBhcmUgYXBwZW5kZWQgdG8gdGhlICoqZm9ybSoqIGF0dHJpYnV0ZSBVUkksIHdpdGggYSAnPycgYXMgYSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy5cblxuSWYgc3BlY2lmaWVkLCB0aGlzIGF0dHJpYnV0ZSBvdmVycmlkZXMgdGhlIFtgbWV0aG9kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1tZXRob2QpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm1ub3ZhbGlkYXRlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIGl0IGlzIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgbm92YWxpZGF0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbm92YWxpZGF0ZSkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybXRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIGlzIGEgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgd2hlcmUgdG8gZGlzcGxheSB0aGUgcmVzcG9uc2UgdGhhdCBpcyByZWNlaXZlZCBhZnRlciBzdWJtaXR0aW5nIHRoZSBmb3JtLiBUaGlzIGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYHRhcmdldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItdGFyZ2V0KSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGJ1dHRvbiwgd2hpY2ggaXMgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0gZGF0YS4ifX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJidCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHR5cGUgb2YgdGhlIGJ1dHRvbi4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBzdWJtaXRgOiBUaGUgYnV0dG9uIHN1Ym1pdHMgdGhlIGZvcm0gZGF0YSB0byB0aGUgc2VydmVyLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgb3IgaWYgdGhlIGF0dHJpYnV0ZSBpcyBkeW5hbWljYWxseSBjaGFuZ2VkIHRvIGFuIGVtcHR5IG9yIGludmFsaWQgdmFsdWUuXG4qICAgYHJlc2V0YDogVGhlIGJ1dHRvbiByZXNldHMgYWxsIHRoZSBjb250cm9scyB0byB0aGVpciBpbml0aWFsIHZhbHVlcy5cbiogICBgYnV0dG9uYDogVGhlIGJ1dHRvbiBoYXMgbm8gZGVmYXVsdCBiZWhhdmlvci4gSXQgY2FuIGhhdmUgY2xpZW50LXNpZGUgc2NyaXB0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQncyBldmVudHMsIHdoaWNoIGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZXZlbnRzIG9jY3VyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBidXR0b24uIEl0IGRlZmluZXMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnV0dG9uIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIFRoaXMgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIgaW4gcGFyYW1zIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLiJ9fSx7bmFtZToiYXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjonVGhlIHVzZSBvZiB0aGlzIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBpcyBub25zdGFuZGFyZCBhbmQgRmlyZWZveC1zcGVjaWZpYy4gQnkgZGVmYXVsdCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBbRmlyZWZveCBwZXJzaXN0cyB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFNldHRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGBvZmZgIChpLmUuIGBhdXRvY29tcGxldGU9Im9mZiJgKSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFNlZSBbYnVnwqA2NTQwNzJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDA3MiAiaWYgZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZCB3aXRoIGphdmFzY3JpcHQsIHRoZSBub3JtYWwgc3RhdGUgZG9lc25cJ3QgcmV0dXJuIGFmdGVyIHJlZnJlc2hpbmcgdGhlIHBhZ2UiKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiJ9XX0se25hbWU6InNlbGVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlbGVjdCBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIGZvciBzZWxlY3RpbmcgYW1vbmdzdCBhIHNldCBvZiBvcHRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBbYERPTVN0cmluZ2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9ET01TdHJpbmcgIkRPTVN0cmluZyBpcyBhIFVURi0xNiBTdHJpbmcuIEFzIEphdmFTY3JpcHQgYWxyZWFkeSB1c2VzIHN1Y2ggc3RyaW5ncywgRE9NU3RyaW5nIGlzIG1hcHBlZCBkaXJlY3RseSB0byBhIFN0cmluZy4iKSBwcm92aWRpbmcgYSBoaW50IGZvciBhIFt1c2VyIGFnZW50XCdzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3VzZXJfYWdlbnQgInVzZXIgYWdlbnRcJ3M6IEEgdXNlciBhZ2VudCBpcyBhIGNvbXB1dGVyIHByb2dyYW0gcmVwcmVzZW50aW5nIGEgcGVyc29uLCBmb3IgZXhhbXBsZSwgYSBicm93c2VyIGluIGEgV2ViIGNvbnRleHQuIikgYXV0b2NvbXBsZXRlIGZlYXR1cmUuIFNlZSBbVGhlIEhUTUwgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzL2F1dG9jb21wbGV0ZSkgZm9yIGEgY29tcGxldGUgbGlzdCBvZiB2YWx1ZXMgYW5kIGRldGFpbHMgb24gaG93IHRvIHVzZSBhdXRvY29tcGxldGUuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGUgYGF1dG9mb2N1c2AgYXR0cmlidXRlLiJ9fSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIGBmaWVsZHNldGA7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBzZXQsIHRoZW4gdGhlIGNvbnRyb2wgaXMgZW5hYmxlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhlIGZvcm0gZWxlbWVudCB0b8Kgd2hpY2jCoHRoZSBzZWxlY3QgZWxlbWVudCBpcyBhc3NvY2lhdGVkwqAodGhhdCBpcywgaXRzICJmb3JtIG93bmVyIikuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXRzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgZW5hYmxlcyB5b3UgdG8gcGxhY2Ugc2VsZWN0IGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IG11bHRpcGxlIG9wdGlvbnMgY2FuIGJlIHNlbGVjdGVkIGluIHRoZSBsaXN0LiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIG9ubHkgb25lIG9wdGlvbiBjYW4gYmUgc2VsZWN0ZWQgYXQgYSB0aW1lLiBXaGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkLCBtb3N0IGJyb3dzZXJzIHdpbGwgc2hvdyBhIHNjcm9sbGluZyBsaXN0IGJveCBpbnN0ZWFkIG9mIGEgc2luZ2xlIGxpbmUgZHJvcGRvd24uIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGF0IGFuIG9wdGlvbiB3aXRoIGEgbm9uLWVtcHR5IHN0cmluZyB2YWx1ZSBtdXN0IGJlIHNlbGVjdGVkLiJ9fSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGNvbnRyb2wgaXMgcHJlc2VudGVkIGFzIGEgc2Nyb2xsaW5nIGxpc3QgYm94IChlLmcuIHdoZW4gYG11bHRpcGxlYCBpcyBzcGVjaWZpZWQpLCB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgbGlzdCB0aGF0IHNob3VsZCBiZSB2aXNpYmxlIGF0IG9uZSB0aW1lLiBCcm93c2VycyBhcmUgbm90IHJlcXVpcmVkIHRvIHByZXNlbnQgYSBzZWxlY3QgZWxlbWVudCBhcyBhIHNjcm9sbGVkIGxpc3QgYm94LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLlxuXG4qKk5vdGU6KiogQWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3Igc2l6ZSBzaG91bGQgYmUgMTsgaG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoaXMgaGFzIGJlZW4gZm91bmQgdG8gYnJlYWsgc29tZSB3ZWIgc2l0ZXMsIGFuZCBubyBvdGhlciBicm93c2VyIGN1cnJlbnRseSBkb2VzIHRoYXQsIHNvIE1vemlsbGEgaGFzIG9wdGVkIHRvIGNvbnRpbnVlIHRvIHJldHVybiAwIGZvciB0aGUgdGltZSBiZWluZyB3aXRoIEZpcmVmb3guIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0In1dfSx7bmFtZToiZGF0YWxpc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkYXRhbGlzdCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZXQgb2Ygb3B0aW9uIGVsZW1lbnRzIHRoYXQgcmVwcmVzZW50IHByZWRlZmluZWQgb3B0aW9ucyBmb3Igb3RoZXIgY29udHJvbHMuIEluIHRoZSByZW5kZXJpbmcsIHRoZSBkYXRhbGlzdCBlbGVtZW50IHJlcHJlc2VudHMgbm90aGluZyBhbmQgaXQsIGFsb25nIHdpdGggaXRzIGNoaWxkcmVuLCBzaG91bGQgYmUgaGlkZGVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RhdGFsaXN0In1dfSx7bmFtZToib3B0Z3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvcHRncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvcHRpb24gZWxlbWVudHMgd2l0aCBhIGNvbW1vbiBsYWJlbC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgbm9uZSBvZiB0aGUgaXRlbXMgaW4gdGhpcyBvcHRpb24gZ3JvdXAgaXMgc2VsZWN0YWJsZS4gT2Z0ZW4gYnJvd3NlcnMgZ3JleSBvdXQgc3VjaCBjb250cm9sIGFuZCBpdCB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgb25lcy4ifX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZ3JvdXAgb2Ygb3B0aW9ucywgd2hpY2ggdGhlIGJyb3dzZXIgY2FuIHVzZSB3aGVuIGxhYmVsaW5nIHRoZSBvcHRpb25zIGluIHRoZSB1c2VyIGludGVyZmFjZS4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGlmIHRoaXMgZWxlbWVudCBpcyB1c2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGdyb3VwIn1dfSx7bmFtZToib3B0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcHRpb24gaW4gYSBzZWxlY3QgZWxlbWVudCBvciBhcyBwYXJ0IG9mIGEgbGlzdCBvZiBzdWdnZXN0aW9ucyBpbiBhIGRhdGFsaXN0IGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIHRoaXMgb3B0aW9uIGlzIG5vdCBjaGVja2FibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uXCd0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50LCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBlbGVtZW50IGNhbiBzdGlsbCBiZSBkaXNhYmxlZCBpZiBvbmUgb2YgaXRzIGFuY2VzdG9ycyBpcyBhIGRpc2FibGVkIFtgPG9wdGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCAiVGhlIEhUTUwgPG9wdGdyb3VwPiBlbGVtZW50IGNyZWF0ZXMgYSBncm91cGluZyBvZiBvcHRpb25zIHdpdGhpbiBhIDxzZWxlY3Q+IGVsZW1lbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpcyB0ZXh0IGZvciB0aGUgbGFiZWwgaW5kaWNhdGluZyB0aGUgbWVhbmluZyBvZiB0aGUgb3B0aW9uLiBJZiB0aGUgYGxhYmVsYCBhdHRyaWJ1dGUgaXNuJ3QgZGVmaW5lZCwgaXRzIHZhbHVlIGlzIHRoYXQgb2YgdGhlIGVsZW1lbnQgdGV4dCBjb250ZW50LiJ9fSx7bmFtZToic2VsZWN0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiBwcmVzZW50LCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBvcHRpb24gaXMgaW5pdGlhbGx5IHNlbGVjdGVkLiBJZiB0aGUgYDxvcHRpb24+YCBlbGVtZW50IGlzIHRoZSBkZXNjZW5kYW50IG9mIGEgW2A8c2VsZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QgIlRoZSBIVE1MIDxzZWxlY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgdGhhdCBwcm92aWRlcyBhIG1lbnUgb2Ygb3B0aW9ucyIpIGVsZW1lbnQgd2hvc2UgW2BtdWx0aXBsZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QjYXR0ci1tdWx0aXBsZSkgYXR0cmlidXRlIGlzIG5vdCBzZXQsIG9ubHkgb25lIHNpbmdsZSBgPG9wdGlvbj5gIG9mIHRoaXMgW2A8c2VsZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QgIlRoZSBIVE1MIDxzZWxlY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgdGhhdCBwcm92aWRlcyBhIG1lbnUgb2Ygb3B0aW9ucyIpIGVsZW1lbnQgbWF5IGhhdmUgdGhlIGBzZWxlY3RlZGAgYXR0cmlidXRlLid9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb250ZW50IG9mIHRoaXMgYXR0cmlidXRlIHJlcHJlc2VudHMgdGhlIHZhbHVlIHRvIGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLCBzaG91bGQgdGhpcyBvcHRpb24gYmUgc2VsZWN0ZWQuwqBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBvbWl0dGVkLCB0aGUgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBvcHRpb24gZWxlbWVudC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRpb24ifV19LHtuYW1lOiJ0ZXh0YXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRleHRhcmVhIGVsZW1lbnQgcmVwcmVzZW50cyBhIG11bHRpbGluZSBwbGFpbiB0ZXh0IGVkaXQgY29udHJvbCBmb3IgdGhlIGVsZW1lbnQncyByYXcgdmFsdWUuIFRoZSBjb250ZW50cyBvZiB0aGUgY29udHJvbCByZXByZXNlbnQgdGhlIGNvbnRyb2wncyBkZWZhdWx0IHZhbHVlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlZCBieSB0aGUgYnJvd3Nlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBvZmZgOiBUaGUgdXNlciBtdXN0IGV4cGxpY2l0bHkgZW50ZXIgYSB2YWx1ZSBpbnRvIHRoaXMgZmllbGQgZm9yIGV2ZXJ5IHVzZSwgb3IgdGhlIGRvY3VtZW50IHByb3ZpZGVzIGl0cyBvd24gYXV0by1jb21wbGV0aW9uIG1ldGhvZDsgdGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgZW50cnkuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIHZhbHVlIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBlbnRlcmVkIGR1cmluZyBwcmV2aW91cyB1c2VzLlxuXG5JZiB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgb24gYSBgPHRleHRhcmVhPmAgZWxlbWVudCwgdGhlbiB0aGUgYnJvd3NlciB1c2VzIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgdmFsdWUgb2YgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50XCdzIGZvcm0gb3duZXIuIFRoZSBmb3JtIG93bmVyIGlzIGVpdGhlciB0aGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB0aGF0IHRoaXMgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIG9yIHRoZSBmb3JtIGVsZW1lbnQgd2hvc2UgYGlkYCBpcyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYCBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGVsZW1lbnQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtgYXV0b2NvbXBsZXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1hdXRvY29tcGxldGUpIGF0dHJpYnV0ZSBpbiBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKS4nfX0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IGEgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMuIE9ubHkgb25lIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVkLiJ9fSx7bmFtZToiY29scyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZpc2libGUgd2lkdGggb2YgdGhlIHRleHQgY29udHJvbCwgaW4gYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGhzLiBJZiBpdCBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgMjBgLiJ9fSx7bmFtZToiZGlybmFtZSJ9LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGNvbnRyb2wuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjb250cm9sIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgW2A8ZmllbGRzZXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0ICJUaGUgSFRNTCA8ZmllbGRzZXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBncm91cCBzZXZlcmFsIGNvbnRyb2xzIGFzIHdlbGwgYXMgbGFiZWxzICg8bGFiZWw+KSB3aXRoaW4gYSB3ZWIgZm9ybS4iKTsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdoZW4gdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIGlzIHNldCwgdGhlIGNvbnRyb2wgaXMgZW5hYmxlZC4nfX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQgdGhhdCB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgImZvcm0gb3duZXIiKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSB0aGUgYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBgPHRleHRhcmVhPmAgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJpbnB1dG1vZGUiLHZhbHVlU2V0OiJpbSJ9LHtuYW1lOiJtYXhsZW5ndGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzICh1bmljb2RlIGNvZGUgcG9pbnRzKSB0aGF0IHRoZSB1c2VyIGNhbiBlbnRlci4gSWYgdGhpcyB2YWx1ZSBpc24ndCBzcGVjaWZpZWQsIHRoZSB1c2VyIGNhbiBlbnRlciBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuIn19LHtuYW1lOiJtaW5sZW5ndGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzICh1bmljb2RlIGNvZGUgcG9pbnRzKSByZXF1aXJlZCB0aGF0IHRoZSB1c2VyIHNob3VsZCBlbnRlci4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicGxhY2Vob2xkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgaGludCB0byB0aGUgdXNlciBvZiB3aGF0IGNhbiBiZSBlbnRlcmVkIGluIHRoZSBjb250cm9sLiBDYXJyaWFnZSByZXR1cm5zIG9yIGxpbmUtZmVlZHMgd2l0aGluIHRoZSBwbGFjZWhvbGRlciB0ZXh0IG11c3QgYmUgdHJlYXRlZCBhcyBsaW5lIGJyZWFrcyB3aGVuIHJlbmRlcmluZyB0aGUgaGludC5cblxuKipOb3RlOioqIFBsYWNlaG9sZGVycyBzaG91bGQgb25seSBiZSB1c2VkIHRvIHNob3cgYW4gZXhhbXBsZSBvZiB0aGUgdHlwZSBvZiBkYXRhIHRoYXQgc2hvdWxkIGJlIGVudGVyZWQgaW50byBhIGZvcm07IHRoZXkgYXJlIF9ub3RfIGEgc3Vic3RpdHV0ZSBmb3IgYSBwcm9wZXIgW2A8bGFiZWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsICJUaGUgSFRNTCA8bGFiZWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIGFuIGl0ZW0gaW4gYSB1c2VyIGludGVyZmFjZS4iKSBlbGVtZW50IHRpZWQgdG8gdGhlIGlucHV0LiBTZWUgW0xhYmVscyBhbmQgcGxhY2Vob2xkZXJzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjTGFiZWxzX2FuZF9wbGFjZWhvbGRlcnMgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBpbiBbPGlucHV0PjogVGhlIElucHV0IChGb3JtIElucHV0KSBlbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBmb3IgYSBmdWxsIGV4cGxhbmF0aW9uLid9fSx7bmFtZToicmVhZG9ubHkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sLiBVbmxpa2UgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlLCB0aGUgYHJlYWRvbmx5YCBhdHRyaWJ1dGUgZG9lcyBub3QgcHJldmVudCB0aGUgdXNlciBmcm9tIGNsaWNraW5nIG9yIHNlbGVjdGluZyBpbiB0aGUgY29udHJvbC4gVGhlIHZhbHVlIG9mIGEgcmVhZC1vbmx5IGNvbnRyb2wgaXMgc3RpbGwgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0uIn19LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSB1c2VyIG11c3QgZmlsbCBpbiBhIHZhbHVlIGJlZm9yZSBzdWJtaXR0aW5nIGEgZm9ybS4ifX0se25hbWU6InJvd3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBudW1iZXIgb2YgdmlzaWJsZSB0ZXh0IGxpbmVzIGZvciB0aGUgY29udHJvbC4ifX0se25hbWU6IndyYXAiLHZhbHVlU2V0OiJ3IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgaG93IHRoZSBjb250cm9sIHdyYXBzIHRleHQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgaGFyZGA6IFRoZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgaW5zZXJ0cyBsaW5lIGJyZWFrcyAoQ1IrTEYpIHNvIHRoYXQgZWFjaCBsaW5lIGhhcyBubyBtb3JlIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sOyB0aGUgYGNvbHNgIGF0dHJpYnV0ZSBtdXN0IGFsc28gYmUgc3BlY2lmaWVkIGZvciB0aGlzIHRvIHRha2UgZWZmZWN0LlxuKiAgIGBzb2Z0YDogVGhlIGJyb3dzZXIgZW5zdXJlcyB0aGF0IGFsbCBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUgY29uc2lzdCBvZiBhIENSK0xGIHBhaXIsIGJ1dCBkb2VzIG5vdCBpbnNlcnQgYW55IGFkZGl0aW9uYWwgbGluZSBicmVha3MuXG4qICAgYG9mZmAgOiBMaWtlIGBzb2Z0YCBidXQgY2hhbmdlcyBhcHBlYXJhbmNlIHRvIGB3aGl0ZS1zcGFjZTogcHJlYCBzbyBsaW5lIHNlZ21lbnRzIGV4Y2VlZGluZyBgY29sc2AgYXJlIG5vdCB3cmFwcGVkIGFuZCB0aGUgYDx0ZXh0YXJlYT5gIGJlY29tZXMgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIGBzb2Z0YCBpcyBpdHMgZGVmYXVsdCB2YWx1ZS4ifX0se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGUgc3VwcG9ydGVkIGJ5IFdlYktpdCBvbiBpT1MgKHRoZXJlZm9yZSBuZWFybHkgYWxsIGJyb3dzZXJzIHJ1bm5pbmcgb24gaU9TLCBpbmNsdWRpbmcgU2FmYXJpLCBGaXJlZm94LCBhbmQgQ2hyb21lKSwgd2hpY2ggY29udHJvbHMgd2hldGhlciBhbmQgaG93IHRoZSB0ZXh0IHZhbHVlIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG5vbmVgOiBDb21wbGV0ZWx5IGRpc2FibGVzIGF1dG9tYXRpYyBjYXBpdGFsaXphdGlvbi5cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgYDx0ZXh0YXJlYT5gIGlzIHN1YmplY3QgdG8gc3BlbGwgY2hlY2tpbmcgYnkgdGhlIHVuZGVybHlpbmcgYnJvd3Nlci9PUy4gdGhlIHZhbHVlIGNhbiBiZTpcblxuKiAgIGB0cnVlYDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBpdHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIgY2hlY2tlZC5cbiogICBgZGVmYXVsdGAgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyB0byBhY3QgYWNjb3JkaW5nIHRvIGEgZGVmYXVsdCBiZWhhdmlvciwgcG9zc2libHkgYmFzZWQgb24gdGhlIHBhcmVudCBlbGVtZW50J3Mgb3duIGBzcGVsbGNoZWNrYCB2YWx1ZS5cbiogICBgZmFsc2VgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBzcGVsbCBjaGVja2VkLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGV4dGFyZWEifV19LHtuYW1lOiJvdXRwdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvdXRwdXQgZWxlbWVudCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSBjYWxjdWxhdGlvbiBwZXJmb3JtZWQgYnkgdGhlIGFwcGxpY2F0aW9uLCBvciB0aGUgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImZvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBvdGhlciBlbGVtZW50c+KAmSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZClzLCBpbmRpY2F0aW5nIHRoYXQgdGhvc2UgZWxlbWVudHMgY29udHJpYnV0ZWQgaW5wdXQgdmFsdWVzIHRvIChvciBvdGhlcndpc2UgYWZmZWN0ZWQpIHRoZSBjYWxjdWxhdGlvbi4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbZm9ybSBlbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSkgdGhhdCB0aGlzIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgImZvcm0gb3duZXIiKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgb3V0cHV0IGVsZW1lbnQgbXVzdCBiZSBhIGRlc2NlbmRhbnQgb2YgYSBmb3JtIGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIHBsYWNlIG91dHB1dCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBuYW1lIG9mIHRoZSBlbGVtZW50LCBleHBvc2VkIGluIHRoZSBbYEhUTUxGb3JtRWxlbWVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MRm9ybUVsZW1lbnQgIlRoZSBIVE1MRm9ybUVsZW1lbnQgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSA8Zm9ybT4gZWxlbWVudCBpbiB0aGUgRE9NOyBpdCBhbGxvd3MgYWNjZXNzIHRvIGFuZCBpbiBzb21lIGNhc2VzIG1vZGlmaWNhdGlvbiBvZiBhc3BlY3RzIG9mIHRoZSBmb3JtLCBhcyB3ZWxsIGFzIGFjY2VzcyB0byBpdHMgY29tcG9uZW50IGVsZW1lbnRzLiIpIEFQSS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vdXRwdXQifV19LHtuYW1lOiJwcm9ncmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByb2dyZXNzIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29tcGxldGlvbiBwcm9ncmVzcyBvZiBhIHRhc2suIFRoZSBwcm9ncmVzcyBpcyBlaXRoZXIgaW5kZXRlcm1pbmF0ZSwgaW5kaWNhdGluZyB0aGF0IHByb2dyZXNzIGlzIGJlaW5nIG1hZGUgYnV0IHRoYXQgaXQgaXMgbm90IGNsZWFyIGhvdyBtdWNoIG1vcmUgd29yayByZW1haW5zIHRvIGJlIGRvbmUgYmVmb3JlIHRoZSB0YXNrIGlzIGNvbXBsZXRlIChlLmcuIGJlY2F1c2UgdGhlIHRhc2sgaXMgd2FpdGluZyBmb3IgYSByZW1vdGUgaG9zdCB0byByZXNwb25kKSwgb3IgdGhlIHByb2dyZXNzIGlzIGEgbnVtYmVyIGluIHRoZSByYW5nZSB6ZXJvIHRvIGEgbWF4aW11bSwgZ2l2aW5nIHRoZSBmcmFjdGlvbiBvZiB3b3JrIHRoYXQgaGFzIHNvIGZhciBiZWVuIGNvbXBsZXRlZC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgbXVjaCBvZiB0aGUgdGFzayB0aGF0IGhhcyBiZWVuIGNvbXBsZXRlZC4gSXQgbXVzdCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIGBtYXhgLCBvciBiZXR3ZWVuIDAgYW5kIDEgaWYgYG1heGAgaXMgb21pdHRlZC4gSWYgdGhlcmUgaXMgbm8gYHZhbHVlYCBhdHRyaWJ1dGUsIHRoZSBwcm9ncmVzcyBiYXIgaXMgaW5kZXRlcm1pbmF0ZTsgdGhpcyBpbmRpY2F0ZXMgdGhhdCBhbiBhY3Rpdml0eSBpcyBvbmdvaW5nIHdpdGggbm8gaW5kaWNhdGlvbiBvZiBob3cgbG9uZyBpdCBpcyBleHBlY3RlZCB0byB0YWtlLiJ9fSx7bmFtZToibWF4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZXNjcmliZXMgaG93IG11Y2ggd29yayB0aGUgdGFzayBpbmRpY2F0ZWQgYnkgdGhlIGBwcm9ncmVzc2AgZWxlbWVudCByZXF1aXJlcy4gVGhlIGBtYXhgIGF0dHJpYnV0ZSwgaWYgcHJlc2VudCwgbXVzdCBoYXZlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGJlIGEgdmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Byb2dyZXNzIn1dfSx7bmFtZToibWV0ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRlciBlbGVtZW50IHJlcHJlc2VudHMgYSBzY2FsYXIgbWVhc3VyZW1lbnQgd2l0aGluIGEga25vd24gcmFuZ2UsIG9yIGEgZnJhY3Rpb25hbCB2YWx1ZTsgZm9yIGV4YW1wbGUgZGlzayB1c2FnZSwgdGhlIHJlbGV2YW5jZSBvZiBhIHF1ZXJ5IHJlc3VsdCwgb3IgdGhlIGZyYWN0aW9uIG9mIGEgdm90aW5nIHBvcHVsYXRpb24gdG8gaGF2ZSBzZWxlY3RlZCBhIHBhcnRpY3VsYXIgY2FuZGlkYXRlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGN1cnJlbnQgbnVtZXJpYyB2YWx1ZS4gVGhpcyBtdXN0IGJlIGJldHdlZW4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIChgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkgaWYgdGhleSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCBvciBtYWxmb3JtZWQsIHRoZSB2YWx1ZSBpcyAwLiBJZiBzcGVjaWZpZWQsIGJ1dCBub3Qgd2l0aGluIHRoZSByYW5nZSBnaXZlbiBieSB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbmVhcmVzdCBlbmQgb2YgdGhlIHJhbmdlLlxuXG4qKlVzYWdlIG5vdGU6KiogVW5sZXNzIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBpcyBiZXR3ZWVuIGAwYCBhbmQgYDFgIChpbmNsdXNpdmUpLCB0aGUgYG1pbmAgYW5kIGBtYXhgIGF0dHJpYnV0ZXMgc2hvdWxkIGRlZmluZSB0aGUgcmFuZ2Ugc28gdGhhdCB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUncyB2YWx1ZSBpcyB3aXRoaW4gaXQuIn19LHtuYW1lOiJtaW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb3dlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1pbmltdW0gdmFsdWUgaXMgMC4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBpZiBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyAxLiJ9fSx7bmFtZToibG93IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXBwZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbG93IGVuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUgKGBtaW5gIGF0dHJpYnV0ZSksIGFuZCBpdCBhbHNvIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBoaWdoIHZhbHVlIGFuZCBtYXhpbXVtIHZhbHVlIChgaGlnaGAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUsIHJlc3BlY3RpdmVseSksIGlmIGFueSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgb3IgaWYgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlLCB0aGUgYGxvd2AgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUuIn19LHtuYW1lOiJoaWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgaGlnaCBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIChgbWF4YCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbG93IHZhbHVlIGFuZCBtaW5pbXVtIHZhbHVlIChgbG93YCBhdHRyaWJ1dGUgYW5kICoqbWluKiogYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSwgdGhlIGBoaWdoYCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbWF4aW11bSB2YWx1ZS4ifX0se25hbWU6Im9wdGltdW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgb3B0aW1hbCBudW1lcmljIHZhbHVlLiBJdCBtdXN0IGJlIHdpdGhpbiB0aGUgcmFuZ2UgKGFzIGRlZmluZWQgYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlKS4gV2hlbiB1c2VkIHdpdGggdGhlIGBsb3dgIGF0dHJpYnV0ZSBhbmQgYGhpZ2hgIGF0dHJpYnV0ZSwgaXQgZ2l2ZXMgYW4gaW5kaWNhdGlvbiB3aGVyZSBhbG9uZyB0aGUgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJhYmxlLiBGb3IgZXhhbXBsZSwgaWYgaXQgaXMgYmV0d2VlbiB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCB0aGUgYGxvd2AgYXR0cmlidXRlLCB0aGVuIHRoZSBsb3dlciByYW5nZSBpcyBjb25zaWRlcmVkIHByZWZlcnJlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBhc3NvY2lhdGVzIHRoZSBlbGVtZW50IHdpdGggYSBgZm9ybWAgZWxlbWVudCB0aGF0IGhhcyBvd25lcnNoaXAgb2YgdGhlIGBtZXRlcmAgZWxlbWVudC4gRm9yIGV4YW1wbGUsIGEgYG1ldGVyYCBtaWdodCBiZSBkaXNwbGF5aW5nIGEgcmFuZ2UgY29ycmVzcG9uZGluZyB0byBhbiBgaW5wdXRgIGVsZW1lbnQgb2YgYHR5cGVgIF9udW1iZXJfLiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgaWYgdGhlIGBtZXRlcmAgZWxlbWVudCBpcyBiZWluZyB1c2VkIGFzIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQ7IGV2ZW4gdGhlbiwgaXQgbWF5IGJlIG9taXR0ZWQgaWYgdGhlIGVsZW1lbnQgYXBwZWFycyBhcyBhIGRlc2NlbmRhbnQgb2YgYSBgZm9ybWAgZWxlbWVudC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGVyIn1dfSx7bmFtZToiZmllbGRzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWVsZHNldCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZXQgb2YgZm9ybSBjb250cm9scyBvcHRpb25hbGx5IGdyb3VwZWQgdW5kZXIgYSBjb21tb24gbmFtZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgYWxsIGZvcm0gY29udHJvbHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2YgdGhlIGA8ZmllbGRzZXQ+YCwgYXJlIGRpc2FibGVkLCBtZWFuaW5nIHRoZXkgYXJlIG5vdCBlZGl0YWJsZSBhbmQgd29uJ3QgYmUgc3VibWl0dGVkIGFsb25nIHdpdGggdGhlIGA8Zm9ybT5gLiBUaGV5IHdvbid0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50cywgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBldmVudHMuIEJ5IGRlZmF1bHQgYnJvd3NlcnMgZGlzcGxheSBzdWNoIGNvbnRyb2xzIGdyYXllZCBvdXQuIE5vdGUgdGhhdCBmb3JtIGVsZW1lbnRzIGluc2lkZSB0aGUgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgXCJUaGUgSFRNTCA8bGVnZW5kPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgY29udGVudCBvZiBpdHMgcGFyZW50IDxmaWVsZHNldD4uXCIpIGVsZW1lbnQgd29uJ3QgYmUgZGlzYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB5b3Ugd2FudCB0aGUgYDxmaWVsZHNldD5gIHRvIGJlIHBhcnQgb2YsIGV2ZW4gaWYgaXQgaXMgbm90IGluc2lkZSB0aGUgZm9ybS4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAuXG5cbioqTm90ZSoqOiBUaGUgY2FwdGlvbiBmb3IgdGhlIGZpZWxkc2V0IGlzIGdpdmVuIGJ5IHRoZSBmaXJzdCBbYDxsZWdlbmQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCAiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LiIpIGVsZW1lbnQgbmVzdGVkIGluc2lkZSBpdC4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCJ9XX0se25hbWU6ImxlZ2VuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxlZ2VuZCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGxlZ2VuZCBlbGVtZW50J3MgcGFyZW50IGZpZWxkc2V0IGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQifV19LHtuYW1lOiJkZXRhaWxzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGV0YWlscyBlbGVtZW50IHJlcHJlc2VudHMgYSBkaXNjbG9zdXJlIHdpZGdldCBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBjb250cm9scy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib3BlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBkZXRhaWxzIOKAlCB0aGF0IGlzLCB0aGUgY29udGVudHMgb2YgdGhlIGA8ZGV0YWlscz5gIGVsZW1lbnQg4oCUIGFyZSBjdXJyZW50bHkgdmlzaWJsZS4gVGhlIGRlZmF1bHQsIGBmYWxzZWAsIG1lYW5zIHRoZSBkZXRhaWxzIGFyZSBub3QgdmlzaWJsZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZXRhaWxzIn1dfSx7bmFtZToic3VtbWFyeSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1bW1hcnkgZWxlbWVudCByZXByZXNlbnRzIGEgc3VtbWFyeSwgY2FwdGlvbiwgb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIHN1bW1hcnkgZWxlbWVudCdzIHBhcmVudCBkZXRhaWxzIGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdW1tYXJ5In1dfSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlhbG9nIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcnQgb2YgYW4gYXBwbGljYXRpb24gdGhhdCBhIHVzZXIgaW50ZXJhY3RzIHdpdGggdG8gcGVyZm9ybSBhIHRhc2ssIGZvciBleGFtcGxlIGEgZGlhbG9nIGJveCwgaW5zcGVjdG9yLCBvciB3aW5kb3cuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZGlhbG9nIGlzIGFjdGl2ZSBhbmQgYXZhaWxhYmxlIGZvciBpbnRlcmFjdGlvbi4gV2hlbiB0aGUgYG9wZW5gIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZGlhbG9nIHNob3VsZG4ndCBiZSBzaG93biB0byB0aGUgdXNlci4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyJ9XX0se25hbWU6InNjcmlwdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNjcmlwdCBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGluY2x1ZGUgZHluYW1pYyBzY3JpcHQgYW5kIGRhdGEgYmxvY2tzIGluIHRoZWlyIGRvY3VtZW50cy4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGNvbnRlbnQgZm9yIHRoZSB1c2VyLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgVVJJIG9mIGFuIGV4dGVybmFsIHNjcmlwdDsgdGhpcyBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBlbWJlZGRpbmcgYSBzY3JpcHQgZGlyZWN0bHkgd2l0aGluIGEgZG9jdW1lbnQuXG5cbklmIGEgYHNjcmlwdGAgZWxlbWVudCBoYXMgYSBgc3JjYCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCBpdCBzaG91bGQgbm90IGhhdmUgYSBzY3JpcHQgZW1iZWRkZWQgaW5zaWRlIGl0cyB0YWdzLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIHNjcmlwdCByZXByZXNlbnRlZC4gVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczpcblxuKiAgICoqT21pdHRlZCBvciBhIEphdmFTY3JpcHQgTUlNRSB0eXBlOioqIEZvciBIVE1MNS1jb21wbGlhbnQgYnJvd3NlcnMgdGhpcyBpbmRpY2F0ZXMgdGhlIHNjcmlwdCBpcyBKYXZhU2NyaXB0LiBIVE1MNSBzcGVjaWZpY2F0aW9uIHVyZ2VzIGF1dGhvcnMgdG8gb21pdCB0aGUgYXR0cmlidXRlIHJhdGhlciB0aGFuIHByb3ZpZGUgYSByZWR1bmRhbnQgTUlNRSB0eXBlLiBJbiBlYXJsaWVyIGJyb3dzZXJzLCB0aGlzIGlkZW50aWZpZWQgdGhlIHNjcmlwdGluZyBsYW5ndWFnZSBvZiB0aGUgZW1iZWRkZWQgb3IgaW1wb3J0ZWQgKHZpYSB0aGUgYHNyY2AgYXR0cmlidXRlKSBjb2RlLiBKYXZhU2NyaXB0IE1JTUUgdHlwZXMgYXJlIFtsaXN0ZWQgaW4gdGhlIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvTUlNRV90eXBlcyNKYXZhU2NyaXB0X3R5cGVzKS5cbiogICAqKmBtb2R1bGVgOioqIEZvciBIVE1MNS1jb21wbGlhbnQgYnJvd3NlcnMgdGhlIGNvZGUgaXMgdHJlYXRlZCBhcyBhIEphdmFTY3JpcHQgbW9kdWxlLiBUaGUgcHJvY2Vzc2luZyBvZiB0aGUgc2NyaXB0IGNvbnRlbnRzIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgYGNoYXJzZXRgIGFuZCBgZGVmZXJgIGF0dHJpYnV0ZXMuIEZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBgbW9kdWxlYCwgc2VlIFtFUzYgaW4gRGVwdGg6IE1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pLiBDb2RlIG1heSBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiB0aGUgYG1vZHVsZWAga2V5d29yZCBpcyB1c2VkLlxuKiAgICoqQW55IG90aGVyIHZhbHVlOioqIFRoZSBlbWJlZGRlZCBjb250ZW50IGlzIHRyZWF0ZWQgYXMgYSBkYXRhIGJsb2NrIHdoaWNoIHdvblwndCBiZSBwcm9jZXNzZWQgYnkgdGhlIGJyb3dzZXIuIERldmVsb3BlcnMgbXVzdCB1c2UgYSB2YWxpZCBNSU1FIHR5cGUgdGhhdCBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSB0byBkZW5vdGUgZGF0YSBibG9ja3MuIFRoZSBgc3JjYCBhdHRyaWJ1dGUgd2lsbCBiZSBpZ25vcmVkLlxuXG4qKk5vdGU6KiogaW4gRmlyZWZveCB5b3UgY291bGQgc3BlY2lmeSB0aGUgdmVyc2lvbiBvZiBKYXZhU2NyaXB0IGNvbnRhaW5lZCBpbiBhIGA8c2NyaXB0PmAgZWxlbWVudCBieSBpbmNsdWRpbmcgYSBub24tc3RhbmRhcmQgYHZlcnNpb25gIHBhcmFtZXRlciBpbnNpZGUgdGhlIGB0eXBlYCBhdHRyaWJ1dGUg4oCUIGZvciBleGFtcGxlIGB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQ7dmVyc2lvbj0xLjgiYC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIEZpcmVmb3ggNTkgKHNlZSBbYnVnwqAxNDI4NzQ1XShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4NzQ1ICJGSVhFRDogUmVtb3ZlIHN1cHBvcnQgZm9yIHZlcnNpb24gcGFyYW1ldGVyIGZyb20gc2NyaXB0IGxvYWRlciIpKS4nfX0se25hbWU6ImNoYXJzZXQifSx7bmFtZToiYXN5bmMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGlzIGEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGF0IHRoZSBicm93c2VyIHNob3VsZCwgaWYgcG9zc2libGUsIGxvYWQgdGhlIHNjcmlwdCBhc3luY2hyb25vdXNseS5cblxuVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCBpZiB0aGUgYHNyY2AgYXR0cmlidXRlIGlzIGFic2VudCAoaS5lLiBmb3IgaW5saW5lIHNjcmlwdHMpLiBJZiBpdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBoYXZlIG5vIGVmZmVjdC5cblxuQnJvd3NlcnMgdXN1YWxseSBhc3N1bWUgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gYW5kIGxvYWQgc2NyaXB0cyBzeW5jaHJvbm91c2x5LCAoaS5lLiBgYXN5bmM9ImZhbHNlImApIGR1cmluZyBIVE1MIHBhcnNpbmcuXG5cbkR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdHMgKHVzaW5nIFtgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnQgIkluIGFuIEhUTUwgZG9jdW1lbnQsIHRoZSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCkgbWV0aG9kIGNyZWF0ZXMgdGhlIEhUTUwgZWxlbWVudCBzcGVjaWZpZWQgYnkgdGFnTmFtZSwgb3IgYW4gSFRNTFVua25vd25FbGVtZW50IGlmIHRhZ05hbWUgaXNuXCd0IHJlY29nbml6ZWQuIikpIGxvYWQgYXN5bmNocm9ub3VzbHkgYnkgZGVmYXVsdCwgc28gdG8gdHVybiBvbiBzeW5jaHJvbm91cyBsb2FkaW5nIChpLmUuIHNjcmlwdHMgbG9hZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGluc2VydGVkKSBzZXQgYGFzeW5jPSJmYWxzZSJgLlxuXG5TZWUgW0Jyb3dzZXIgY29tcGF0aWJpbGl0eV0oI0Jyb3dzZXJfY29tcGF0aWJpbGl0eSkgZm9yIG5vdGVzIG9uIGJyb3dzZXIgc3VwcG9ydC4gU2VlIGFsc28gW0FzeW5jIHNjcmlwdHMgZm9yIGFzbS5qc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HYW1lcy9UZWNobmlxdWVzL0FzeW5jX3NjcmlwdHMpLid9fSx7bmFtZToiZGVmZXIiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCB0byBpbmRpY2F0ZSB0byBhIGJyb3dzZXIgdGhhdCB0aGUgc2NyaXB0IGlzIG1lYW50IHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBwYXJzZWQsIGJ1dCBiZWZvcmUgZmlyaW5nIFtgRE9NQ29udGVudExvYWRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkICIvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL0RPTUNvbnRlbnRMb2FkZWQiKS5cblxuU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIHByZXZlbnQgdGhlIGBET01Db250ZW50TG9hZGVkYCBldmVudCBmcm9tIGZpcmluZyB1bnRpbCB0aGUgc2NyaXB0IGhhcyBsb2FkZWQgYW5kIGZpbmlzaGVkIGV2YWx1YXRpbmcuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKSwgaW4gdGhpcyBjYXNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0LlxuXG5UbyBhY2hpZXZlIGEgc2ltaWxhciBlZmZlY3QgZm9yIGR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdHMgdXNlIGBhc3luYz0iZmFsc2UiYCBpbnN0ZWFkLiBTY3JpcHRzIHdpdGggdGhlIGBkZWZlcmAgYXR0cmlidXRlIHdpbGwgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIGRvY3VtZW50Lid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonTm9ybWFsIGBzY3JpcHRgIGVsZW1lbnRzIHBhc3MgbWluaW1hbCBpbmZvcm1hdGlvbiB0byB0aGUgW2B3aW5kb3cub25lcnJvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9HbG9iYWxFdmVudEhhbmRsZXJzL29uZXJyb3IgIlRoZSBvbmVycm9yIHByb3BlcnR5IG9mIHRoZSBHbG9iYWxFdmVudEhhbmRsZXJzIG1peGluIGlzIGFuIEV2ZW50SGFuZGxlciB0aGF0IHByb2Nlc3NlcyBlcnJvciBldmVudHMuIikgZm9yIHNjcmlwdHMgd2hpY2ggZG8gbm90IHBhc3MgdGhlIHN0YW5kYXJkIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgY2hlY2tzLiBUbyBhbGxvdyBlcnJvciBsb2dnaW5nIGZvciBzaXRlcyB3aGljaCB1c2UgYSBzZXBhcmF0ZSBkb21haW4gZm9yIHN0YXRpYyBtZWRpYSwgdXNlIHRoaXMgYXR0cmlidXRlLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhIG1vcmUgZGVzY3JpcHRpdmUgZXhwbGFuYXRpb24gb2YgaXRzIHZhbGlkIGFyZ3VtZW50cy4nfX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHRvIHdoaXRlbGlzdCBpbmxpbmUgc2NyaXB0cyBpbiBhIFtzY3JpcHQtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc2NyaXB0LXNyYykuIFRoZSBzZXJ2ZXIgbXVzdCBnZW5lcmF0ZSBhIHVuaXF1ZSBub25jZSB2YWx1ZSBlYWNoIHRpbWUgaXQgdHJhbnNtaXRzIGEgcG9saWN5LiBJdCBpcyBjcml0aWNhbCB0byBwcm92aWRlIGEgbm9uY2UgdGhhdCBjYW5ub3QgYmUgZ3Vlc3NlZCBhcyBieXBhc3NpbmcgYSByZXNvdXJjZSdzIHBvbGljeSBpcyBvdGhlcndpc2UgdHJpdmlhbC4ifX0se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSB0aGF0IGEgdXNlciBhZ2VudCBjYW4gdXNlIHRvIHZlcmlmeSB0aGF0IGEgZmV0Y2hlZCByZXNvdXJjZSBoYXMgYmVlbiBkZWxpdmVyZWQgZnJlZSBvZiB1bmV4cGVjdGVkIG1hbmlwdWxhdGlvbi4gU2VlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkuIn0se25hbWU6Im5vbW9kdWxlIixkZXNjcmlwdGlvbjoiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2NyaXB0IHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IFtFUzIwMTUgbW9kdWxlc10oaHR0cHM6Ly9oYWNrcy5tb3ppbGxhLm9yZy8yMDE1LzA4L2VzNi1pbi1kZXB0aC1tb2R1bGVzLykg4oCUIGluIGVmZmVjdCwgdGhpcyBjYW4gYmUgdXNlZCB0byBzZXJ2ZSBmYWxsYmFjayBzY3JpcHRzIHRvIG9sZGVyIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgbW9kdWxhciBKYXZhU2NyaXB0IGNvZGUuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3JlZmVycmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIHNjcmlwdCwgb3IgcmVzb3VyY2VzIGZldGNoZWQgYnkgdGhlIHNjcmlwdDpcblxuKiAgIGBuby1yZWZlcnJlcmA6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIChkZWZhdWx0KTogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50IHRvIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvb3JpZ2luICJvcmlnaW46IFdlYiBjb250ZW50XCdzIG9yaWdpbiBpcyBkZWZpbmVkIGJ5IHRoZSBzY2hlbWUgKHByb3RvY29sKSwgaG9zdCAoZG9tYWluKSwgYW5kIHBvcnQgb2YgdGhlIFVSTCB1c2VkIHRvIGFjY2VzcyBpdC4gVHdvIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gb25seSB3aGVuIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGFsbCBtYXRjaC4iKXMgd2l0aG91dCBbVExTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1RMUyAiVExTOiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUyksIHByZXZpb3VzbHkga25vd24gYXMgU2VjdXJlIFNvY2tldHMgTGF5ZXIgKFNTTCksIGlzIGEgcHJvdG9jb2wgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gY29tbXVuaWNhdGUgc2VjdXJlbHkgYWNyb3NzIGEgbmV0d29yaywgcHJldmVudGluZyB0YW1wZXJpbmcgd2l0aCBhbmQgZWF2ZXNkcm9wcGluZyBvbiBlbWFpbCwgd2ViIGJyb3dzaW5nLCBtZXNzYWdpbmcsIGFuZCBvdGhlciBwcm90b2NvbHMuIikgKFtIVFRQU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9IVFRQUyAiSFRUUFM6IEhUVFBTIChIVFRQIFNlY3VyZSkgaXMgYW4gZW5jcnlwdGVkIHZlcnNpb24gb2YgdGhlIEhUVFAgcHJvdG9jb2wuIEl0IHVzdWFsbHkgdXNlcyBTU0wgb3IgVExTIHRvIGVuY3J5cHQgYWxsIGNvbW11bmljYXRpb24gYmV0d2VlbiBhIGNsaWVudCBhbmQgYSBzZXJ2ZXIuIFRoaXMgc2VjdXJlIGNvbm5lY3Rpb24gYWxsb3dzIGNsaWVudHMgdG8gc2FmZWx5IGV4Y2hhbmdlIHNlbnNpdGl2ZSBkYXRhIHdpdGggYSBzZXJ2ZXIsIGZvciBleGFtcGxlIGZvciBiYW5raW5nIGFjdGl2aXRpZXMgb3Igb25saW5lIHNob3BwaW5nLiIpKS5cbiogICBgb3JpZ2luYDogVGhlIHNlbnQgcmVmZXJyZXIgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHJlZmVycmluZyBwYWdlOiBpdHMgW3NjaGVtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9BcmNoaXZlL01vemlsbGEvVVJJU2NoZW1lKSwgW2hvc3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvaG9zdCAiaG9zdDogQSBob3N0IGlzIGEgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgSW50ZXJuZXQgKG9yIGEgbG9jYWwgbmV0d29yaykuIFNvbWUgaG9zdHMgY2FsbGVkIHNlcnZlcnMgb2ZmZXIgYWRkaXRpb25hbCBzZXJ2aWNlcyBsaWtlIHNlcnZpbmcgd2VicGFnZXMgb3Igc3RvcmluZyBmaWxlcyBhbmQgZW1haWxzLiIpLCBhbmQgW3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvcG9ydCAicG9ydDogRm9yIGEgY29tcHV0ZXIgY29ubmVjdGVkIHRvIGEgbmV0d29yayB3aXRoIGFuIElQIGFkZHJlc3MsIGEgcG9ydCBpcyBhIGNvbW11bmljYXRpb24gZW5kcG9pbnQuIFBvcnRzIGFyZSBkZXNpZ25hdGVkIGJ5IG51bWJlcnMsIGFuZCBiZWxvdyAxMDI0IGVhY2ggcG9ydCBpcyBhc3NvY2lhdGVkIGJ5IGRlZmF1bHQgd2l0aCBhIHNwZWNpZmljIHByb3RvY29sLiIpLlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBUaGUgcmVmZXJyZXIgc2VudCB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LiBOYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBzdGlsbCBpbmNsdWRlIHRoZSBwYXRoLlxuKiAgIGBzYW1lLW9yaWdpbmA6IEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZSBvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvU2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lIG9yaWdpbjogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIiksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuKiAgIGBzdHJpY3Qtb3JpZ2luYDogT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoZS5nLiBIVFRQU+KGkkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKGUuZy4gSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBidXQgb25seSBzZW5kIHRoZSBvcmlnaW4gd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy5IVFRQU+KGkkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKGUuZy4gSFRUUFPihpJIVFRQKS5cbiogICBgdW5zYWZlLXVybGA6IFRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBfYW5kXyB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgW2ZyYWdtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9oYXNoKSwgW3Bhc3N3b3JkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9wYXNzd29yZCksIG9yIFt1c2VybmFtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvdXNlcm5hbWUpKS4gKipUaGlzIHZhbHVlIGlzIHVuc2FmZSoqLCBiZWNhdXNlIGl0IGxlYWtzIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy5cblxuKipOb3RlKio6IEFuIGVtcHR5IHN0cmluZyB2YWx1ZSAoYCIiYCkgaXMgYm90aCB0aGUgZGVmYXVsdCB2YWx1ZSwgYW5kIGEgZmFsbGJhY2sgdmFsdWUgaWYgYHJlZmVycmVycG9saWN5YCBpcyBub3Qgc3VwcG9ydGVkLiBJZiBgcmVmZXJyZXJwb2xpY3lgIGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBvbiB0aGUgYDxzY3JpcHQ+YCBlbGVtZW50LCBpdCB3aWxsIGFkb3B0IGEgaGlnaGVyLWxldmVsIHJlZmVycmVyIHBvbGljeSwgaS5lLiBvbmUgc2V0IG9uIHRoZSB3aG9sZSBkb2N1bWVudCBvciBkb21haW4uIElmIGEgaGlnaGVyLWxldmVsIHBvbGljeSBpcyBub3QgYXZhaWxhYmxlLMKgdGhlIGVtcHR5IHN0cmluZyBpcyB0cmVhdGVkIGFzIGJlaW5nIGVxdWl2YWxlbnQgdG8gYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYC4nfSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246Ikxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCB0aGlzIGF0dHJpYnV0ZSBzZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQuIFVubGlrZSB0aGUgYHRleHRDb250ZW50YCBhdHRyaWJ1dGUsIGhvd2V2ZXIsIHRoaXMgYXR0cmlidXRlIGlzIGV2YWx1YXRlZCBhcyBleGVjdXRhYmxlIGNvZGUgYWZ0ZXIgdGhlIG5vZGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2NyaXB0In1dfSx7bmFtZToibm9zY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBub3NjcmlwdCBlbGVtZW50IHJlcHJlc2VudHMgbm90aGluZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCwgYW5kIHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuIGlmIHNjcmlwdGluZyBpcyBkaXNhYmxlZC4gSXQgaXMgdXNlZCB0byBwcmVzZW50IGRpZmZlcmVudCBtYXJrdXAgdG8gdXNlciBhZ2VudHMgdGhhdCBzdXBwb3J0IHNjcmlwdGluZyBhbmQgdGhvc2UgdGhhdCBkb24ndCBzdXBwb3J0IHNjcmlwdGluZywgYnkgYWZmZWN0aW5nIGhvdyB0aGUgZG9jdW1lbnQgaXMgcGFyc2VkLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L25vc2NyaXB0In1dfSx7bmFtZToidGVtcGxhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZW1wbGF0ZSBlbGVtZW50IGlzIHVzZWQgdG8gZGVjbGFyZSBmcmFnbWVudHMgb2YgSFRNTCB0aGF0IGNhbiBiZSBjbG9uZWQgYW5kIGluc2VydGVkIGluIHRoZSBkb2N1bWVudCBieSBzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGVtcGxhdGUifV19LHtuYW1lOiJjYW52YXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjYW52YXMgZWxlbWVudCBwcm92aWRlcyBzY3JpcHRzIHdpdGggYSByZXNvbHV0aW9uLWRlcGVuZGVudCBiaXRtYXAgY2FudmFzLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgcmVuZGVyaW5nIGdyYXBocywgZ2FtZSBncmFwaGljcywgYXJ0LCBvciBvdGhlciB2aXN1YWwgaW1hZ2VzIG9uIHRoZSBmbHkuIn0sYXR0cmlidXRlczpbe25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGNvb3JkaW5hdGUgc3BhY2UgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdHMgdG8gMzAwLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDE1MC4ifX0se25hbWU6Im1vei1vcGFxdWUiLGRlc2NyaXB0aW9uOiJMZXRzIHRoZSBjYW52YXMga25vdyB3aGV0aGVyIG9yIG5vdCB0cmFuc2x1Y2VuY3kgd2lsbCBiZSBhIGZhY3Rvci4gSWYgdGhlIGNhbnZhcyBrbm93cyB0aGVyZSdzIG5vIHRyYW5zbHVjZW5jeSwgcGFpbnRpbmcgcGVyZm9ybWFuY2UgY2FuIGJlIG9wdGltaXplZC4gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBieSBNb3ppbGxhLWJhc2VkIGJyb3dzZXJzOyB1c2UgdGhlIHN0YW5kYXJkaXplZCBbYGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHsgYWxwaGE6IGZhbHNlIH0pYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxDYW52YXNFbGVtZW50L2dldENvbnRleHQgXCJUaGUgSFRNTENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgpIG1ldGhvZCByZXR1cm5zIGEgZHJhd2luZyBjb250ZXh0IG9uIHRoZSBjYW52YXMsIG9yIG51bGwgaWYgdGhlIGNvbnRleHQgaWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLlwiKSBpbnN0ZWFkLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzIn1dfV0sZ2xvYmFsQXR0cmlidXRlczpbe25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvdmlkZXMgYSBoaW50IGZvciBnZW5lcmF0aW5nIGEga2V5Ym9hcmQgc2hvcnRjdXQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGNvbnNpc3RzIG9mIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgY2hhcmFjdGVycy4gVGhlIGJyb3dzZXIgc2hvdWxkIHVzZSB0aGUgZmlyc3Qgb25lIHRoYXQgZXhpc3RzIG9uIHRoZSBjb21wdXRlciBrZXlib2FyZCBsYXlvdXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hY2Nlc3NrZXkifV19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udHJvbHMgd2hldGhlciBhbmQgaG93IHRleHQgaW5wdXQgaXMgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgb2ZmYCBvciBgbm9uZWAsIG5vIGF1dG9jYXBpdGFsaXphdGlvbiBpcyBhcHBsaWVkIChhbGwgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZSlcbiogICBgb25gIG9yIGBzZW50ZW5jZXNgLCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggc2VudGVuY2UgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgd29yZHNgLCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCBkZWZhdWx0cyB0byBhIGNhcGl0YWwgbGV0dGVyOyBhbGwgb3RoZXIgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZVxuKiAgIGBjaGFyYWN0ZXJzYCwgYWxsIGxldHRlcnMgc2hvdWxkIGRlZmF1bHQgdG8gdXBwZXJjYXNlIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hdXRvY2FwaXRhbGl6ZSJ9XX0se25hbWU6ImNsYXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjbGFzc2VzIG9mIHRoZSBlbGVtZW50LiBDbGFzc2VzIGFsbG93cyBDU1MgYW5kIEphdmFTY3JpcHQgdG8gc2VsZWN0IGFuZCBhY2Nlc3Mgc3BlY2lmaWMgZWxlbWVudHMgdmlhIHRoZSBbY2xhc3Mgc2VsZWN0b3JzXSgvZW4tVVMvZG9jcy9XZWIvQ1NTL0NsYXNzX3NlbGVjdG9ycykgb3IgZnVuY3Rpb25zIGxpa2UgdGhlIG1ldGhvZCBbYERvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKWBdKC9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAicmV0dXJucyBhbiBhcnJheS1saWtlIG9iamVjdCBvZiBhbGwgY2hpbGQgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbGwgb2YgdGhlIGdpdmVuIGNsYXNzIG5hbWVzLiIpLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY2xhc3MifV19LHtuYW1lOiJjb250ZW50ZWRpdGFibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgaWYgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGVkaXRhYmxlIGJ5IHRoZSB1c2VyLiBJZiBzbywgdGhlIGJyb3dzZXIgbW9kaWZpZXMgaXRzIHdpZGdldCB0byBhbGxvdyBlZGl0aW5nLiBUaGUgYXR0cmlidXRlIG11c3QgdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAgb3IgdGhlIF9lbXB0eSBzdHJpbmdfLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGJlIGVkaXRhYmxlO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG11c3Qgbm90IGJlIGVkaXRhYmxlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY29udGVudGVkaXRhYmxlIn1dfSx7bmFtZToiY29udGV4dG1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBgWyoqaWQqKl0oI2F0dHItaWQpYCBvZiBhIFtgPG1lbnU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikgdG8gdXNlIGFzIHRoZSBjb250ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRleHRtZW51In1dfSx7bmFtZToiZGlyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCdzIHRleHQuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGx0cmAsIHdoaWNoIG1lYW5zIF9sZWZ0IHRvIHJpZ2h0XyBhbmQgaXMgdG8gYmUgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgYXJlIHdyaXR0ZW4gZnJvbSB0aGUgbGVmdCB0byB0aGUgcmlnaHQgKGxpa2UgRW5nbGlzaCk7XG4qICAgYHJ0bGAsIHdoaWNoIG1lYW5zIF9yaWdodCB0byBsZWZ0XyBhbmQgaXMgdG8gYmUgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgYXJlIHdyaXR0ZW4gZnJvbSB0aGUgcmlnaHQgdG8gdGhlIGxlZnQgKGxpa2UgQXJhYmljKTtcbiogICBgYXV0b2AsIHdoaWNoIGxldHMgdGhlIHVzZXIgYWdlbnQgZGVjaWRlLiBJdCB1c2VzIGEgYmFzaWMgYWxnb3JpdGhtIGFzIGl0IHBhcnNlcyB0aGUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIGVsZW1lbnQgdW50aWwgaXQgZmluZHMgYSBjaGFyYWN0ZXIgd2l0aCBhIHN0cm9uZyBkaXJlY3Rpb25hbGl0eSwgdGhlbiBpdCBhcHBsaWVzIHRoYXQgZGlyZWN0aW9uYWxpdHkgdG8gdGhlIHdob2xlIGVsZW1lbnQuIn0sdmFsdWVTZXQ6ImQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZGlyIn1dfSx7bmFtZToiZHJhZ2dhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGRyYWdnZWQsIHVzaW5nIHRoZSBbRHJhZyBhbmQgRHJvcCBBUEldKC9lbi11cy9kb2NzL0RyYWdEcm9wL0RyYWdfYW5kX0Ryb3ApLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IGJlIGRyYWdnZWRcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtYXkgbm90IGJlIGRyYWdnZWQuIn0sdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZHJhZ2dhYmxlIn1dfSx7bmFtZToiZHJvcHpvbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgd2hhdCB0eXBlcyBvZiBjb250ZW50IGNhbiBiZSBkcm9wcGVkIG9uIGFuIGVsZW1lbnQsIHVzaW5nIHRoZSBbRHJhZyBhbmQgRHJvcCBBUEldKC9lbi1VUy9kb2NzL0RyYWdEcm9wL0RyYWdfYW5kX0Ryb3ApLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBjb3B5YCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgZHJvcHBpbmcgd2lsbCBjcmVhdGUgYSBjb3B5IG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIGRyYWdnZWRcbiogICBgbW92ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHRoYXQgd2FzIGRyYWdnZWQgd2lsbCBiZSBtb3ZlZCB0byB0aGlzIG5ldyBsb2NhdGlvbi5cbiogICBgbGlua2AsIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgZHJhZ2dlZCBkYXRhLiJ9fSx7bmFtZToiZXhwb3J0cGFydHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gdHJhbnNpdGl2ZWx5IGV4cG9ydCBzaGFkb3cgcGFydHMgZnJvbSBhIG5lc3RlZCBzaGFkb3cgdHJlZSBpbnRvIGEgY29udGFpbmluZyBsaWdodCB0cmVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZXhwb3J0cGFydHMifV19LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgbm90IHlldCwgb3IgaXMgbm8gbG9uZ2VyLCBfcmVsZXZhbnRfLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGJlIHVzZWQgdG8gaGlkZSBlbGVtZW50cyBvZiB0aGUgcGFnZSB0aGF0IGNhbid0IGJlIHVzZWQgdW50aWwgdGhlIGxvZ2luIHByb2Nlc3MgaGFzIGJlZW4gY29tcGxldGVkLiBUaGUgYnJvd3NlciB3b24ndCByZW5kZXIgc3VjaCBlbGVtZW50cy4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCB0byBoaWRlIGNvbnRlbnQgdGhhdCBjb3VsZCBsZWdpdGltYXRlbHkgYmUgc2hvd24uIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaGlkZGVuIn1dfSx7bmFtZToiaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSB1bmlxdWUgaWRlbnRpZmllciAoSUQpIHdoaWNoIG11c3QgYmUgdW5pcXVlIGluIHRoZSB3aG9sZSBkb2N1bWVudC4gSXRzIHB1cnBvc2UgaXMgdG8gaWRlbnRpZnkgdGhlIGVsZW1lbnQgd2hlbiBsaW5raW5nICh1c2luZyBhIGZyYWdtZW50IGlkZW50aWZpZXIpLCBzY3JpcHRpbmcsIG9yIHN0eWxpbmcgKHdpdGggQ1NTKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lkIn1dfSx7bmFtZToiaW5wdXRtb2RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidQcm92aWRlcyBhIGhpbnQgdG8gYnJvd3NlcnMgYXMgdG8gdGhlIHR5cGUgb2YgdmlydHVhbCBrZXlib2FyZCBjb25maWd1cmF0aW9uIHRvIHVzZSB3aGVuIGVkaXRpbmcgdGhpcyBlbGVtZW50IG9yIGl0cyBjb250ZW50cy4gVXNlZCBwcmltYXJpbHkgb24gW2A8aW5wdXQ+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnRzLCBidXQgaXMgdXNhYmxlIG9uIGFueSBlbGVtZW50IHdoaWxlIGluIGBbY29udGVudGVkaXRhYmxlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWNvbnRlbnRlZGl0YWJsZSlgIG1vZGUuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pbnB1dG1vZGUifV19LHtuYW1lOiJpcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgYSBzdGFuZGFyZCBIVE1MIGVsZW1lbnQgc2hvdWxkIGJlaGF2ZSBsaWtlIGEgcmVnaXN0ZXJlZCBjdXN0b20gYnVpbHQtaW4gZWxlbWVudCAoc2VlIFtVc2luZyBjdXN0b20gZWxlbWVudHNdKC9lbi1VUy9kb2NzL1dlYi9XZWJfQ29tcG9uZW50cy9Vc2luZ19jdXN0b21fZWxlbWVudHMpIGZvciBtb3JlIGRldGFpbHMpLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXMifV19LHtuYW1lOiJpdGVtaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bmlxdWUsIGdsb2JhbCBpZGVudGlmaWVyIG9mIGFuIGl0ZW0uIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtaWQifV19LHtuYW1lOiJpdGVtcHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlZCB0byBhZGQgcHJvcGVydGllcyB0byBhbiBpdGVtLiBFdmVyeSBIVE1MIGVsZW1lbnQgbWF5IGhhdmUgYW4gYGl0ZW1wcm9wYCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCB3aGVyZSBhbiBgaXRlbXByb3BgIGNvbnNpc3RzIG9mIGEgbmFtZSBhbmQgdmFsdWUgcGFpci4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1wcm9wIn1dfSx7bmFtZToiaXRlbXJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvcGVydGllcyB0aGF0IGFyZSBub3QgZGVzY2VuZGFudHMgb2YgYW4gZWxlbWVudCB3aXRoIHRoZSBgaXRlbXNjb3BlYCBhdHRyaWJ1dGUgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlbSB1c2luZyBhbiBgaXRlbXJlZmAuIEl0IHByb3ZpZGVzIGEgbGlzdCBvZiBlbGVtZW50IGlkcyAobm90IGBpdGVtaWRgcykgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1yZWYifV19LHtuYW1lOiJpdGVtc2NvcGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6ImBpdGVtc2NvcGVgICh1c3VhbGx5KSB3b3JrcyBhbG9uZyB3aXRoIGBbaXRlbXR5cGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXR5cGUpYCB0byBzcGVjaWZ5IHRoYXQgdGhlIEhUTUwgY29udGFpbmVkIGluIGEgYmxvY2sgaXMgYWJvdXQgYSBwYXJ0aWN1bGFyIGl0ZW0uIGBpdGVtc2NvcGVgIGNyZWF0ZXMgdGhlIEl0ZW0gYW5kIGRlZmluZXMgdGhlIHNjb3BlIG9mIHRoZSBgaXRlbXR5cGVgIGFzc29jaWF0ZWQgd2l0aCBpdC4gYGl0ZW10eXBlYCBpcyBhIHZhbGlkIFVSTCBvZiBhIHZvY2FidWxhcnkgKHN1Y2ggYXMgW3NjaGVtYS5vcmddKGh0dHBzOi8vc2NoZW1hLm9yZy8pKSB0aGF0IGRlc2NyaWJlcyB0aGUgaXRlbSBhbmQgaXRzIHByb3BlcnRpZXMgY29udGV4dC4ifSx2YWx1ZVNldDoidiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtc2NvcGUifV19LHtuYW1lOiJpdGVtdHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkwgb2YgdGhlIHZvY2FidWxhcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGVmaW5lIGBpdGVtcHJvcGBzIChpdGVtIHByb3BlcnRpZXMpIGluIHRoZSBkYXRhIHN0cnVjdHVyZS4gYFtpdGVtc2NvcGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXNjb3BlKWAgaXMgdXNlZCB0byBzZXQgdGhlIHNjb3BlIG9mIHdoZXJlIGluIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGUgdm9jYWJ1bGFyeSBzZXQgYnkgYGl0ZW10eXBlYCB3aWxsIGJlIGFjdGl2ZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW10eXBlIn1dfSx7bmFtZToibGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSGVscHMgZGVmaW5lIHRoZSBsYW5ndWFnZSBvZiBhbiBlbGVtZW50OiB0aGUgbGFuZ3VhZ2UgdGhhdCBub24tZWRpdGFibGUgZWxlbWVudHMgYXJlIGluLCBvciB0aGUgbGFuZ3VhZ2UgdGhhdCBlZGl0YWJsZSBlbGVtZW50cyBzaG91bGQgYmUgd3JpdHRlbiBpbiBieSB0aGUgdXNlci4gVGhlIGF0dHJpYnV0ZSBjb250YWlucyBvbmUg4oCcbGFuZ3VhZ2UgdGFn4oCdIChtYWRlIG9mIGh5cGhlbi1zZXBhcmF0ZWQg4oCcbGFuZ3VhZ2Ugc3VidGFnc+KAnSkgaW4gdGhlIGZvcm1hdCBkZWZpbmVkIGluIFtfVGFncyBmb3IgSWRlbnRpZnlpbmcgTGFuZ3VhZ2VzIChCQ1A0NylfXShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCkuIFsqKnhtbDpsYW5nKipdKCNhdHRyLXhtbDpsYW5nKSBoYXMgcHJpb3JpdHkgb3ZlciBpdC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2xhbmcifV19LHtuYW1lOiJwYXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBwYXJ0IG5hbWVzIG9mIHRoZSBlbGVtZW50LiBQYXJ0IG5hbWVzIGFsbG93cyBDU1MgdG8gc2VsZWN0IGFuZCBzdHlsZSBzcGVjaWZpYyBlbGVtZW50cyBpbiBhIHNoYWRvdyB0cmVlIHZpYSB0aGUgW2A6OnBhcnRgXSgvZW4tVVMvZG9jcy9XZWIvQ1NTLzo6cGFydCAiVGhlIDo6cGFydCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhbnkgZWxlbWVudCB3aXRoaW4gYSBzaGFkb3cgdHJlZSB0aGF0IGhhcyBhIG1hdGNoaW5nIHBhcnQgYXR0cmlidXRlLiIpIHBzZXVkby1lbGVtZW50Lid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvcGFydCJ9XX0se25hbWU6InJvbGUiLHZhbHVlU2V0OiJyb2xlcyJ9LHtuYW1lOiJzbG90IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBc3NpZ25zIGEgc2xvdCBpbiBhIFtzaGFkb3cgRE9NXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvU2hhZG93X0RPTSkgc2hhZG93IHRyZWUgdG8gYW4gZWxlbWVudDogQW4gZWxlbWVudCB3aXRoIGEgYHNsb3RgIGF0dHJpYnV0ZSBpcyBhc3NpZ25lZCB0byB0aGUgc2xvdCBjcmVhdGVkIGJ5IHRoZSBbYDxzbG90PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCBcIlRoZSBIVE1MIDxzbG90PiBlbGVtZW504oCUcGFydCBvZiB0aGUgV2ViIENvbXBvbmVudHMgdGVjaG5vbG9neSBzdWl0ZeKAlGlzIGEgcGxhY2Vob2xkZXIgaW5zaWRlIGEgd2ViIGNvbXBvbmVudCB0aGF0IHlvdSBjYW4gZmlsbCB3aXRoIHlvdXIgb3duIG1hcmt1cCwgd2hpY2ggbGV0cyB5b3UgY3JlYXRlIHNlcGFyYXRlIERPTSB0cmVlcyBhbmQgcHJlc2VudCB0aGVtIHRvZ2V0aGVyLlwiKSBlbGVtZW50IHdob3NlIGBbbmFtZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbG90I2F0dHItbmFtZSlgIGF0dHJpYnV0ZSdzIHZhbHVlIG1hdGNoZXMgdGhhdCBgc2xvdGAgYXR0cmlidXRlJ3MgdmFsdWUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zbG90In1dfSx7bmFtZToic3BlbGxjaGVjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgZGVmaW5lcyB3aGV0aGVyIHRoZSBlbGVtZW50IG1heSBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnMuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUsIGlmIHBvc3NpYmxlLCBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnM7XG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnMuIn0sdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc3BlbGxjaGVjayJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidDb250YWlucyBbQ1NTXSgvZW4tVVMvZG9jcy9XZWIvQ1NTKSBzdHlsaW5nIGRlY2xhcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LiBOb3RlIHRoYXQgaXQgaXMgcmVjb21tZW5kZWQgZm9yIHN0eWxlcyB0byBiZSBkZWZpbmVkIGluIGEgc2VwYXJhdGUgZmlsZSBvciBmaWxlcy4gVGhpcyBhdHRyaWJ1dGUgYW5kIHRoZSBbYDxzdHlsZT5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0eWxlICJUaGUgSFRNTCA8c3R5bGU+IGVsZW1lbnQgY29udGFpbnMgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgZG9jdW1lbnQsIG9yIHBhcnQgb2YgYSBkb2N1bWVudC4iKSBlbGVtZW50IGhhdmUgbWFpbmx5IHRoZSBwdXJwb3NlIG9mIGFsbG93aW5nIGZvciBxdWljayBzdHlsaW5nLCBmb3IgZXhhbXBsZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3N0eWxlIn1dfSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGludGVnZXIgYXR0cmlidXRlIGluZGljYXRpbmcgaWYgdGhlIGVsZW1lbnQgY2FuIHRha2UgaW5wdXQgZm9jdXMgKGlzIF9mb2N1c2FibGVfKSwgaWYgaXQgc2hvdWxkIHBhcnRpY2lwYXRlIHRvIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYW5kIGlmIHNvLCBhdCB3aGF0IHBvc2l0aW9uLiBJdCBjYW4gdGFrZSBzZXZlcmFsIHZhbHVlczpcblxuKiAgIGEgX25lZ2F0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUsIGJ1dCBzaG91bGQgbm90IGJlIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uO1xuKiAgIGAwYCBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLCBidXQgaXRzIHJlbGF0aXZlIG9yZGVyIGlzIGRlZmluZWQgYnkgdGhlIHBsYXRmb3JtIGNvbnZlbnRpb247XG4qICAgYSBfcG9zaXRpdmUgdmFsdWVfIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBhbmQgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb247IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZWxlbWVudHMgYXJlIGZvY3VzZWQgaXMgdGhlIGluY3JlYXNpbmcgdmFsdWUgb2YgdGhlIFsqKnRhYmluZGV4KipdKCNhdHRyLXRhYmluZGV4KS4gSWYgc2V2ZXJhbCBlbGVtZW50cyBzaGFyZSB0aGUgc2FtZSB0YWJpbmRleCwgdGhlaXIgcmVsYXRpdmUgb3JkZXIgZm9sbG93cyB0aGVpciByZWxhdGl2ZSBwb3NpdGlvbnMgaW4gdGhlIGRvY3VtZW50LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXgifV19LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udGFpbnMgYSB0ZXh0IHJlcHJlc2VudGluZyBhZHZpc29yeSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBlbGVtZW50IGl0IGJlbG9uZ3MgdG8uIFN1Y2ggaW5mb3JtYXRpb24gY2FuIHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3NhcmlseSwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGFzIGEgdG9vbHRpcC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RpdGxlIn1dfSx7bmFtZToidHJhbnNsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSB0aGF0IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGFuIGVsZW1lbnQncyBhdHRyaWJ1dGUgdmFsdWVzIGFuZCB0aGUgdmFsdWVzIG9mIGl0cyBbYFRleHRgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL1RleHQgXCJUaGUgVGV4dCBpbnRlcmZhY2UgcmVwcmVzZW50cyB0aGUgdGV4dHVhbCBjb250ZW50IG9mIEVsZW1lbnQgb3IgQXR0ci4gSWYgYW4gZWxlbWVudCBoYXMgbm8gbWFya3VwIHdpdGhpbiBpdHMgY29udGVudCwgaXQgaGFzIGEgc2luZ2xlIGNoaWxkIGltcGxlbWVudGluZyBUZXh0IHRoYXQgY29udGFpbnMgdGhlIGVsZW1lbnQncyB0ZXh0LiBIb3dldmVyLCBpZiB0aGUgZWxlbWVudCBjb250YWlucyBtYXJrdXAsIGl0IGlzIHBhcnNlZCBpbnRvIGluZm9ybWF0aW9uIGl0ZW1zIGFuZCBUZXh0IG5vZGVzIHRoYXQgZm9ybSBpdHMgY2hpbGRyZW4uXCIpIG5vZGUgY2hpbGRyZW4gYXJlIHRvIGJlIHRyYW5zbGF0ZWQgd2hlbiB0aGUgcGFnZSBpcyBsb2NhbGl6ZWQsIG9yIHdoZXRoZXIgdG8gbGVhdmUgdGhlbSB1bmNoYW5nZWQuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgZW1wdHkgc3RyaW5nIGFuZCBgeWVzYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgd2lsbCBiZSB0cmFuc2xhdGVkLlxuKiAgIGBub2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgbm90IGJlIHRyYW5zbGF0ZWQuIn0sdmFsdWVTZXQ6InkiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdHJhbnNsYXRlIn1dfSx7bmFtZToib25hYm9ydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvYWRpbmcgb2YgYSByZXNvdXJjZSBoYXMgYmVlbiBhYm9ydGVkLiJ9fSx7bmFtZToib25ibHVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyBsb3N0IGZvY3VzIChkb2VzIG5vdCBidWJibGUpLiJ9fSx7bmFtZToib25jYW5wbGF5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEsIGJ1dCBlc3RpbWF0ZXMgdGhhdCBub3QgZW5vdWdoIGRhdGEgaGFzIGJlZW4gbG9hZGVkIHRvIHBsYXkgdGhlIG1lZGlhIHVwIHRvIGl0cyBlbmQgd2l0aG91dCBoYXZpbmcgdG8gc3RvcCBmb3IgZnVydGhlciBidWZmZXJpbmcgb2YgY29udGVudC4ifX0se25hbWU6Im9uY2FucGxheXRocm91Z2giLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGNhbiBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCBmb3IgPGlucHV0PiwgPHNlbGVjdD4sIGFuZCA8dGV4dGFyZWE+IGVsZW1lbnRzIHdoZW4gYSBjaGFuZ2UgdG8gdGhlIGVsZW1lbnQncyB2YWx1ZSBpcyBjb21taXR0ZWQgYnkgdGhlIHVzZXIuIn19LHtuYW1lOiJvbmNsaWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaGFzIGJlZW4gcHJlc3NlZCBhbmQgcmVsZWFzZWQgb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uY29udGV4dG1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByaWdodCBidXR0b24gb2YgdGhlIG1vdXNlIGlzIGNsaWNrZWQgKGJlZm9yZSB0aGUgY29udGV4dCBtZW51IGlzIGRpc3BsYXllZCkuIn19LHtuYW1lOiJvbmRibGNsaWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgY2xpY2tlZCB0d2ljZSBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25kcmFnIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGlzIGJlaW5nIGRyYWdnZWQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ2VuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnIG9wZXJhdGlvbiBpcyBiZWluZyBlbmRlZCAoYnkgcmVsZWFzaW5nIGEgbW91c2UgYnV0dG9uIG9yIGhpdHRpbmcgdGhlIGVzY2FwZSBrZXkpLiJ9fSx7bmFtZToib25kcmFnZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZ2dlZCBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGVudGVycyBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kcmFnbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZ2dlZCBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGxlYXZlcyBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kcmFnb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIG92ZXIgYSB2YWxpZCBkcm9wIHRhcmdldCAoZXZlcnkgMzUwbXMpLiJ9fSx7bmFtZToib25kcmFnc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIHN0YXJ0cyBkcmFnZ2luZyBhbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uLiJ9fSx7bmFtZToib25kcm9wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGlzIGRyb3BwZWQgb24gYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHVyYXRpb25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkdXJhdGlvbiBhdHRyaWJ1dGUgaGFzIGJlZW4gdXBkYXRlZC4ifX0se25hbWU6Im9uZW1wdGllZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1lZGlhIGhhcyBiZWNvbWUgZW1wdHk7IGZvciBleGFtcGxlLCB0aGlzIGV2ZW50IGlzIHNlbnQgaWYgdGhlIG1lZGlhIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIChvciBwYXJ0aWFsbHkgbG9hZGVkKSwgYW5kIHRoZSBsb2FkKCkgbWV0aG9kIGlzIGNhbGxlZCB0byByZWxvYWQgaXQuIn19LHtuYW1lOiJvbmVuZGVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgc3RvcHBlZCBiZWNhdXNlIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHdhcyByZWFjaGVkLiJ9fSx7bmFtZToib25lcnJvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSByZXNvdXJjZSBmYWlsZWQgdG8gbG9hZC4ifX0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaGFzIHJlY2VpdmVkIGZvY3VzIChkb2VzIG5vdCBidWJibGUpLiJ9fSx7bmFtZToib25mb3JtY2hhbmdlIn0se25hbWU6Im9uZm9ybWlucHV0In0se25hbWU6Im9uaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiBhbiBlbGVtZW50IGNoYW5nZXMgb3IgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudCB3aXRoIHRoZSBhdHRyaWJ1dGUgY29udGVudGVkaXRhYmxlIGlzIG1vZGlmaWVkLiJ9fSx7bmFtZToib25pbnZhbGlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHN1Ym1pdHRhYmxlIGVsZW1lbnQgaGFzIGJlZW4gY2hlY2tlZCBhbmQgZG9lc24ndCBzYXRpc2Z5IGl0cyBjb25zdHJhaW50cy4ifX0se25hbWU6Im9ua2V5ZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcHJlc3NlZCBkb3duLiJ9fSx7bmFtZToib25rZXlwcmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcHJlc3NlZCBkb3duIGFuZCB0aGF0IGtleSBub3JtYWxseSBwcm9kdWNlcyBhIGNoYXJhY3RlciB2YWx1ZSAodXNlIGlucHV0IGluc3RlYWQpLiJ9fSx7bmFtZToib25rZXl1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcmVsZWFzZWQuIn19LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgYW5kIGl0cyBkZXBlbmRlbnQgcmVzb3VyY2VzIGhhdmUgZmluaXNoZWQgbG9hZGluZy4ifX0se25hbWU6Im9ubG9hZGVkZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBtZWRpYSBoYXMgZmluaXNoZWQgbG9hZGluZy4ifX0se25hbWU6Im9ubG9hZGVkbWV0YWRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRhZGF0YSBoYXMgYmVlbiBsb2FkZWQuIn19LHtuYW1lOiJvbmxvYWRzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvZ3Jlc3MgaGFzIGJlZ3VuLiJ9fSx7bmFtZToib25tb3VzZWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiAodXN1YWxseSBhIG1vdXNlKSBpcyBwcmVzc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNlbW92ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW91dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb2ZmIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZCBvciBvZmYgb25lIG9mIGl0cyBjaGlsZHJlbi4ifX0se25hbWU6Im9ubW91c2VvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvbnRvIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZCBvciBvbnRvIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNldXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyByZWxlYXNlZCBvdmVyIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNld2hlZWwifSx7bmFtZToib25tb3VzZWVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvbnRvIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZC4ifX0se25hbWU6Im9ubW91c2VsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb2ZmIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZC4ifX0se25hbWU6Im9ucGF1c2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWVuIHBhdXNlZC4ifX0se25hbWU6Im9ucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIGJlZ3VuLiJ9fSx7bmFtZToib25wbGF5aW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBpcyByZWFkeSB0byBzdGFydCBhZnRlciBoYXZpbmcgYmVlbiBwYXVzZWQgb3IgZGVsYXllZCBkdWUgdG8gbGFjayBvZiBkYXRhLiJ9fSx7bmFtZToib25wcm9ncmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW4gcHJvZ3Jlc3MuIn19LHtuYW1lOiJvbnJhdGVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwbGF5YmFjayByYXRlIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25yZXNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBmb3JtIGlzIHJlc2V0LiJ9fSx7bmFtZToib25yZXNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkb2N1bWVudCB2aWV3IGhhcyBiZWVuIHJlc2l6ZWQuIn19LHtuYW1lOiJvbnJlYWR5c3RhdGVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBvZiBhIGRvY3VtZW50IGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25zY3JvbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkb2N1bWVudCB2aWV3IG9yIGFuIGVsZW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQuIn19LHtuYW1lOiJvbnNlZWtlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzZWVrIG9wZXJhdGlvbiBjb21wbGV0ZWQuIn19LHtuYW1lOiJvbnNlZWtpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gYmVnYW4uIn19LHtuYW1lOiJvbnNlbGVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU29tZSB0ZXh0IGlzIGJlaW5nIHNlbGVjdGVkLiJ9fSx7bmFtZToib25zaG93IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNvbnRleHRtZW51IGV2ZW50IHdhcyBmaXJlZCBvbi9idWJibGVkIHRvIGFuIGVsZW1lbnQgdGhhdCBoYXMgYSBjb250ZXh0bWVudSBhdHRyaWJ1dGUifX0se25hbWU6Im9uc3RhbGxlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgaXMgdHJ5aW5nIHRvIGZldGNoIG1lZGlhIGRhdGEsIGJ1dCBkYXRhIGlzIHVuZXhwZWN0ZWRseSBub3QgZm9ydGhjb21pbmcuIn19LHtuYW1lOiJvbnN1Ym1pdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6Im9uc3VzcGVuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTWVkaWEgZGF0YSBsb2FkaW5nIGhhcyBiZWVuIHN1c3BlbmRlZC4ifX0se25hbWU6Im9udGltZXVwZGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpbWUgaW5kaWNhdGVkIGJ5IHRoZSBjdXJyZW50VGltZSBhdHRyaWJ1dGUgaGFzIGJlZW4gdXBkYXRlZC4ifX0se25hbWU6Im9udm9sdW1lY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdm9sdW1lIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib253YWl0aW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgc3RvcHBlZCBiZWNhdXNlIG9mIGEgdGVtcG9yYXJ5IGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucG9pbnRlcmNhbmNlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgaXMgdW5saWtlbHkgdG8gcHJvZHVjZSBhbnkgbW9yZSBldmVudHMuIn19LHtuYW1lOiJvbnBvaW50ZXJkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBlbnRlcnMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToib25wb2ludGVyZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnNpZGUgdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVybGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvdXQgb2YgdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVybG9ja2NoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgd2FzIGxvY2tlZCBvciByZWxlYXNlZC4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tlcnJvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSXQgd2FzIGltcG9zc2libGUgdG8gbG9jayB0aGUgcG9pbnRlciBmb3IgdGVjaG5pY2FsIHJlYXNvbnMgb3IgYmVjYXVzZSB0aGUgcGVybWlzc2lvbiB3YXMgZGVuaWVkLiJ9fSx7bmFtZToib25wb2ludGVybW92ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgY2hhbmdlZCBjb29yZGluYXRlcy4ifX0se25hbWU6Im9ucG9pbnRlcm91dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBtb3ZlZCBvdXQgb2YgaGl0LXRlc3RpbmcgYm91bmRhcnkgb3IgbGVhdmVzIGRldGVjdGFibGUgaG92ZXIgcmFuZ2UuIn19LHtuYW1lOiJvbnBvaW50ZXJvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIGludG8gdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVydXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGxlYXZlcyB0aGUgYWN0aXZlIGJ1dHRvbnMgc3RhdGUuIn19LHtuYW1lOiJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hY3RpdmVkZXNjZW5kYW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgZWxlbWVudCB3aGVuIERPTSBmb2N1cyBpcyBvbiBhIFtgY29tcG9zaXRlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jY29tcG9zaXRlKSB3aWRnZXQsIFtgdGV4dGJveGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RleHRib3gpLCBbYGdyb3VwYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JvdXApLCBvciBbYGFwcGxpY2F0aW9uYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXBwbGljYXRpb24pLiJ9fSx7bmFtZToiYXJpYS1hdG9taWMiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpIHdpbGwgcHJlc2VudCBhbGwsIG9yIG9ubHkgcGFydHMgb2YsIHRoZSBjaGFuZ2VkIHJlZ2lvbiBiYXNlZCBvbiB0aGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgW2BhcmlhLXJlbGV2YW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWxldmFudCkgYXR0cmlidXRlLiJ9fSx7bmFtZToiYXJpYS1hdXRvY29tcGxldGUiLHZhbHVlU2V0OiJhdXRvY29tcGxldGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdXRvY29tcGxldGUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgaW5wdXR0aW5nIHRleHQgY291bGQgdHJpZ2dlciBkaXNwbGF5IG9mIG9uZSBvciBtb3JlIHByZWRpY3Rpb25zIG9mIHRoZSB1c2VyJ3MgaW50ZW5kZWQgdmFsdWUgZm9yIGFuIGlucHV0IGFuZCBzcGVjaWZpZXMgaG93IHByZWRpY3Rpb25zIHdvdWxkIGJlIHByZXNlbnRlZCBpZiB0aGV5IGFyZSBtYWRlLiJ9fSx7bmFtZToiYXJpYS1idXN5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWJ1c3kifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGFuIGVsZW1lbnQgaXMgYmVpbmcgbW9kaWZpZWQgYW5kIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBfTUFZXyB3YW50IHRvIHdhaXQgdW50aWwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbXBsZXRlIGJlZm9yZSBleHBvc2luZyB0aGVtIHRvIHRoZSB1c2VyLiJ9fSx7bmFtZToiYXJpYS1jaGVja2VkIix2YWx1ZVNldDoidHJpc3RhdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAiY2hlY2tlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIG9mIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGFuZCBvdGhlciBbd2lkZ2V0c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS1wcmVzc2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLWNvbGNvdW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sY291bnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkuIn19LHtuYW1lOiJhcmlhLWNvbGluZGV4IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudCdzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgY29sdW1uIGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xjb3VudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sY291bnQpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLWNvbHNwYW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xzcGFuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwYW5uZWQgYnkgYSBjZWxsIG9yIGdyaWRjZWxsIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29saW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4KSBhbmQgW2BhcmlhLXJvd3NwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb250cm9scyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB3aG9zZSBjb250ZW50cyBvciBwcmVzZW5jZSBhcmUgY29udHJvbGxlZCBieSB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtb3duc2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducykuIn19LHtuYW1lOiJhcmlhLWN1cnJlbnQiLHZhbHVlU2V0OiJjdXJyZW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY3VycmVudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCByZXByZXNlbnRzIHRoZSBjdXJyZW50IGl0ZW0gd2l0aGluIGEgY29udGFpbmVyIG9yIHNldCBvZiByZWxhdGVkIGVsZW1lbnRzLiJ9fSx7bmFtZToiYXJpYS1kZXNjcmliZWRhdCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGF0In1dfSx7bmFtZToiYXJpYS1kZXNjcmliZWRieSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGRlc2NyaWJlcyB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1sYWJlbGxlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5KS4ifX0se25hbWU6ImFyaWEtZGlzYWJsZWQiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgW3BlcmNlaXZhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcGVyY2VpdmFibGUpIGJ1dCBkaXNhYmxlZCwgc28gaXQgaXMgbm90IGVkaXRhYmxlIG9yIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1oaWRkZW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbikgYW5kIFtgYXJpYS1yZWFkb25seWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVhZG9ubHkpLiJ9fSx7bmFtZToiYXJpYS1kcm9wZWZmZWN0Iix2YWx1ZVNldDoiZHJvcGVmZmVjdCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRyb3BlZmZlY3QifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgd2hhdCBmdW5jdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB3aGVuIGEgZHJhZ2dlZCBvYmplY3QgaXMgcmVsZWFzZWQgb24gdGhlIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToiYXJpYS1lcnJvcm1lc3NhZ2UiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWludmFsaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWludmFsaWQpIGFuZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtZXhwYW5kZWQiLHZhbHVlU2V0OiJ1IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXhwYW5kZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGVsZW1lbnQsIG9yIGFub3RoZXIgZ3JvdXBpbmcgZWxlbWVudCBpdCBjb250cm9scywgaXMgY3VycmVudGx5IGV4cGFuZGVkIG9yIGNvbGxhcHNlZC4ifX0se25hbWU6ImFyaWEtZmxvd3RvIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZmxvd3RvIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIG5leHQgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIGluIGFuIGFsdGVybmF0ZSByZWFkaW5nIG9yZGVyIG9mIGNvbnRlbnQgd2hpY2gsIGF0IHRoZSB1c2VyJ3MgZGlzY3JldGlvbiwgYWxsb3dzIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHRvIG92ZXJyaWRlIHRoZSBnZW5lcmFsIGRlZmF1bHQgb2YgcmVhZGluZyBpbiBkb2N1bWVudCBzb3VyY2Ugb3JkZXIuIn19LHtuYW1lOiJhcmlhLWdyYWJiZWQiLHZhbHVlU2V0OiJ1IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZ3JhYmJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOmBcXFtEZXByZWNhdGVkIGluIEFSSUEgMS4xXFxdIEluZGljYXRlcyBhbiBlbGVtZW50J3MgImdyYWJiZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBpbiBhIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9uLmB9fSx7bmFtZToiYXJpYS1oYXNwb3B1cCIsdmFsdWVTZXQ6Imhhc3BvcHVwIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaGFzcG9wdXAifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBhdmFpbGFiaWxpdHkgYW5kIHR5cGUgb2YgaW50ZXJhY3RpdmUgcG9wdXAgZWxlbWVudCwgc3VjaCBhcyBtZW51IG9yIGRpYWxvZywgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkuIn19LHtuYW1lOiJhcmlhLWhpZGRlbiIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oaWRkZW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgZXhwb3NlZCB0byBhbiBhY2Nlc3NpYmlsaXR5IEFQSS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRpc2FibGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kaXNhYmxlZCkuIn19LHtuYW1lOiJhcmlhLWludmFsaWQiLHZhbHVlU2V0OiJpbnZhbGlkIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaW52YWxpZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGVudGVyZWQgdmFsdWUgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU2VlIHJlbGF0ZWQgW2BhcmlhLWVycm9ybWVzc2FnZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXJyb3JtZXNzYWdlKS4ifX0se25hbWU6ImFyaWEta2Jkc2hvcnRjdXRzIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEta2Jkc2hvcnRjdXRzIn1dfSx7bmFtZToiYXJpYS1sYWJlbCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBzdHJpbmcgdmFsdWUgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWxhYmVsbGVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsbGVkYnkpLiJ9fSx7bmFtZToiYXJpYS1sYWJlbGxlZGJ5IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWxldmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGV2ZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgd2l0aGluIGEgc3RydWN0dXJlLiJ9fSx7bmFtZToiYXJpYS1saXZlIix2YWx1ZVNldDoibGl2ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxpdmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aWxsIGJlIHVwZGF0ZWQsIGFuZCBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHVwZGF0ZXMgdGhlIFt1c2VyIGFnZW50c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXVzZXItYWdlbnQpLCBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSwgYW5kIHVzZXIgY2FuIGV4cGVjdCBmcm9tIHRoZSBbbGl2ZSByZWdpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1saXZlLXJlZ2lvbikuIn19LHtuYW1lOiJhcmlhLW1vZGFsIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW1vZGFsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgbW9kYWwgd2hlbiBkaXNwbGF5ZWQuIn19LHtuYW1lOiJhcmlhLW11bHRpbGluZSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1tdWx0aWxpbmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYSB0ZXh0IGJveCBhY2NlcHRzIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0IG9yIG9ubHkgYSBzaW5nbGUgbGluZS4ifX0se25hbWU6ImFyaWEtbXVsdGlzZWxlY3RhYmxlIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpc2VsZWN0YWJsZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBtYXkgc2VsZWN0IG1vcmUgdGhhbiBvbmUgaXRlbSBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdGFibGUgZGVzY2VuZGFudHMuIn19LHtuYW1lOiJhcmlhLW9yaWVudGF0aW9uIix2YWx1ZVNldDoib3JpZW50YXRpb24iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCdzIG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwsIHZlcnRpY2FsLCBvciB1bmtub3duL2FtYmlndW91cy4ifX0se25hbWU6ImFyaWEtb3ducyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgaW4gb3JkZXIgdG8gZGVmaW5lIGEgdmlzdWFsLCBmdW5jdGlvbmFsLCBvciBjb250ZXh0dWFsIHBhcmVudC9jaGlsZCBbcmVsYXRpb25zaGlwXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcmVsYXRpb25zaGlwKSBiZXR3ZWVuIERPTSBlbGVtZW50cyB3aGVyZSB0aGUgRE9NIGhpZXJhcmNoeSBjYW5ub3QgYmUgdXNlZCB0byByZXByZXNlbnQgdGhlIHJlbGF0aW9uc2hpcC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbnRyb2xzYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scykuIn19LHtuYW1lOiJhcmlhLXBsYWNlaG9sZGVyIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcGxhY2Vob2xkZXIifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHNob3J0IGhpbnQgKGEgd29yZCBvciBzaG9ydCBwaHJhc2UpIGludGVuZGVkIHRvIGFpZCB0aGUgdXNlciB3aXRoIGRhdGEgZW50cnkgd2hlbiB0aGUgY29udHJvbCBoYXMgbm8gdmFsdWUuIEEgaGludCBjb3VsZCBiZSBhIHNhbXBsZSB2YWx1ZSBvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQuIn19LHtuYW1lOiJhcmlhLXBvc2luc2V0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpJ3MgbnVtYmVyIG9yIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50IHNldCBvZiBsaXN0aXRlbXMgb3IgdHJlZWl0ZW1zLiBOb3QgcmVxdWlyZWQgaWYgYWxsIGVsZW1lbnRzIGluIHRoZSBzZXQgYXJlIHByZXNlbnQgaW4gdGhlIERPTS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXNldHNpemVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNldHNpemUpLiJ9fSx7bmFtZToiYXJpYS1wcmVzc2VkIix2YWx1ZVNldDoidHJpc3RhdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAicHJlc3NlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIG9mIHRvZ2dsZSBidXR0b25zLiBTZWUgcmVsYXRlZCBbYGFyaWEtY2hlY2tlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1yZWFkb25seSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWFkb25seSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBub3QgZWRpdGFibGUsIGJ1dCBpcyBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtcmVsZXZhbnQiLHZhbHVlU2V0OiJyZWxldmFudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlbGV2YW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGF0IG5vdGlmaWNhdGlvbnMgdGhlIHVzZXIgYWdlbnQgd2lsbCB0cmlnZ2VyIHdoZW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSB3aXRoaW4gYSBsaXZlIHJlZ2lvbiBpcyBtb2RpZmllZC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWF0b21pY2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljKS4ifX0se25hbWU6ImFyaWEtcmVxdWlyZWQiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVxdWlyZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBiZWZvcmUgYSBmb3JtIG1heSBiZSBzdWJtaXR0ZWQuIn19LHtuYW1lOiJhcmlhLXJvbGVkZXNjcmlwdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvbGVkZXNjcmlwdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgaHVtYW4tcmVhZGFibGUsIGF1dGhvci1sb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbcm9sZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXJvbGUpIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkuIn19LHtuYW1lOiJhcmlhLXJvd2NvdW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2luZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCkuIn19LHtuYW1lOiJhcmlhLXJvd2luZGV4IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudCdzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgcm93IGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3djb3VudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQpIGFuZCBbYGFyaWEtcm93c3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93c3BhbikuIn19LHtuYW1lOiJhcmlhLXJvd3NwYW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIHNwYW5uZWQgYnkgYSBjZWxsIG9yIGdyaWRjZWxsIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1zZWxlY3RlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInNlbGVjdGVkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdmFyaW91cyBbd2lkZ2V0c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXByZXNzZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQpLid9fSx7bmFtZToiYXJpYS1zZXRzaXplIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtcG9zaW5zZXRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXBvc2luc2V0KS4ifX0se25hbWU6ImFyaWEtc29ydCIsdmFsdWVTZXQ6InNvcnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zb3J0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBpZiBpdGVtcyBpbiBhIHRhYmxlIG9yIGdyaWQgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4ifX0se25hbWU6ImFyaWEtdmFsdWVtYXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1heCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbWluIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVtaW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbWluaW11bSBhbGxvd2VkIHZhbHVlIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW5vdyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbm93In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS12YWx1ZXRleHRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCkuIn19LHtuYW1lOiJhcmlhLXZhbHVldGV4dCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBodW1hbiByZWFkYWJsZSB0ZXh0IGFsdGVybmF0aXZlIG9mIFtgYXJpYS12YWx1ZW5vd2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cpIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS1kZXRhaWxzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcHJvdmlkZXMgYSBkZXRhaWxlZCwgZXh0ZW5kZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWtleXNob3J0Y3V0cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGtleWJvYXJkIHNob3J0Y3V0cyB0aGF0IGFuIGF1dGhvciBoYXMgaW1wbGVtZW50ZWQgdG8gYWN0aXZhdGUgb3IgZ2l2ZSBmb2N1cyB0byBhbiBlbGVtZW50LiJ9fV0sdmFsdWVTZXRzOlt7bmFtZToiYiIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6InUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToibyIsdmFsdWVzOlt7bmFtZToib24ifSx7bmFtZToib2ZmIn1dfSx7bmFtZToieSIsdmFsdWVzOlt7bmFtZToieWVzIn0se25hbWU6Im5vIn1dfSx7bmFtZToidyIsdmFsdWVzOlt7bmFtZToic29mdCJ9LHtuYW1lOiJoYXJkIn1dfSx7bmFtZToiZCIsdmFsdWVzOlt7bmFtZToibHRyIn0se25hbWU6InJ0bCJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToibSIsdmFsdWVzOlt7bmFtZToiZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbR0VUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuMyk7IGZvcm0gZGF0YSBhcmUgYXBwZW5kZWQgdG8gdGhlIGBhY3Rpb25gIGF0dHJpYnV0ZSBVUkkgd2l0aCBhICc/JyBhcyBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4ifX0se25hbWU6InBvc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSk7IGZvcm0gZGF0YSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci4ifX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlIHdoZW4gdGhlIGZvcm0gaXMgaW5zaWRlIGEgW2A8ZGlhbG9nPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cpIGVsZW1lbnQgdG8gY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHN1Ym1pdHRlZC4ifX1dfSx7bmFtZToiZm0iLHZhbHVlczpbe25hbWU6ImdldCJ9LHtuYW1lOiJwb3N0In1dfSx7bmFtZToicyIsdmFsdWVzOlt7bmFtZToicm93In0se25hbWU6ImNvbCJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJjb2xncm91cCJ9XX0se25hbWU6InQiLHZhbHVlczpbe25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6InNlYXJjaCJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidXJsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InBhc3N3b3JkIn0se25hbWU6ImRhdGV0aW1lIn0se25hbWU6ImRhdGUifSx7bmFtZToibW9udGgifSx7bmFtZToid2VlayJ9LHtuYW1lOiJ0aW1lIn0se25hbWU6ImRhdGV0aW1lLWxvY2FsIn0se25hbWU6Im51bWJlciJ9LHtuYW1lOiJyYW5nZSJ9LHtuYW1lOiJjb2xvciJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJmaWxlIn0se25hbWU6InN1Ym1pdCJ9LHtuYW1lOiJpbWFnZSJ9LHtuYW1lOiJyZXNldCJ9LHtuYW1lOiJidXR0b24ifV19LHtuYW1lOiJpbSIsdmFsdWVzOlt7bmFtZToidmVyYmF0aW0ifSx7bmFtZToibGF0aW4ifSx7bmFtZToibGF0aW4tbmFtZSJ9LHtuYW1lOiJsYXRpbi1wcm9zZSJ9LHtuYW1lOiJmdWxsLXdpZHRoLWxhdGluIn0se25hbWU6ImthbmEifSx7bmFtZToia2FuYS1uYW1lIn0se25hbWU6ImthdGFrYW5hIn0se25hbWU6Im51bWVyaWMifSx7bmFtZToidGVsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InVybCJ9XX0se25hbWU6ImJ0Iix2YWx1ZXM6W3tuYW1lOiJidXR0b24ifSx7bmFtZToic3VibWl0In0se25hbWU6InJlc2V0In0se25hbWU6Im1lbnUifV19LHtuYW1lOiJsdCIsdmFsdWVzOlt7bmFtZToiMSJ9LHtuYW1lOiJhIn0se25hbWU6IkEifSx7bmFtZToiaSJ9LHtuYW1lOiJJIn1dfSx7bmFtZToibXQiLHZhbHVlczpbe25hbWU6ImNvbnRleHQifSx7bmFtZToidG9vbGJhciJ9XX0se25hbWU6Im1pdCIsdmFsdWVzOlt7bmFtZToiY29tbWFuZCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9XX0se25hbWU6ImV0Iix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSx7bmFtZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9LHtuYW1lOiJ0ZXh0L3BsYWluIn1dfSx7bmFtZToidGsiLHZhbHVlczpbe25hbWU6InN1YnRpdGxlcyJ9LHtuYW1lOiJjYXB0aW9ucyJ9LHtuYW1lOiJkZXNjcmlwdGlvbnMifSx7bmFtZToiY2hhcHRlcnMifSx7bmFtZToibWV0YWRhdGEifV19LHtuYW1lOiJwbCIsdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJtZXRhZGF0YSJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToic2giLHZhbHVlczpbe25hbWU6ImNpcmNsZSJ9LHtuYW1lOiJkZWZhdWx0In0se25hbWU6InBvbHkifSx7bmFtZToicmVjdCJ9XX0se25hbWU6InhvIix2YWx1ZXM6W3tuYW1lOiJhbm9ueW1vdXMifSx7bmFtZToidXNlLWNyZWRlbnRpYWxzIn1dfSx7bmFtZToic2IiLHZhbHVlczpbe25hbWU6ImFsbG93LWZvcm1zIn0se25hbWU6ImFsbG93LW1vZGFscyJ9LHtuYW1lOiJhbGxvdy1wb2ludGVyLWxvY2sifSx7bmFtZToiYWxsb3ctcG9wdXBzIn0se25hbWU6ImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCJ9LHtuYW1lOiJhbGxvdy1zYW1lLW9yaWdpbiJ9LHtuYW1lOiJhbGxvdy1zY3JpcHRzIn0se25hbWU6ImFsbG93LXRvcC1uYXZpZ2F0aW9uIn1dfSx7bmFtZToidHJpc3RhdGUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToibWl4ZWQifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToiaW5wdXRhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9uYWwtbmFtZSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMiJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMyJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsNCJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUxIn0se25hbWU6ImFkZHJlc3MtbGluZTIifSx7bmFtZToiYWRkcmVzcy1saW5lMyJ9LHtuYW1lOiJiZGF5In0se25hbWU6ImJkYXkteWVhciJ9LHtuYW1lOiJiZGF5LWRheSJ9LHtuYW1lOiJiZGF5LW1vbnRoIn0se25hbWU6ImJpbGxpbmcifSx7bmFtZToiY2MtYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImNjLWNzYyJ9LHtuYW1lOiJjYy1leHAifSx7bmFtZToiY2MtZXhwLW1vbnRoIn0se25hbWU6ImNjLWV4cC15ZWFyIn0se25hbWU6ImNjLWZhbWlseS1uYW1lIn0se25hbWU6ImNjLWdpdmVuLW5hbWUifSx7bmFtZToiY2MtbmFtZSJ9LHtuYW1lOiJjYy1udW1iZXIifSx7bmFtZToiY2MtdHlwZSJ9LHtuYW1lOiJjb3VudHJ5In0se25hbWU6ImNvdW50cnktbmFtZSJ9LHtuYW1lOiJjdXJyZW50LXBhc3N3b3JkIn0se25hbWU6ImVtYWlsIn0se25hbWU6ImZhbWlseS1uYW1lIn0se25hbWU6ImZheCJ9LHtuYW1lOiJnaXZlbi1uYW1lIn0se25hbWU6ImhvbWUifSx7bmFtZToiaG9ub3JpZmljLXByZWZpeCJ9LHtuYW1lOiJob25vcmlmaWMtc3VmZml4In0se25hbWU6ImltcHAifSx7bmFtZToibGFuZ3VhZ2UifSx7bmFtZToibW9iaWxlIn0se25hbWU6Im5hbWUifSx7bmFtZToibmV3LXBhc3N3b3JkIn0se25hbWU6Im5pY2tuYW1lIn0se25hbWU6Im9yZ2FuaXphdGlvbiJ9LHtuYW1lOiJvcmdhbml6YXRpb24tdGl0bGUifSx7bmFtZToicGFnZXIifSx7bmFtZToicGhvdG8ifSx7bmFtZToicG9zdGFsLWNvZGUifSx7bmFtZToic2V4In0se25hbWU6InNoaXBwaW5nIn0se25hbWU6InN0cmVldC1hZGRyZXNzIn0se25hbWU6InRlbC1hcmVhLWNvZGUifSx7bmFtZToidGVsIn0se25hbWU6InRlbC1jb3VudHJ5LWNvZGUifSx7bmFtZToidGVsLWV4dGVuc2lvbiJ9LHtuYW1lOiJ0ZWwtbG9jYWwifSx7bmFtZToidGVsLWxvY2FsLXByZWZpeCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtc3VmZml4In0se25hbWU6InRlbC1uYXRpb25hbCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1hbW91bnQifSx7bmFtZToidHJhbnNhY3Rpb24tY3VycmVuY3kifSx7bmFtZToidXJsIn0se25hbWU6InVzZXJuYW1lIn0se25hbWU6IndvcmsifV19LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImlubGluZSJ9LHtuYW1lOiJsaXN0In0se25hbWU6ImJvdGgifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImN1cnJlbnQiLHZhbHVlczpbe25hbWU6InBhZ2UifSx7bmFtZToic3RlcCJ9LHtuYW1lOiJsb2NhdGlvbiJ9LHtuYW1lOiJkYXRlIn0se25hbWU6InRpbWUifSx7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6ImRyb3BlZmZlY3QiLHZhbHVlczpbe25hbWU6ImNvcHkifSx7bmFtZToibW92ZSJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImV4ZWN1dGUifSx7bmFtZToicG9wdXAifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImludmFsaWQiLHZhbHVlczpbe25hbWU6ImdyYW1tYXIifSx7bmFtZToiZmFsc2UifSx7bmFtZToic3BlbGxpbmcifSx7bmFtZToidHJ1ZSJ9XX0se25hbWU6ImxpdmUiLHZhbHVlczpbe25hbWU6Im9mZiJ9LHtuYW1lOiJwb2xpdGUifSx7bmFtZToiYXNzZXJ0aXZlIn1dfSx7bmFtZToib3JpZW50YXRpb24iLHZhbHVlczpbe25hbWU6InZlcnRpY2FsIn0se25hbWU6Imhvcml6b250YWwifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToicmVsZXZhbnQiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9ucyJ9LHtuYW1lOiJyZW1vdmFscyJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6ImFsbCJ9LHtuYW1lOiJhZGRpdGlvbnMgdGV4dCJ9XX0se25hbWU6InNvcnQiLHZhbHVlczpbe25hbWU6ImFzY2VuZGluZyJ9LHtuYW1lOiJkZXNjZW5kaW5nIn0se25hbWU6Im5vbmUifSx7bmFtZToib3RoZXIifV19LHtuYW1lOiJyb2xlcyIsdmFsdWVzOlt7bmFtZToiYWxlcnQifSx7bmFtZToiYWxlcnRkaWFsb2cifSx7bmFtZToiYnV0dG9uIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImRpYWxvZyJ9LHtuYW1lOiJncmlkY2VsbCJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImxvZyJ9LHtuYW1lOiJtYXJxdWVlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtY2hlY2tib3gifSx7bmFtZToibWVudWl0ZW1yYWRpbyJ9LHtuYW1lOiJvcHRpb24ifSx7bmFtZToicHJvZ3Jlc3NiYXIifSx7bmFtZToicmFkaW8ifSx7bmFtZToic2Nyb2xsYmFyIn0se25hbWU6InNlYXJjaGJveCJ9LHtuYW1lOiJzbGlkZXIifSx7bmFtZToic3BpbmJ1dHRvbiJ9LHtuYW1lOiJzdGF0dXMifSx7bmFtZToic3dpdGNoIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbCJ9LHtuYW1lOiJ0ZXh0Ym94In0se25hbWU6InRpbWVyIn0se25hbWU6InRvb2x0aXAifSx7bmFtZToidHJlZWl0ZW0ifSx7bmFtZToiY29tYm9ib3gifSx7bmFtZToiZ3JpZCJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Im1lbnUifSx7bmFtZToibWVudWJhciJ9LHtuYW1lOiJyYWRpb2dyb3VwIn0se25hbWU6InRhYmxpc3QifSx7bmFtZToidHJlZSJ9LHtuYW1lOiJ0cmVlZ3JpZCJ9LHtuYW1lOiJhcHBsaWNhdGlvbiJ9LHtuYW1lOiJhcnRpY2xlIn0se25hbWU6ImNlbGwifSx7bmFtZToiY29sdW1uaGVhZGVyIn0se25hbWU6ImRlZmluaXRpb24ifSx7bmFtZToiZGlyZWN0b3J5In0se25hbWU6ImRvY3VtZW50In0se25hbWU6ImZlZWQifSx7bmFtZToiZmlndXJlIn0se25hbWU6Imdyb3VwIn0se25hbWU6ImhlYWRpbmcifSx7bmFtZToiaW1nIn0se25hbWU6Imxpc3QifSx7bmFtZToibGlzdGl0ZW0ifSx7bmFtZToibWF0aCJ9LHtuYW1lOiJub25lIn0se25hbWU6Im5vdGUifSx7bmFtZToicHJlc2VudGF0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyb3cifSx7bmFtZToicm93Z3JvdXAifSx7bmFtZToicm93aGVhZGVyIn0se25hbWU6InNlcGFyYXRvciJ9LHtuYW1lOiJ0YWJsZSJ9LHtuYW1lOiJ0ZXJtIn0se25hbWU6InRleHQifSx7bmFtZToidG9vbGJhciJ9LHtuYW1lOiJiYW5uZXIifSx7bmFtZToiY29tcGxlbWVudGFyeSJ9LHtuYW1lOiJjb250ZW50aW5mbyJ9LHtuYW1lOiJmb3JtIn0se25hbWU6Im1haW4ifSx7bmFtZToibmF2aWdhdGlvbiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToic2VhcmNoIn0se25hbWU6ImRvYy1hYnN0cmFjdCJ9LHtuYW1lOiJkb2MtYWNrbm93bGVkZ21lbnRzIn0se25hbWU6ImRvYy1hZnRlcndvcmQifSx7bmFtZToiZG9jLWFwcGVuZGl4In0se25hbWU6ImRvYy1iYWNrbGluayJ9LHtuYW1lOiJkb2MtYmlibGlvZW50cnkifSx7bmFtZToiZG9jLWJpYmxpb2dyYXBoeSJ9LHtuYW1lOiJkb2MtYmlibGlvcmVmIn0se25hbWU6ImRvYy1jaGFwdGVyIn0se25hbWU6ImRvYy1jb2xvcGhvbiJ9LHtuYW1lOiJkb2MtY29uY2x1c2lvbiJ9LHtuYW1lOiJkb2MtY292ZXIifSx7bmFtZToiZG9jLWNyZWRpdCJ9LHtuYW1lOiJkb2MtY3JlZGl0cyJ9LHtuYW1lOiJkb2MtZGVkaWNhdGlvbiJ9LHtuYW1lOiJkb2MtZW5kbm90ZSJ9LHtuYW1lOiJkb2MtZW5kbm90ZXMifSx7bmFtZToiZG9jLWVwaWdyYXBoIn0se25hbWU6ImRvYy1lcGlsb2d1ZSJ9LHtuYW1lOiJkb2MtZXJyYXRhIn0se25hbWU6ImRvYy1leGFtcGxlIn0se25hbWU6ImRvYy1mb290bm90ZSJ9LHtuYW1lOiJkb2MtZm9yZXdvcmQifSx7bmFtZToiZG9jLWdsb3NzYXJ5In0se25hbWU6ImRvYy1nbG9zc3JlZiJ9LHtuYW1lOiJkb2MtaW5kZXgifSx7bmFtZToiZG9jLWludHJvZHVjdGlvbiJ9LHtuYW1lOiJkb2Mtbm90ZXJlZiJ9LHtuYW1lOiJkb2Mtbm90aWNlIn0se25hbWU6ImRvYy1wYWdlYnJlYWsifSx7bmFtZToiZG9jLXBhZ2VsaXN0In0se25hbWU6ImRvYy1wYXJ0In0se25hbWU6ImRvYy1wcmVmYWNlIn0se25hbWU6ImRvYy1wcm9sb2d1ZSJ9LHtuYW1lOiJkb2MtcHVsbHF1b3RlIn0se25hbWU6ImRvYy1xbmEifSx7bmFtZToiZG9jLXN1YnRpdGxlIn0se25hbWU6ImRvYy10aXAifSx7bmFtZToiZG9jLXRvYyJ9XX0se25hbWU6Im1ldGFuYW1lcyIsdmFsdWVzOlt7bmFtZToiYXBwbGljYXRpb24tbmFtZSJ9LHtuYW1lOiJhdXRob3IifSx7bmFtZToiZGVzY3JpcHRpb24ifSx7bmFtZToiZm9ybWF0LWRldGVjdGlvbiJ9LHtuYW1lOiJnZW5lcmF0b3IifSx7bmFtZToia2V5d29yZHMifSx7bmFtZToicHVibGlzaGVyIn0se25hbWU6InJlZmVycmVyIn0se25hbWU6InJvYm90cyJ9LHtuYW1lOiJ0aGVtZS1jb2xvciJ9LHtuYW1lOiJ2aWV3cG9ydCJ9XX0se25hbWU6Imhhc3BvcHVwIix2YWx1ZXM6W3tuYW1lOiJmYWxzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiKGRlZmF1bHQpIEluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcG9wdXAuIn19LHtuYW1lOiJ0cnVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbWVudS4ifX0se25hbWU6Im1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibGlzdGJveCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGxpc3Rib3guIn19LHtuYW1lOiJ0cmVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgdHJlZS4ifX0se25hbWU6ImdyaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBncmlkLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgZGlhbG9nLiJ9fV19XX0semE9KEhhLnByb3RvdHlwZS5zZXREYXRhUHJvdmlkZXJzPWZ1bmN0aW9uKGUsdCl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLGUmJnRoaXMuZGF0YVByb3ZpZGVycy5wdXNoKG5ldyBIaSgiaHRtbDUiLFVhKSksKGU9dGhpcy5kYXRhUHJvdmlkZXJzKS5wdXNoLmFwcGx5KGUsdCl9LEhhLnByb3RvdHlwZS5nZXREYXRhUHJvdmlkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVByb3ZpZGVyc30sSGEpO2Z1bmN0aW9uIEhhKGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLnNldERhdGFQcm92aWRlcnMoITEhPT1lLnVzZURlZmF1bHREYXRhUHJvdmlkZXIsZS5jdXN0b21EYXRhUHJvdmlkZXJzfHxbXSl9dmFyIERhPXt9O3ZhciBXYT1jbGFzc3tfY3R4O19sYW5ndWFnZVNlcnZpY2U7X2xhbmd1YWdlU2V0dGluZ3M7X2xhbmd1YWdlSWQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jdHg9ZSx0aGlzLl9sYW5ndWFnZVNldHRpbmdzPXQubGFuZ3VhZ2VTZXR0aW5ncyx0aGlzLl9sYW5ndWFnZUlkPXQubGFuZ3VhZ2VJZDt2YXIgbixyLGksYT10aGlzLl9sYW5ndWFnZVNldHRpbmdzLmRhdGEsZT1hPy51c2VEZWZhdWx0RGF0YVByb3ZpZGVyO2NvbnN0IG89W107aWYoYT8uZGF0YVByb3ZpZGVycylmb3IoY29uc3QgcyBpbiBhLmRhdGFQcm92aWRlcnMpby5wdXNoKChuPXMscj1hLmRhdGFQcm92aWRlcnNbc10sbmV3IEhpKG4scikpKTt0aGlzLl9sYW5ndWFnZVNlcnZpY2U9KHQ9e3VzZURlZmF1bHREYXRhUHJvdmlkZXI6ZSxjdXN0b21EYXRhUHJvdmlkZXJzOm99LGU9bmV3IHphKHQ9dm9pZCAwPT09dD9EYTp0KSxpPW5ldyBuYSh0LGUpLHQ9bmV3IEppKHQsZSkse3NldERhdGFQcm92aWRlcnM6ZS5zZXREYXRhUHJvdmlkZXJzLmJpbmQoZSksY3JlYXRlU2Nhbm5lcjpfaSxwYXJzZUhUTUxEb2N1bWVudDpmdW5jdGlvbihlKXtyZXR1cm4gU2koZS5nZXRUZXh0KCkpfSxkb0NvbXBsZXRlOnQuZG9Db21wbGV0ZS5iaW5kKHQpLGRvQ29tcGxldGUyOnQuZG9Db21wbGV0ZTIuYmluZCh0KSxzZXRDb21wbGV0aW9uUGFydGljaXBhbnRzOnQuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cy5iaW5kKHQpLGRvSG92ZXI6aS5kb0hvdmVyLmJpbmQoaSksZm9ybWF0OnVhLGZpbmREb2N1bWVudEhpZ2hsaWdodHM6VGEsZmluZERvY3VtZW50TGlua3M6eWEsZmluZERvY3VtZW50U3ltYm9sczp4YSxnZXRGb2xkaW5nUmFuZ2VzOlJhLGdldFNlbGVjdGlvblJhbmdlczpJYSxkb1F1b3RlQ29tcGxldGU6dC5kb1F1b3RlQ29tcGxldGUuYmluZCh0KSxkb1RhZ0NvbXBsZXRlOnQuZG9UYWdDb21wbGV0ZS5iaW5kKHQpLGRvUmVuYW1lOkFhLGZpbmRNYXRjaGluZ1RhZ1Bvc2l0aW9uOkVhLGZpbmRPblR5cGVSZW5hbWVSYW5nZXM6TWEsZmluZExpbmtlZEVkaXRpbmdSYW5nZXM6TWF9KX1hc3luYyBkb0NvbXBsZXRlKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUoZSx0LG4sdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncyYmdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5zdWdnZXN0KSl9YXN5bmMgZm9ybWF0KGUsdCxuKXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm5bXTtuPXsuLi50aGlzLl9sYW5ndWFnZVNldHRpbmdzLmZvcm1hdCwuLi5ufSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5mb3JtYXQoZSx0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZG9Ib3ZlcihlLHQpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybiBudWxsO3ZhciBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKGUsdCxuKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0KXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm5bXTt2YXIgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQoZSksZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBmaW5kRG9jdW1lbnRMaW5rcyhlKXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm5bXTtlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRMaW5rcyhlLG51bGwpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZmluZERvY3VtZW50U3ltYm9scyhlKXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm5bXTt2YXIgdD10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQoZSksZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyhlLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO2U9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldEZvbGRpbmdSYW5nZXMoZSx0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfWFzeW5jIGdldFNlbGVjdGlvblJhbmdlcyhlLHQpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO2U9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldFNlbGVjdGlvblJhbmdlcyhlLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZG9SZW5hbWUoZSx0LG4pe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybiBudWxsO3ZhciByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb1JlbmFtZShlLHQsbixyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfV9nZXRUZXh0RG9jdW1lbnQoZSl7dmFyIHQ7Zm9yKHQgb2YgdGhpcy5fY3R4LmdldE1pcnJvck1vZGVscygpKWlmKHQudXJpLnRvU3RyaW5nKCk9PT1lKXJldHVybiBKci5jcmVhdGUoZSx0aGlzLl9sYW5ndWFnZUlkLHQudmVyc2lvbix0LmdldFZhbHVlKCkpO3JldHVybiBudWxsfX07c2VsZi5vbm1lc3NhZ2U9KCk9PnttcigoZSx0KT0+bmV3IFdhKGUsdCkpfX0oKTsKCg==', null, false);
3
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KCgpPT57aWYoZS5zdGFjayl0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKTt0aHJvdyBlfSwwKX19YWRkTGlzdGVuZXIoZSl7cmV0dXJuIHRoaXMubGlzdGVuZXJzLnB1c2goZSksKCk9Pnt0aGlzLl9yZW1vdmVMaXN0ZW5lcihlKX19ZW1pdCh0KXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGU9PntlKHQpfSl9X3JlbW92ZUxpc3RlbmVyKGUpe3RoaXMubGlzdGVuZXJzLnNwbGljZSh0aGlzLmxpc3RlbmVycy5pbmRleE9mKGUpLDEpfXNldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWV9Z2V0VW5leHBlY3RlZEVycm9ySGFuZGxlcigpe3JldHVybiB0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXJ9b25VbmV4cGVjdGVkRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpLHRoaXMuZW1pdChlKX1vblVuZXhwZWN0ZWRFeHRlcm5hbEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKX19Y29uc3QgbD1uZXcgcztmdW5jdGlvbiBoKGUpeyFmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgcClyZXR1cm4hMDtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yJiZlLm5hbWU9PT1kJiZlLm1lc3NhZ2U9PT1kfShlKSYmbC5vblVuZXhwZWN0ZWRFcnJvcihlKX1mdW5jdGlvbiBjKGUpe3ZhciB0LG47cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj8oe25hbWU6dCxtZXNzYWdlOm59PWUseyRpc0Vycm9yOiEwLG5hbWU6dCxtZXNzYWdlOm4sc3RhY2s6ZS5zdGFja3RyYWNlfHxlLnN0YWNrfSk6ZX1jb25zdCBkPSJDYW5jZWxlZCI7Y2xhc3MgcCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoZCksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19dmFyIG07e3ZhciBmPW09bXx8e307Zi5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtTeW1ib2wuaXRlcmF0b3JdfTtjb25zdCBoYT1PYmplY3QuZnJlZXplKFtdKTtmLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGhhfSxmLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZi5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxoYX0sZi5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFlfHwhMD09PWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lfSxmLmZpcnN0PWZ1bmN0aW9uKGUpe3JldHVybiBlW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9LGYuc29tZT1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4hMDtyZXR1cm4hMX0sZi5maW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxmLmZpbHRlcj1mdW5jdGlvbiooZSx0KXtmb3IoY29uc3QgbiBvZiBlKXQobikmJih5aWVsZCBuKX0sZi5tYXA9ZnVuY3Rpb24qKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKXlpZWxkIHQocixuKyspfSxmLmNvbmNhdD1mdW5jdGlvbiooLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgbiBvZiB0KXlpZWxkIG59LGYuY29uY2F0TmVzdGVkPWZ1bmN0aW9uKihlKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBuIG9mIHQpeWllbGQgbn0sZi5yZWR1Y2U9ZnVuY3Rpb24oZSx0LG4pe2xldCByPW47Zm9yKGNvbnN0IGkgb2YgZSlyPXQocixpKTtyZXR1cm4gcn0sZi5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGYuY29uc3VtZT1mdW5jdGlvbihlLHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBuPVtdO2lmKDA9PT10KXJldHVybltuLGVdO2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7dmFyIGk9ci5uZXh0KCk7aWYoaS5kb25lKXJldHVybltuLGYuZW1wdHkoKV07bi5wdXNoKGkudmFsdWUpfXJldHVybltuLHtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiByfX1dfSxmLmVxdWFscz1mdW5jdGlvbihlLHQsbj0oZSx0KT0+ZT09PXQpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe3ZhciBhPXIubmV4dCgpLG89aS5uZXh0KCk7aWYoYS5kb25lIT09by5kb25lKXJldHVybiExO2lmKGEuZG9uZSlyZXR1cm4hMDtpZighbihhLnZhbHVlLG8udmFsdWUpKXJldHVybiExfX19Y2xhc3MgZyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlLiBFcnJvcnM6IFske2Uuam9pbigiLCAiKX1dYCksdGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gYihlKXtpZihtLmlzKGUpKXtsZXQgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKGUpe3QucHVzaChlKX1pZigxPT09dC5sZW5ndGgpdGhyb3cgdFswXTtpZigxPHQubGVuZ3RoKXRocm93IG5ldyBnKHQpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9aWYoZSlyZXR1cm4gZS5kaXNwb3NlKCksZX1mdW5jdGlvbiBfKGUpe3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcztsZXQgbj0hMSxyO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuP3I6KG49ITAscj1lLmFwcGx5KHQsYXJndW1lbnRzKSl9fSgoKT0+e2UoKX0pfX1jbGFzcyB3e2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7dHJ5e2IodGhpcy5fdG9EaXNwb3NlLnZhbHVlcygpKX1maW5hbGx5e3RoaXMuX3RvRGlzcG9zZS5jbGVhcigpfX1hZGQoZSl7aWYoIWUpcmV0dXJuIGU7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZD93LkRJU0FCTEVfRElTUE9TRURfV0FSTklOR3x8Y29uc29sZS53YXJuKG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBhIGRpc3Bvc2FibGUgdG8gYSBEaXNwb3NhYmxlU3RvcmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIG9mLiBUaGUgYWRkZWQgb2JqZWN0IHdpbGwgYmUgbGVha2VkISIpLnN0YWNrKTp0aGlzLl90b0Rpc3Bvc2UuYWRkKGUpLGV9fXcuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HPSExO2NsYXNzIHZ7Y29uc3RydWN0b3IoKXt0aGlzLl9zdG9yZT1uZXcgdyx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3RlcihlKXtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQoZSl9fXYuTm9uZT1PYmplY3QuZnJlZXplKHtkaXNwb3NlKCl7fX0pO2NsYXNzIHl7Y29uc3RydWN0b3IoKXt0aGlzLmRpc3Bvc2U9KCk9Pnt9LHRoaXMudW5zZXQ9KCk9Pnt9LHRoaXMuaXNzZXQ9KCk9PiExfXNldChlKXtsZXQgdD1lO3JldHVybiB0aGlzLnVuc2V0PSgpPT50PXZvaWQgMCx0aGlzLmlzc2V0PSgpPT52b2lkIDAhPT10LHRoaXMuZGlzcG9zZT0oKT0+e3QmJih0KCksdD12b2lkIDApfSx0aGlzfX1jbGFzcyBUe2NvbnN0cnVjdG9yKGUpe3RoaXMuZWxlbWVudD1lLHRoaXMubmV4dD1ULlVuZGVmaW5lZCx0aGlzLnByZXY9VC5VbmRlZmluZWR9fVQuVW5kZWZpbmVkPW5ldyBUKHZvaWQgMCk7Y2xhc3Mga3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZpcnN0PVQuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9VC5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9aXNFbXB0eSgpe3JldHVybiB0aGlzLl9maXJzdD09PVQuVW5kZWZpbmVkfWNsZWFyKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09VC5VbmRlZmluZWQ7KXt2YXIgdD1lLm5leHQ7ZS5wcmV2PVQuVW5kZWZpbmVkLGUubmV4dD1ULlVuZGVmaW5lZCxlPXR9dGhpcy5fZmlyc3Q9VC5VbmRlZmluZWQsdGhpcy5fbGFzdD1ULlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsdCl7Y29uc3Qgbj1uZXcgVChlKTtpZih0aGlzLl9maXJzdD09PVQuVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PW4sdGhpcy5fbGFzdD1uO2Vsc2UgaWYodCl7Y29uc3QgaT10aGlzLl9sYXN0OygodGhpcy5fbGFzdD1uKS5wcmV2PWkpLm5leHQ9bn1lbHNle2NvbnN0IGE9dGhpcy5fZmlyc3Q7KCh0aGlzLl9maXJzdD1uKS5uZXh0PWEpLnByZXY9bn10aGlzLl9zaXplKz0xO2xldCByPSExO3JldHVybigpPT57cnx8KHI9ITAsdGhpcy5fcmVtb3ZlKG4pKX19c2hpZnQoKXt2YXIgZTtpZih0aGlzLl9maXJzdCE9PVQuVW5kZWZpbmVkKXJldHVybiBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2ZpcnN0KSxlfXBvcCgpe3ZhciBlO2lmKHRoaXMuX2xhc3QhPT1ULlVuZGVmaW5lZClyZXR1cm4gZT10aGlzLl9sYXN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9X3JlbW92ZShlKXtpZihlLnByZXYhPT1ULlVuZGVmaW5lZCYmZS5uZXh0IT09VC5VbmRlZmluZWQpe2NvbnN0IHQ9ZS5wcmV2O3QubmV4dD1lLm5leHQsZS5uZXh0LnByZXY9dH1lbHNlIGUucHJldj09PVQuVW5kZWZpbmVkJiZlLm5leHQ9PT1ULlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9VC5VbmRlZmluZWQsdGhpcy5fbGFzdD1ULlVuZGVmaW5lZCk6ZS5uZXh0PT09VC5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1ULlVuZGVmaW5lZCk6ZS5wcmV2PT09VC5VbmRlZmluZWQmJih0aGlzLl9maXJzdD10aGlzLl9maXJzdC5uZXh0LHRoaXMuX2ZpcnN0LnByZXY9VC5VbmRlZmluZWQpOy0tdGhpcy5fc2l6ZX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1ULlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX12YXIgUz0iZW4iO2xldCBDPSExLHg9ITEsTD0hMSxFPSExLEE9dm9pZCAwLEk9UztsZXQgTj12b2lkIDA7Y29uc3QgVT0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IHo9dm9pZCAwO3ZvaWQgMCE9PVUudnNjb2RlJiZ2b2lkIDAhPT1VLnZzY29kZS5wcm9jZXNzP3o9VS52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJih6PXByb2Nlc3MpO3ZhciBlPSJzdHJpbmciPT10eXBlb2YobnVsbD09PShlPW51bGw9PT16fHx2b2lkIDA9PT16P3ZvaWQgMDp6LnZlcnNpb25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09PXp8fHZvaWQgMD09PXo/dm9pZCAwOnoudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fGUpaWYoIm9iamVjdCI9PXR5cGVvZiB6KXtDPSJ3aW4zMiI9PT16LnBsYXRmb3JtLHg9ImRhcndpbiI9PT16LnBsYXRmb3JtLChMPSJsaW51eCI9PT16LnBsYXRmb3JtKSYmei5lbnYuU05BUCYmei5lbnYuU05BUF9SRVZJU0lPTix6LmVudi5DSXx8ei5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLEE9UyxJPVM7ZT16LmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXt2YXIgSD1KU09OLnBhcnNlKGUpLHQ9SC5hdmFpbGFibGVMYW5ndWFnZXNbIioiXTtBPUgubG9jYWxlLEk9dHx8UyxILl90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIE49bmF2aWdhdG9yLnVzZXJBZ2VudCxDPTA8PU4uaW5kZXhPZigiV2luZG93cyIpLHg9MDw9Ti5pbmRleE9mKCJNYWNpbnRvc2giKSwoMDw9Ti5pbmRleE9mKCJNYWNpbnRvc2giKXx8MDw9Ti5pbmRleE9mKCJpUGFkIil8fDA8PU4uaW5kZXhPZigiaVBob25lIikpJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxMPTA8PU4uaW5kZXhPZigiTGludXgiKSxFPSEwLEE9bmF2aWdhdG9yLmxhbmd1YWdlLEk9QTtjb25zdCBEPUMsVz14LFA9KEUmJlUuaW1wb3J0U2NyaXB0cyxOKTsoKCk9PntpZigiZnVuY3Rpb24iIT10eXBlb2YgVS5wb3N0TWVzc2FnZXx8VS5pbXBvcnRTY3JpcHRzKXJldHVybjt7bGV0IGk9W10sZT0oVS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixuPT57aWYobi5kYXRhJiZuLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCByPWlbZV07aWYoci5pZD09PW4uZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gaS5zcGxpY2UoZSwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSwwKX19KSgpO3ZhciBPLGU9ISEoUCYmMDw9UC5pbmRleE9mKCJDaHJvbWUiKSk7UCYmUC5pbmRleE9mKCJGaXJlZm94IiksIWUmJlAmJlAuaW5kZXhPZigiU2FmYXJpIiksUCYmUC5pbmRleE9mKCJFZGcvIiksUCYmUC5pbmRleE9mKCJBbmRyb2lkIik7Y29uc3QgcT1VLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgVS5wZXJmb3JtYW5jZS5ub3c7Y2xhc3MgRntjb25zdHJ1Y3RvcihlKXt0aGlzLl9oaWdoUmVzb2x1dGlvbj1xJiZlLHRoaXMuX3N0YXJ0VGltZT10aGlzLl9ub3coKSx0aGlzLl9zdG9wVGltZT0tMX1zdGF0aWMgY3JlYXRlKGU9ITApe3JldHVybiBuZXcgRihlKX1zdG9wKCl7dGhpcy5fc3RvcFRpbWU9dGhpcy5fbm93KCl9ZWxhcHNlZCgpe3JldHVybi0xIT09dGhpcy5fc3RvcFRpbWU/dGhpcy5fc3RvcFRpbWUtdGhpcy5fc3RhcnRUaW1lOnRoaXMuX25vdygpLXRoaXMuX3N0YXJ0VGltZX1fbm93KCl7cmV0dXJuKHRoaXMuX2hpZ2hSZXNvbHV0aW9uP1UucGVyZm9ybWFuY2U6RGF0ZSkubm93KCl9fXt2YXIgVj1hPWF8fHt9O2Z1bmN0aW9uIEIoYSl7cmV0dXJuKHQsbj1udWxsLGUpPT57bGV0IHI9ITEsaTtyZXR1cm4gaT1hKGU9PntpZighcilyZXR1cm4gaT9pLmRpc3Bvc2UoKTpyPSEwLHQuY2FsbChuLGUpfSxudWxsLGUpLHImJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIEsocixpLGUpe3JldHVybiBKKCh0LG49bnVsbCxlKT0+cihlPT50LmNhbGwobixpKGUpKSxudWxsLGUpLGUpfWZ1bmN0aW9uIGoocixpLGUpe3JldHVybiBKKCh0LG49bnVsbCxlKT0+cihlPT57aShlKSx0LmNhbGwobixlKX0sbnVsbCxlKSxlKX1mdW5jdGlvbiBHKHIsaSxlKXtyZXR1cm4gSigodCxuPW51bGwsZSk9PnIoZT0+aShlKSYmdC5jYWxsKG4sZSksbnVsbCxlKSxlKX1mdW5jdGlvbiAkKGUsdCxuLHIpe2xldCBpPW47cmV0dXJuIEsoZSxlPT5pPXQoaSxlKSxyKX1mdW5jdGlvbiBKKGUsdCl7bGV0IG47dmFyIHI9e29uRmlyc3RMaXN0ZW5lckFkZCgpe249ZShpLmZpcmUsaSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7bi5kaXNwb3NlKCl9fTtjb25zdCBpPW5ldyB0ZShyKTtyZXR1cm4gdCYmdC5hZGQoaSksaS5ldmVudH1mdW5jdGlvbiBYKGUsdCxjPTEwMCxuPSExLHIsaSl7bGV0IGEsbz12b2lkIDAscz12b2lkIDAsbD0wO3I9e2xlYWtXYXJuaW5nVGhyZXNob2xkOnIsb25GaXJzdExpc3RlbmVyQWRkKCl7YT1lKGU9PntsKyssbz10KG8sZSksbiYmIXMmJihoLmZpcmUobyksbz12b2lkIDApLGNsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1vO289dm9pZCAwLHM9dm9pZCAwLCghbnx8MTxsKSYmaC5maXJlKGUpLGw9MH0sYyl9KX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXthLmRpc3Bvc2UoKX19O2NvbnN0IGg9bmV3IHRlKHIpO3JldHVybiBpJiZpLmFkZChoKSxoLmV2ZW50fWZ1bmN0aW9uIFkoZSxuPShlLHQpPT5lPT09dCx0KXtsZXQgcj0hMCxpO3JldHVybiBHKGUsZT0+e3ZhciB0PXJ8fCFuKGUsaSk7cmV0dXJuIHI9ITEsaT1lLHR9LHQpfVYuTm9uZT0oKT0+di5Ob25lLFYub25jZT1CLFYubWFwPUssVi5mb3JFYWNoPWosVi5maWx0ZXI9RyxWLnNpZ25hbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sVi5hbnk9ZnVuY3Rpb24oLi4uaSl7cmV0dXJuKHQsbj1udWxsLHIpPT57dmFyWy4uLmVdPVsuLi5pLm1hcChlPT5lKGU9PnQuY2FsbChuLGUpLG51bGwscikpXTtyZXR1cm4gXygoKT0+YihlKSl9fSxWLnJlZHVjZT0kLFYuZGVib3VuY2U9WCxWLmxhdGNoPVksVi5zcGxpdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuW1YuZmlsdGVyKGUsdCxuKSxWLmZpbHRlcihlLGU9PiF0KGUpLG4pXX0sVi5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLG49W10pe2xldCByPW4uc2xpY2UoKSxpPWUoZT0+e3I/ci5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IGE9KCk9PntyJiZyLmZvckVhY2goZT0+by5maXJlKGUpKSxyPW51bGx9LG89bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpPWl8fGUoZT0+by5maXJlKGUpKX0sb25GaXJzdExpc3RlbmVyRGlkQWRkKCl7ciYmKHQ/c2V0VGltZW91dChhKTphKCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe2kmJmkuZGlzcG9zZSgpLGk9bnVsbH19KTtyZXR1cm4gby5ldmVudH07Y2xhc3MgY2F7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lfW1hcChlKXtyZXR1cm4gbmV3IGNhKEsodGhpcy5ldmVudCxlKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IGNhKGoodGhpcy5ldmVudCxlKSl9ZmlsdGVyKGUpe3JldHVybiBuZXcgY2EoRyh0aGlzLmV2ZW50LGUpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IGNhKCQodGhpcy5ldmVudCxlLHQpKX1sYXRjaCgpe3JldHVybiBuZXcgY2EoWSh0aGlzLmV2ZW50KSl9ZGVib3VuY2UoZSx0PTEwMCxuPSExLHIpe3JldHVybiBuZXcgY2EoWCh0aGlzLmV2ZW50LGUsdCxuLHIpKX1vbihlLHQsbil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LG4pfW9uY2UoZSx0LG4pe3JldHVybiBCKHRoaXMuZXZlbnQpKGUsdCxuKX19Vi5jaGFpbj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGNhKGUpfSxWLmZyb21Ob2RlRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPWU9PmUpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sVi5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPWU9PmUpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LFYudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT5CKHQpKGUpKX0sVi5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoZT0+dChlKSl9LFYucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiByKGUpe251bGwhPT1uJiZ2b2lkIDAhPT1uJiZuLmRpc3Bvc2UoKSxuPW5ldyB3LHQoZSxuKX1yKHZvaWQgMCk7Y29uc3QgaT1lKGU9PnIoZSkpO3JldHVybiBfKCgpPT57aS5kaXNwb3NlKCksbnVsbCE9PW4mJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpfSl9fWNsYXNzIFF7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitRLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IEYoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1RLl9pZFBvb2w9MDtjbGFzcyBae2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWU9ZX1zdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBaKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9cHJpbnQoKXtjb25zb2xlLndhcm4odGhpcy52YWx1ZS5zcGxpdCgiXG4iKS5zbGljZSgyKS5qb2luKCJcbiIpKX19Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgeX1pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kaXNwb3NlZD0hMSx0aGlzLl9vcHRpb25zPWUsdGhpcy5fbGVha2FnZU1vbj12b2lkIDAsdGhpcy5fcGVyZk1vbj1udWxsIT09KGU9dGhpcy5fb3B0aW9ucykmJnZvaWQgMCE9PWUmJmUuX3Byb2ZOYW1lP25ldyBRKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDB9ZGlzcG9zZSgpe3ZhciBlLHQ7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGwhPT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKSYmdm9pZCAwIT09ZSYmZS5jbGVhcigpLG51bGwhPT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25MYXN0TGlzdGVuZXJSZW1vdmUpJiZ2b2lkIDAhPT10JiZ0LmNhbGwoZSksbnVsbCE9PSh0PXRoaXMuX2xlYWthZ2VNb24pJiZ2b2lkIDAhPT10JiZ0LmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9KGUsdCxuKT0+e3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgayk7dmFyIHIsaSxhPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7YSYmbnVsbCE9PShpPXRoaXMuX29wdGlvbnMpJiZ2b2lkIDAhPT1pJiZpLm9uRmlyc3RMaXN0ZW5lckFkZCYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQodGhpcyk7bGV0IG8sczt0aGlzLl9sZWFrYWdlTW9uJiYzMDw9dGhpcy5fbGlzdGVuZXJzLnNpemUmJihzPVouY3JlYXRlKCksbz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKHMsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGw9bmV3IGVlKGUsdCxzKSxoPXRoaXMuX2xpc3RlbmVycy5wdXNoKGwpO2EmJm51bGwhPT0ocj10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09ciYmci5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLG51bGwhPT0oaT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09aSYmaS5vbkxpc3RlbmVyRGlkQWRkJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2E9bC5zdWJzY3JpcHRpb24uc2V0KCgpPT57byYmbygpLHRoaXMuX2Rpc3Bvc2VkfHwoaCgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUmJih0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpKSl9KTtyZXR1cm4gbiBpbnN0YW5jZW9mIHc/bi5hZGQoYSk6QXJyYXkuaXNBcnJheShuKSYmbi5wdXNoKGEpLGF9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0O2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IGspO2Zvcih2YXIgbiBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKFtuLGVdKTtmb3IobnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0YXJ0KHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZSk7MDx0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU7KXtjb25zdFtyLGVdPXRoaXMuX2RlbGl2ZXJ5UXVldWUuc2hpZnQoKTt0cnl7ci5pbnZva2UoZSl9Y2F0Y2goZSl7aChlKX19bnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0b3AoKX19fWZ1bmN0aW9uIG5lKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZnVuY3Rpb24oZSl7bGV0IHQ9W10sbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Zm9yKDtPYmplY3QucHJvdG90eXBlIT09bjspdD10LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIHR9KGUpKSJmdW5jdGlvbiI9PXR5cGVvZiBlW25dJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gcmUoZSxuKXtsZXQgdD17fTtmb3IoY29uc3QgciBvZiBlKXRbcl09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShyKTtyZXR1cm4gdH1jbGFzcyBpZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWdldFZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19ZnVuY3Rpb24gYWUobixyLGk9MCxhPW4ubGVuZ3RoLG89MCxzPXIubGVuZ3RoKXtmb3IoO2k8YSYmbzxzO2krKyxvKyspe2xldCBlPW4uY2hhckNvZGVBdChpKSx0PXIuY2hhckNvZGVBdChvKTtpZihlIT09dCl7aWYoMTI4PD1lfHwxMjg8PXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuPTAscj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtuPHImJmk8YTtuKyssaSsrKXt2YXIgbz1lLmNoYXJDb2RlQXQobikscz10LmNoYXJDb2RlQXQoaSk7aWYobzxzKXJldHVybi0xO2lmKHM8bylyZXR1cm4gMX12YXIgbD1yLW4saD1hLWk7cmV0dXJuIGw8aD8tMTpoPGw/MTowfShuLnRvTG93ZXJDYXNlKCksci50b0xvd2VyQ2FzZSgpLGksYSxvLHMpO29lKGUpJiYoZS09MzIpLG9lKHQpJiYodC09MzIpO3ZhciBsPWUtdDtpZigwIT1sKXJldHVybiBsfX12YXIgZT1hLWksdD1zLW87cmV0dXJuIGU8dD8tMTp0PGU/MTowfWZ1bmN0aW9uIG9lKGUpe3JldHVybiA5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIHNlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1jb25zdCBoZT0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIGNle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1zdGF0aWMgZ2V0SW5zdGFuY2UoZSl7cmV0dXJuIGNlLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBjZS5fbG9jYWxlcy5nZXRWYWx1ZSgpfWlzQW1iaWd1b3VzKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmhhcyhlKX1nZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5nZXQoZSl9Z2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKXtyZXR1cm4gbmV3IFNldCh0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmtleXMoKSl9fShPPWNlKS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBpZSgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1XSwiX2RlZmF1bHQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiY3MiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImRlIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJlcyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJmciI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJpdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiamEiOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI5Miw0NCw2NTMwNyw1OV0sImtvIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwbCI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwdC1CUiI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJxcHMtcGxvYyI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJydSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMzA1LDEwNSw5MjEsNzMsMTAwOSwxMTIsMjE1LDEyMCw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInRyIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInpoLWhhbnMiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODgsNDAsNjUyODksNDFdLCJ6aC1oYW50IjpbODIxMSw0NSw2NTM3NCwxMjYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MzA3LDU5XX0nKSksY2UuY2FjaGU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcHV0ZUZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe3ZhciB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT10JiYodGhpcy5sYXN0QXJnS2V5PXQsdGhpcy5sYXN0Q2FjaGU9dGhpcy5jb21wdXRlRm4oZSkpLHRoaXMubGFzdENhY2hlfX0oZT0+e2Z1bmN0aW9uIHQodCl7Y29uc3Qgbj1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MiluLnNldCh0W2VdLHRbZSsxXSk7cmV0dXJuIG59Y29uc3Qgbj1PLmFtYmlndW91c0NoYXJhY3RlckRhdGEuZ2V0VmFsdWUoKTtsZXQgcj1lLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikmJmUgaW4gbiksaT12b2lkIDA7Zm9yKGNvbnN0IG8gb2Ygcj0wPT09ci5sZW5ndGg/WyJfZGVmYXVsdCJdOnIpe2NvbnN0IGE9dChuW29dKTtpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcih2YXJbcixpXW9mIGUpdC5oYXMocikmJm4uc2V0KHIsaSk7cmV0dXJuIG59KGksYSl9Y29uc3QgYT1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IE1hcChlKTtmb3IodmFyW3IsaV1vZiB0KW4uc2V0KHIsaSk7cmV0dXJuIG59KHQobi5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IGNlKGEpfSksY2UuX2xvY2FsZXM9bmV3IGllKCgpPT5PYmplY3Qua2V5cyhjZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCkpLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikpKTtjbGFzcyBkZXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KGRlLmdldFJhd0RhdGEoKSkpLHRoaXMuX2RhdGF9c3RhdGljIGlzSW52aXNpYmxlQ2hhcmFjdGVyKGUpe3JldHVybiBkZS5nZXREYXRhKCkuaGFzKGUpfXN0YXRpYyBnZXQgY29kZVBvaW50cygpe3JldHVybiBkZS5nZXREYXRhKCl9fWRlLl9kYXRhPXZvaWQgMDtjbGFzcyB1ZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLm1ldGhvZD1uLHRoaXMuYXJncz1yLHRoaXMudHlwZT0wfX1jbGFzcyBwZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5zZXE9dCx0aGlzLnJlcz1uLHRoaXMuZXJyPXIsdGhpcy50eXBlPTF9fWNsYXNzIG1le2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnROYW1lPW4sdGhpcy5hcmc9cix0aGlzLnR5cGU9Mn19Y2xhc3MgZmV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnQ9bix0aGlzLnR5cGU9M319Y2xhc3MgZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLnR5cGU9NH19Y2xhc3MgYmV7Y29uc3RydWN0b3IoZSl7dGhpcy5fd29ya2VySWQ9LTEsdGhpcy5faGFuZGxlcj1lLHRoaXMuX2xhc3RTZW50UmVxPTAsdGhpcy5fcGVuZGluZ1JlcGxpZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnM9bmV3IE1hcCx0aGlzLl9wZW5kaW5nRXZlbnRzPW5ldyBNYXB9c2V0V29ya2VySWQoZSl7dGhpcy5fd29ya2VySWQ9ZX1zZW5kTWVzc2FnZShuLHIpe2NvbnN0IGk9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpO3JldHVybiBuZXcgUHJvbWlzZSgoZSx0KT0+e3RoaXMuX3BlbmRpbmdSZXBsaWVzW2ldPXtyZXNvbHZlOmUscmVqZWN0OnR9LHRoaXMuX3NlbmQobmV3IHVlKHRoaXMuX3dvcmtlcklkLGksbixyKSl9KX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PntuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KG4sciksdGhpcy5fc2VuZChuZXcgbWUodGhpcy5fd29ya2VySWQsbixlLHQpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKG4pLHRoaXMuX3NlbmQobmV3IGdlKHRoaXMuX3dvcmtlcklkLG4pKSxuPW51bGx9fSk7cmV0dXJuIHIuZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2Uobil7aWYodGhpcy5fcGVuZGluZ1JlcGxpZXNbbi5zZXFdKXtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tuLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW24uc2VxXSxuLmVycil7bGV0IGU9bi5lcnI7cmV0dXJuIG4uZXJyLiRpc0Vycm9yJiYoKGU9bmV3IEVycm9yKS5uYW1lPW4uZXJyLm5hbWUsZS5tZXNzYWdlPW4uZXJyLm1lc3NhZ2UsZS5zdGFjaz1uLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChlKX10LnJlc29sdmUobi5yZXMpfWVsc2UgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7bGV0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKTtuLnRoZW4oZT0+e3RoaXMuX3NlbmQobmV3IHBlKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0sZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1jKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgcGUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsYyhlKSkpfSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO2U9dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudChlLmV2ZW50TmFtZSxlLmFyZykoZT0+e3RoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLHQsZSkpfSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxlKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKHQpe2xldCBuPVtdO2lmKDA9PT10LnR5cGUpZm9yKGxldCBlPTA7ZTx0LmFyZ3MubGVuZ3RoO2UrKyl0LmFyZ3NbZV1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZuLnB1c2godC5hcmdzW2VdKTtlbHNlIDE9PT10LnR5cGUmJnQucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZSh0LG4pfX1mdW5jdGlvbiBfZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZzZShlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIHdlKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZzZShlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIHZlKGUsbixyKXtsZXQgdD17fTtmb3IoY29uc3QgaSBvZiBlKXdlKGkpP3RbaV09KHQ9PmZ1bmN0aW9uKGUpe3JldHVybiByKHQsZSl9KShpKTpfZShpKT90W2ldPXIoaSx2b2lkIDApOnRbaV09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShpKTtyZXR1cm4gdH1jbGFzcyB5ZXtjb25zdHJ1Y3RvcihuLGUpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT1lLHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IGJlKHtzZW5kTWVzc2FnZTooZSx0KT0+e24oZSx0KX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYod2UoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH1pZihfZShlKSl7dD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgZXZlbnQgbmFtZSAiK2UpfWluaXRpYWxpemUoZSx0LHIsbil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT12ZShuLChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpLChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShuZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx0LnRydXN0ZWRUeXBlc1BvbGljeSxkZWxldGUgdC50cnVzdGVkVHlwZXNQb2xpY3ksdC5jYXRjaEVycm9yPSEwLFUucmVxdWlyZS5jb25maWcodCkpLG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgZT1VLnJlcXVpcmU7ZShbcl0sZT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPWUuY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP3QobmUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTpuKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSxuKX0pKX19Y2xhc3MgVGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5vcmlnaW5hbFN0YXJ0PWUsdGhpcy5vcmlnaW5hbExlbmd0aD10LHRoaXMubW9kaWZpZWRTdGFydD1uLHRoaXMubW9kaWZpZWRMZW5ndGg9cn1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24ga2UoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9Y2xhc3MgU2V7Y29uc3RydWN0b3IoZSl7dGhpcy5zb3VyY2U9ZX1nZXRFbGVtZW50cygpe2NvbnN0IG49dGhpcy5zb3VyY2Uscj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXJbZV09bi5jaGFyQ29kZUF0KGUpO3JldHVybiByfX1jbGFzcyBDZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyB4ZXtzdGF0aWMgQ29weSh0LG4scixpLGEpe2ZvcihsZXQgZT0wO2U8YTtlKyspcltpK2VdPXRbbitlXX1zdGF0aWMgQ29weTIodCxuLHIsaSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKXJbaStlXT10W24rZV19fWNsYXNzIExle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeygwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgVGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4oMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIEVle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDt2YXJbbixlLHJdPUVlLl9nZXRFbGVtZW50cyhlKSxbdCxpLGFdPUVlLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPXImJmEsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1uLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9ZSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPXQsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1pLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiAwPGUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXt2YXIgbj1lLmdldEVsZW1lbnRzKCk7aWYoRWUuX2lzU3RyaW5nQXJyYXkobikpe2NvbnN0IHI9bmV3IEludDMyQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylyW2VdPWZ1bmN0aW9uKG4scil7cj1rZSgxNDk0MTcscik7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXI9a2Uobi5jaGFyQ29kZUF0KGUpLHIpO3JldHVybiByfShuW2VdLDApO3JldHVybltuLHIsITBdfXJldHVybiBuIGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sbiwhMV06W1tdLG5ldyBJbnQzMkFycmF5KG4pLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7cmV0dXJuISF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSYmRWUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PUVlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxuLHIsaSl7dmFyIGE9WyExXTtsZXQgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLHIsYSk7cmV0dXJuIGkmJihvPXRoaXMuUHJldHRpZnlDaGFuZ2VzKG8pKSx7cXVpdEVhcmx5OmFbMF0sY2hhbmdlczpvfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG4scixpLGEpe2ZvcihhWzBdPSExO3Q8PW4mJnI8PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0KysscisrO2Zvcig7dDw9biYmcjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG4saSk7KW4tLSxpLS07aWYobjx0fHxpPHIpe2xldCBlO3JldHVybiBlPXI8PWk/KENlLkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxbbmV3IFRlKHQsMCxyLGktcisxKV0pOnQ8PW4/KENlLkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbbmV3IFRlKHQsbi10KzEsciwwKV0pOihDZS5Bc3NlcnQodD09PW4rMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksQ2UuQXNzZXJ0KHI9PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLFtdKX12YXIgbz1bMF0scz1bMF0sbD10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludCh0LG4scixpLG8scyxhKSxvPW9bMF0scz1zWzBdO2lmKG51bGwhPT1sKXJldHVybiBsO2lmKGFbMF0pcmV0dXJuW25ldyBUZSh0LG4tdCsxLHIsaS1yKzEpXTt7bD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbyxyLHMsYSk7bGV0IGU9W107cmV0dXJuIGU9YVswXT9bbmV3IFRlKG8rMSxuLShvKzEpKzEscysxLGktKHMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobysxLG4scysxLGksYSksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobCxlKX19V0FMS1RSQUNFKGMsbixkLHUscCxtLGYsZyxlLGIsdCxfLHcscix2LHksVCxrKXtsZXQgUz1udWxsLGk9bmV3IExlLEM9bix4PWQsYT13WzBdLXlbMF0tdSxvPS0xMDczNzQxODI0LHM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve3ZhciBsPWErYzthPWw9PT1DfHxsPHgmJmVbbC0xXTxlW2wrMV0/KHI9KHQ9ZVtsKzFdKS1hLXUsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxyKSxsKzEtYyk6KHI9KHQ9ZVtsLTFdKzEpLWEtdSx0PG8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQtMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0LHIrMSksbC0xLWMpLDA8PXMmJihjPShlPXRoaXMubV9mb3J3YXJkSGlzdG9yeVtzXSlbMF0sQz0xLHg9ZS5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7aWYobj1pLmdldFJldmVyc2VDaGFuZ2VzKCksa1swXSl7bGV0IGU9d1swXSsxLHQ9eVswXSsxO2lmKG51bGwhPT1uJiYwPG4ubGVuZ3RoKXtjb25zdCBMPW5bbi5sZW5ndGgtMV07ZT1NYXRoLm1heChlLEwuZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LEwuZ2V0TW9kaWZpZWRFbmQoKSl9Uz1bbmV3IFRlKGUsXy1lKzEsdCx2LXQrMSldfWVsc2V7aT1uZXcgTGUsQz1tLHg9ZixhPXdbMF0teVswXS1nLG89MTA3Mzc0MTgyNCxzPVQ/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3t2YXIgaD1hK3A7YT1oPT09Q3x8aDx4JiZiW2gtMV0+PWJbaCsxXT8ocj0odD1iW2grMV0tMSktYS1nLHQ+byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCsxLGkuQWRkT3JpZ2luYWxFbGVtZW50KHQrMSxyKzEpLGgrMS1wKToocj0odD1iW2gtMV0pLWEtZyx0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQsaS5BZGRNb2RpZmllZEVsZW1lbnQodCsxLHIrMSksaC0xLXApLDA8PXMmJihwPShiPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtzXSlbMF0sQz0xLHg9Yi5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7Uz1pLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobixTKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoaSxhLG0sZixnLGIsXyl7bGV0IG89MCxzPTAsbD0wLHc9MCxoPTAsdj0wO2ktLSxtLS0sYltnWzBdPTBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTt2YXIgZT1hLWkrKGYtbSkseT0xK2U7Y29uc3QgYz1uZXcgSW50MzJBcnJheSh5KSxkPW5ldyBJbnQzMkFycmF5KHkpO3ZhciB1PWYtbSxwPWEtaSxUPWktbSxrPWEtZixTPShwLXUpJTI9PTA7Y1t1XT1pLGRbcF09YSxfWzBdPSExO2ZvcihsZXQgcj0xO3I8PWUvMisxO3IrKyl7bGV0IHQ9MCxuPTA7bD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUtcixyLHUseSksdz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUrcixyLHUseSk7Zm9yKGxldCBlPWw7ZTw9dztlKz0yKXtvPWU9PT1sfHxlPHcmJmNbZS0xXTxjW2UrMV0/Y1tlKzFdOmNbZS0xXSsxLHM9by0oZS11KS1UO2Zvcih2YXIgQz1vO288YSYmczxmJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobysxLHMrMSk7KW8rKyxzKys7aWYoKGNbZV09bykrcz50K24mJih0PW8sbj1zKSwhUyYmTWF0aC5hYnMoZS1wKTw9ci0xJiZvPj1kW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEM8PWRbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9dmFyIHg9KHQtaSsobi1tKS1yKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKHQseCkpcmV0dXJuIF9bMF09ITAsZ1swXT10LGJbMF09biwwPHgmJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOihpKyssbSsrLFtuZXcgVGUoaSxhLWkrMSxtLGYtbSsxKV0pO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwLXIscixwLHkpLHY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwK3IscixwLHkpO2ZvcihsZXQgZT1oO2U8PXY7ZSs9Mil7bz1lPT09aHx8ZTx2JiZkW2UtMV0+PWRbZSsxXT9kW2UrMV0tMTpkW2UtMV0scz1vLShlLXApLWs7Zm9yKHZhciBMPW87bz5pJiZzPm0mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChvLHMpOylvLS0scy0tO2lmKGRbZV09byxTJiZNYXRoLmFicyhlLXUpPD1yJiZvPD1jW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEw+PWNbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9aWYocjw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkody1sKzIpO2VbMF09dS1sKzEseGUuQ29weTIoYyxsLGUsMSx3LWwrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksKGU9bmV3IEludDMyQXJyYXkodi1oKzIpKVswXT1wLWgrMSx4ZS5Db3B5MihkLGgsZSwxLHYtaCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKHUsbCx3LFQscCxoLHYsayxjLGQsbyxhLGcscyxmLGIsUyxfKX1QcmV0dGlmeUNoYW5nZXMoYSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IHQ9YVtlXTtmb3IodmFyIGQ9ZTxhLmxlbmd0aC0xP2FbZSsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHU9ZTxhLmxlbmd0aC0xP2FbZSsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLHA9MDx0Lm9yaWdpbmFsTGVuZ3RoLG09MDx0Lm1vZGlmaWVkTGVuZ3RoO3Qub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPGQmJnQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPHUmJighcHx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoKSkmJighbXx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwodC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSk7KXt2YXIgZj10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSYmIWYpYnJlYWs7dC5vcmlnaW5hbFN0YXJ0KyssdC5tb2RpZmllZFN0YXJ0Kyt9dmFyIGc9W251bGxdO2U8YS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2VdLGFbZSsxXSxnKSYmKGFbZV09Z1swXSxhLnNwbGljZShlKzEsMSksZS0tKX1mb3IobGV0IGU9YS5sZW5ndGgtMTswPD1lO2UtLSl7Y29uc3QgaD1hW2VdO2xldCB0PTAsbj0wOzA8ZSYmKGw9YVtlLTFdLHQ9bC5vcmlnaW5hbFN0YXJ0K2wub3JpZ2luYWxMZW5ndGgsbj1sLm1vZGlmaWVkU3RhcnQrbC5tb2RpZmllZExlbmd0aCk7dmFyIGI9MDxoLm9yaWdpbmFsTGVuZ3RoLF89MDxoLm1vZGlmaWVkTGVuZ3RoO2xldCByPTAsaT10aGlzLl9ib3VuZGFyeVNjb3JlKGgub3JpZ2luYWxTdGFydCxoLm9yaWdpbmFsTGVuZ3RoLGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXt2YXIgbz1oLm9yaWdpbmFsU3RhcnQtZSxzPWgubW9kaWZpZWRTdGFydC1lO2lmKG88dHx8czxuKWJyZWFrO2lmKGImJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChvLG8raC5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYoXyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHMscytoLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztvPShvPT09dCYmcz09PW4/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKG8saC5vcmlnaW5hbExlbmd0aCxzLGgubW9kaWZpZWRMZW5ndGgpO28+aSYmKGk9byxyPWUpfWgub3JpZ2luYWxTdGFydC09cixoLm1vZGlmaWVkU3RhcnQtPXI7dmFyIGw9W251bGxdOzA8ZSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2UtMV0sYVtlXSxsKSYmKGFbZS0xXT1sWzBdLGEuc3BsaWNlKGUsMSksZSsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgZT0xLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgaT1hW2UtMV0sYz1hW2VdO3ZhciB3PWMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCx2PWkub3JpZ2luYWxTdGFydCx5PWMub3JpZ2luYWxTdGFydCtjLm9yaWdpbmFsTGVuZ3RoLG49eS12LHI9aS5tb2RpZmllZFN0YXJ0LFQ9Yy5tb2RpZmllZFN0YXJ0K2MubW9kaWZpZWRMZW5ndGgsaz1ULXI7dzw1JiZuPDIwJiZrPDIwJiYoKHY9dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZSh2LG4scixrLHcpKSYmKFtuLHJdPXYsbj09PWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoJiZyPT09aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGh8fChpLm9yaWdpbmFsTGVuZ3RoPW4taS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9ci1pLm1vZGlmaWVkU3RhcnQsYy5vcmlnaW5hbFN0YXJ0PW4rdyxjLm1vZGlmaWVkU3RhcnQ9cit3LGMub3JpZ2luYWxMZW5ndGg9eS1jLm9yaWdpbmFsU3RhcnQsYy5tb2RpZmllZExlbmd0aD1ULWMubW9kaWZpZWRTdGFydCkpKX1yZXR1cm4gYX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO3ZhciBhPWUrdC1pKzEsYz1uK3ItaSsxO2xldCBvPTAscz0wLGw9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8YztlKyspe3ZhciBoPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTswPGgmJmg+byYmKG89aCxzPXQsbD1lKX1yZXR1cm4gMDxvP1tzLGxdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsbixyKXtsZXQgaT0wO2ZvcihsZXQgZT0wO2U8cjtlKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtlLG4rZSkpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K2VdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZigwPHQpe2U9ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSkpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LG4scil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShuLHIpPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7dmFyIG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIDA8dC5sZW5ndGg/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4geGUuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSx4ZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9cmV0dXJuIG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKSx4ZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLHhlLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59Q2hhbmdlc092ZXJsYXAobixyLGkpe2lmKENlLkFzc2VydChuLm9yaWdpbmFsU3RhcnQ8PXIub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxDZS5Bc3NlcnQobi5tb2RpZmllZFN0YXJ0PD1yLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg+PXIub3JpZ2luYWxTdGFydHx8bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCl7dmFyIGE9bi5vcmlnaW5hbFN0YXJ0O2xldCBlPW4ub3JpZ2luYWxMZW5ndGg7dmFyIG89bi5tb2RpZmllZFN0YXJ0O2xldCB0PW4ubW9kaWZpZWRMZW5ndGg7cmV0dXJuIG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoPj1yLm9yaWdpbmFsU3RhcnQmJihlPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCksbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCYmKHQ9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KSxpWzBdPW5ldyBUZShhLGUsbyx0KSwhMH1yZXR1cm4gaVswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKDA8PWUmJmU8cilyZXR1cm4gZTt0PXQlMj09MDtyZXR1cm4gZTwwP3Q9PShuJTI9PTApPzA6MTp0PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgQWU7aWYodm9pZCAwIT09VS52c2NvZGUmJnZvaWQgMCE9PVUudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IGRhPVUudnNjb2RlLnByb2Nlc3M7QWU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBkYS5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gZGEuYXJjaH0sZ2V0IGVudigpe3JldHVybiBkYS5lbnZ9LGN3ZCgpe3JldHVybiBkYS5jd2QoKX19fWVsc2UgQWU9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2QoKXtyZXR1cm4gcHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX19OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gRD8id2luMzIiOlc/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkKCl7cmV0dXJuIi8ifX07Y29uc3QgTWU9QWUuY3dkLFJlPUFlLmVudjt2YXIgSWUsTmUsdD1BZS5wbGF0Zm9ybTtjbGFzcyBVZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjt2YXIgaT0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IixlPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlIGArdDtzdXBlcihlKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIG4pLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiB6ZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVWUodCwic3RyaW5nIixlKX1mdW5jdGlvbiB1KGUpe3JldHVybiA0Nz09PWV8fDkyPT09ZX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gNDc9PT1lfWZ1bmN0aW9uIERlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB8fDk3PD1lJiZlPD0xMjJ9ZnVuY3Rpb24gV2UodCxuLHIsaSl7bGV0IGE9IiIsbz0wLHM9LTEsbD0wLGg9MDtmb3IobGV0IGU9MDtlPD10Lmxlbmd0aDsrK2Upe2lmKGU8dC5sZW5ndGgpaD10LmNoYXJDb2RlQXQoZSk7ZWxzZXtpZihpKGgpKWJyZWFrO2g9NDd9aWYoaShoKSl7aWYocyE9PWUtMSYmMSE9PWwpaWYoMj09PWwpe2lmKGEubGVuZ3RoPDJ8fDIhPT1vfHw0NiE9PWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKXx8NDYhPT1hLmNoYXJDb2RlQXQoYS5sZW5ndGgtMikpe2lmKDI8YS5sZW5ndGgpe3ZhciBjPWEubGFzdEluZGV4T2Yocik7bz0tMT09PWM/KGE9IiIsMCk6KGE9YS5zbGljZSgwLGMpKS5sZW5ndGgtMS1hLmxhc3RJbmRleE9mKHIpLHM9ZSxsPTA7Y29udGludWV9aWYoMCE9PWEubGVuZ3RoKXthPSIiLG89MCxzPWUsbD0wO2NvbnRpbnVlfX1uJiYoYSs9MDxhLmxlbmd0aD9yKyIuLiI6Ii4uIixvPTIpfWVsc2UgMDxhLmxlbmd0aD9hKz0iIityK3Quc2xpY2UocysxLGUpOmE9dC5zbGljZShzKzEsZSksbz1lLXMtMTtzPWUsbD0wfWVsc2UgNDY9PT1oJiYtMSE9PWw/KytsOmw9LTF9cmV0dXJuIGF9ZnVuY3Rpb24gUGUoZSx0KXtpZihudWxsPT09dHx8Im9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBVZSgicGF0aE9iamVjdCIsIk9iamVjdCIsdCk7dmFyIG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8IiIrKHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpO3JldHVybiBuP249PT10LnJvb3Q/IiIrbityOiIiK24rZStyOnJ9Y29uc3QgT2U9e3Jlc29sdmUoLi4uYSl7bGV0IG89IiIscz0iIixsPSExO2ZvcihsZXQgdD1hLmxlbmd0aC0xOy0xPD10O3QtLSl7bGV0IG47aWYoMDw9dCl7aWYoemUobj1hW3RdLCJwYXRoIiksMD09PW4ubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PW8ubGVuZ3RoP249TWUoKToodm9pZCAwPT09KG49UmVbIj0iK29dfHxNZSgpKXx8bi5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT1vLnRvTG93ZXJDYXNlKCkmJjkyPT09bi5jaGFyQ29kZUF0KDIpKSYmKG49bysiXFwiKTt2YXIgaD1uLmxlbmd0aDtsZXQgcj0wLGk9IiIsZT0hMTt2YXIgYz1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PWgpdShjKSYmKHI9MSxlPSEwKTtlbHNlIGlmKHUoYykpaWYoZT0hMCx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxoJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7dmFyIGQ9bi5zbGljZSh0LGUpO2Zvcih0PWU7ZTxoJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPGgmJmUhPT10KXtmb3IodD1lO2U8aCYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1oJiZlPT09dHx8KGk9YFxcXFwke2R9XFxgK24uc2xpY2UodCxlKSxyPWUpfX19ZWxzZSByPTE7ZWxzZSBEZShjKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPW4uc2xpY2UoMCwyKSwocj0yKTxoJiZ1KG4uY2hhckNvZGVBdCgyKSkmJihlPSEwLHI9MykpO2lmKDA8aS5sZW5ndGgpaWYoMDxvLmxlbmd0aCl7aWYoaS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2Ugbz1pO2lmKGwpe2lmKDA8by5sZW5ndGgpYnJlYWt9ZWxzZSBpZihzPW4uc2xpY2UocikrIlxcIitzLChsPWUpJiYwPG8ubGVuZ3RoKWJyZWFrfXJldHVybiBzPVdlKHMsIWwsIlxcIix1KSxsP28rIlxcIitzOiIiK28rc3x8Ii4ifSxub3JtYWxpemUobil7emUobiwicGF0aCIpO3ZhciByPW4ubGVuZ3RoO2lmKDA9PT1yKXJldHVybiIuIjtsZXQgaT0wLGEsZT0hMTt2YXIgdD1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PXIpcmV0dXJuIEhlKHQpPyJcXCI6bjtpZih1KHQpKWlmKGU9ITAsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe3ZhciBvPW4uc2xpY2UodCxlKTtmb3IodD1lO2U8ciYmdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJiF1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPT09cilyZXR1cm5gXFxcXCR7b31cXCR7bi5zbGljZSh0KX1cXGA7ZSE9PXQmJihhPWBcXFxcJHtvfVxcYCtuLnNsaWNlKHQsZSksaT1lKX19fWVsc2UgaT0xO2Vsc2UgRGUodCkmJjU4PT09bi5jaGFyQ29kZUF0KDEpJiYoYT1uLnNsaWNlKDAsMiksKGk9Mik8ciYmdShuLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxpPTMpKTtsZXQgcz1pPHI/V2Uobi5zbGljZShpKSwhZSwiXFwiLHUpOiIiO3JldHVybiAwPChzPTAhPT1zLmxlbmd0aHx8ZT9zOiIuIikubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChyLTEpKSYmKHMrPSJcXCIpLHZvaWQgMD09PWE/ZT8iXFwiK3M6czplP2ErIlxcIitzOiIiK2Erc30saXNBYnNvbHV0ZShlKXt6ZShlLCJwYXRoIik7dmFyIHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7dmFyIG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiB1KG4pfHwyPHQmJkRlKG4pJiY1OD09PWUuY2hhckNvZGVBdCgxKSYmdShlLmNoYXJDb2RlQXQoMikpfSxqb2luKC4uLnQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7bGV0IG4scjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIGk9dFtlXTt6ZShpLCJwYXRoIiksMDxpLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yPWk6bis9IlxcIitpKX1pZih2b2lkIDA9PT1uKXJldHVybiIuIjtsZXQgZT0hMCxhPTA7dmFyIG87aWYoInN0cmluZyI9PXR5cGVvZiByJiZ1KHIuY2hhckNvZGVBdCgwKSkmJigrK2EsMTwobz1yLmxlbmd0aCkmJnUoci5jaGFyQ29kZUF0KDEpKSYmKCsrYSwyPG8mJih1KHIuY2hhckNvZGVBdCgyKSk/KythOmU9ITEpKSksZSl7Zm9yKDthPG4ubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChhKSk7KWErKzsyPD1hJiYobj0iXFwiK24uc2xpY2UoYSkpfXJldHVybiBPZS5ub3JtYWxpemUobil9LHJlbGF0aXZlKGUsdCl7aWYoemUoZSwiZnJvbSIpLHplKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3QgYz1PZS5yZXNvbHZlKGUpLG49T2UucmVzb2x2ZSh0KTtpZihjPT09bilyZXR1cm4iIjtpZigoZT1jLnRvTG93ZXJDYXNlKCkpPT09KHQ9bi50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aCYmOTI9PT1lLmNoYXJDb2RlQXQocik7KXIrKztsZXQgaT1lLmxlbmd0aDtmb3IoO2ktMT5yJiY5Mj09PWUuY2hhckNvZGVBdChpLTEpOylpLS07dmFyIGQ9aS1yO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoJiY5Mj09PXQuY2hhckNvZGVBdChhKTspYSsrO2xldCBvPXQubGVuZ3RoO2Zvcig7by0xPmEmJjkyPT09dC5jaGFyQ29kZUF0KG8tMSk7KW8tLTt2YXIgdT1vLWEscz1kPHU/ZDp1O2xldCBsPS0xLGg9MDtmb3IoO2g8cztoKyspe3ZhciBwPWUuY2hhckNvZGVBdChyK2gpO2lmKHAhPT10LmNoYXJDb2RlQXQoYStoKSlicmVhazs5Mj09PXAmJihsPWgpfWlmKGghPT1zKXtpZigtMT09PWwpcmV0dXJuIG59ZWxzZXtpZihzPHUpe2lmKDkyPT09dC5jaGFyQ29kZUF0KGEraCkpcmV0dXJuIG4uc2xpY2UoYStoKzEpO2lmKDI9PT1oKXJldHVybiBuLnNsaWNlKGEraCl9czxkJiYoOTI9PT1lLmNoYXJDb2RlQXQocitoKT9sPWg6Mj09PWgmJihsPTMpKSwtMT09PWwmJihsPTApfWxldCBtPSIiO2ZvcihoPXIrbCsxO2g8PWk7KytoKWghPT1pJiY5MiE9PWUuY2hhckNvZGVBdChoKXx8KG0rPTA9PT1tLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIGErPWwsMDxtLmxlbmd0aD8iIittK24uc2xpY2UoYSxvKTooOTI9PT1uLmNoYXJDb2RlQXQoYSkmJisrYSxuLnNsaWNlKGEsbykpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIiI7Y29uc3QgdD1PZS5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKDkyPT09dC5jaGFyQ29kZUF0KDApKXtpZig5Mj09PXQuY2hhckNvZGVBdCgxKSl7dmFyIG49dC5jaGFyQ29kZUF0KDIpO2lmKDYzIT09biYmNDYhPT1uKXJldHVybiJcXFxcP1xcVU5DXFwiK3Quc2xpY2UoMil9fWVsc2UgaWYoRGUodC5jaGFyQ29kZUF0KDApKSYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJjkyPT09dC5jaGFyQ29kZUF0KDIpKXJldHVybiJcXFxcP1xcIit0O3JldHVybiBlfSxkaXJuYW1lKG4pe3plKG4sInBhdGgiKTt2YXIgcj1uLmxlbmd0aDtpZigwPT09cilyZXR1cm4iLiI7bGV0IGk9LTEsYT0wO3ZhciBlPW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdShlKT9uOiIuIjtpZih1KGUpKXtpZihpPWE9MSx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJnUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PXIpcmV0dXJuIG47ZSE9PXQmJihpPWE9ZSsxKX19fX1lbHNlIERlKGUpJiY1OD09PW4uY2hhckNvZGVBdCgxKSYmKGk9MjxyJiZ1KG4uY2hhckNvZGVBdCgyKSk/MzoyLGE9aSk7bGV0IHQ9LTEsbz0hMDtmb3IobGV0IGU9ci0xO2U+PWE7LS1lKWlmKHUobi5jaGFyQ29kZUF0KGUpKSl7aWYoIW8pe3Q9ZTticmVha319ZWxzZSBvPSExO2lmKC0xPT09dCl7aWYoLTE9PT1pKXJldHVybiIuIjt0PWl9cmV0dXJuIG4uc2xpY2UoMCx0KX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZ6ZShyLCJleHQiKSx6ZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZigyPD1uLmxlbmd0aCYmRGUobi5jaGFyQ29kZUF0KDApKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPTIpLHZvaWQgMCE9PXImJjA8ci5sZW5ndGgmJnIubGVuZ3RoPD1uLmxlbmd0aCl7aWYocj09PW4pcmV0dXJuIiI7bGV0IGU9ci5sZW5ndGgtMSx0PS0xO2ZvcihzPW4ubGVuZ3RoLTE7cz49aTstLXMpe3ZhciBsPW4uY2hhckNvZGVBdChzKTtpZih1KGwpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xO3M+PWk7LS1zKWlmKHUobi5jaGFyQ29kZUF0KHMpKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPXMrMSk7cmV0dXJuLTE9PT1hPyIiOm4uc2xpY2UoaSxhKX0sZXh0bmFtZSh0KXt6ZSh0LCJwYXRoIik7bGV0IG49MCxyPS0xLGk9MCxhPS0xLG89ITAscz0wOzI8PXQubGVuZ3RoJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmRGUodC5jaGFyQ29kZUF0KDApKSYmKG49aT0yKTtmb3IobGV0IGU9dC5sZW5ndGgtMTtlPj1uOy0tZSl7dmFyIGw9dC5jaGFyQ29kZUF0KGUpO2lmKHUobCkpe2lmKG8pY29udGludWU7aT1lKzE7YnJlYWt9LTE9PT1hJiYobz0hMSxhPWUrMSksNDY9PT1sPy0xPT09cj9yPWU6MSE9PXMmJihzPTEpOi0xIT09ciYmKHM9LTEpfXJldHVybi0xPT09cnx8LTE9PT1hfHwwPT09c3x8MT09PXMmJnI9PT1hLTEmJnI9PT1pKzE/IiI6dC5zbGljZShyLGEpfSxmb3JtYXQ6UGUuYmluZChudWxsLCJcXCIpLHBhcnNlKG4pe3plKG4sInBhdGgiKTtjb25zdCBlPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5sZW5ndGg7bGV0IGk9MCx0PW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdSh0KT9lLnJvb3Q9ZS5kaXI9bjplLmJhc2U9ZS5uYW1lPW4sZTtpZih1KHQpKXtpZihpPTEsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPHImJmUhPT10KXtmb3IodD1lO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2U9PT1yP2k9ZTplIT09dCYmKGk9ZSsxKX19fX1lbHNlIGlmKERlKHQpJiY1OD09PW4uY2hhckNvZGVBdCgxKSl7aWYocjw9MilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpZihpPTIsdShuLmNoYXJDb2RlQXQoMikpKXtpZigzPT09cilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpPTN9fTA8aSYmKGUucm9vdD1uLnNsaWNlKDAsaSkpO2xldCBhPS0xLG89aSxzPS0xLGM9ITAsbD1uLmxlbmd0aC0xLGg9MDtmb3IoO2w+PWk7LS1sKXtpZih1KHQ9bi5jaGFyQ29kZUF0KGwpKSl7aWYoYyljb250aW51ZTtvPWwrMTticmVha30tMT09PXMmJihjPSExLHM9bCsxKSw0Nj09PXQ/LTE9PT1hP2E9bDoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSl9cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/ZS5iYXNlPWUubmFtZT1uLnNsaWNlKG8scyk6KGUubmFtZT1uLnNsaWNlKG8sYSksZS5iYXNlPW4uc2xpY2UobyxzKSxlLmV4dD1uLnNsaWNlKGEscykpKSwwPG8mJm8hPT1pP2UuZGlyPW4uc2xpY2UoMCxvLTEpOmUuZGlyPWUucm9vdCxlfSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0scWU9e3Jlc29sdmUoLi4udCl7bGV0IG49IiIscj0hMTtmb3IobGV0IGU9dC5sZW5ndGgtMTstMTw9ZSYmIXI7ZS0tKXtjb25zdCBpPTA8PWU/dFtlXTpNZSgpO3plKGksInBhdGgiKSwwIT09aS5sZW5ndGgmJihuPWkrIi8iK24scj00Nz09PWkuY2hhckNvZGVBdCgwKSl9cmV0dXJuIG49V2UobiwhciwiLyIsSGUpLHI/Ii8iK246MDxuLmxlbmd0aD9uOiIuIn0sbm9ybWFsaXplKGUpe2lmKHplKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO3ZhciB0PTQ3PT09ZS5jaGFyQ29kZUF0KDApLG49NDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7cmV0dXJuIDA9PT0oZT1XZShlLCF0LCIvIixIZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0PyIvIitlOmUpfSxpc0Fic29sdXRlKGUpe3JldHVybiB6ZShlLCJwYXRoIiksMDxlLmxlbmd0aCYmNDc9PT1lLmNoYXJDb2RlQXQoMCl9LGpvaW4oLi4udCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiIuIjtsZXQgbjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIHI9dFtlXTt6ZShyLCJwYXRoIiksMDxyLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yOm4rPSIvIityKX1yZXR1cm4gdm9pZCAwPT09bj8iLiI6cWUubm9ybWFsaXplKG4pfSxyZWxhdGl2ZShlLHQpe2lmKHplKGUsImZyb20iKSx6ZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPXFlLnJlc29sdmUoZSkpPT09KHQ9cWUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7dmFyIG49ZS5sZW5ndGgscj1uLTEsaT10Lmxlbmd0aC0xLGE9cjxpP3I6aTtsZXQgbz0tMSxzPTA7Zm9yKDtzPGE7cysrKXt2YXIgbD1lLmNoYXJDb2RlQXQoMStzKTtpZihsIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7NDc9PT1sJiYobz1zKX1pZihzPT09YSlpZihhPGkpe2lmKDQ3PT09dC5jaGFyQ29kZUF0KDErcykpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSBhPHImJig0Nz09PWUuY2hhckNvZGVBdCgxK3MpP289czowPT09cyYmKG89MCkpO2xldCBoPSIiO2ZvcihzPTErbysxO3M8PW47KytzKXMhPT1uJiY0NyE9PWUuY2hhckNvZGVBdChzKXx8KGgrPTA9PT1oLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm4iIitoK3Quc2xpY2UoMStvKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtyZXR1cm4gZX0sZGlybmFtZSh0KXtpZih6ZSh0LCJwYXRoIiksMD09PXQubGVuZ3RoKXJldHVybiIuIjt2YXIgZT00Nz09PXQuY2hhckNvZGVBdCgwKTtsZXQgbj0tMSxyPSEwO2ZvcihsZXQgZT10Lmxlbmd0aC0xOzE8PWU7LS1lKWlmKDQ3PT09dC5jaGFyQ29kZUF0KGUpKXtpZighcil7bj1lO2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP2U/Ii8iOiIuIjplJiYxPT09bj8iLy8iOnQuc2xpY2UoMCxuKX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZ6ZShyLCJleHQiKSx6ZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZih2b2lkIDAhPT1yJiYwPHIubGVuZ3RoJiZyLmxlbmd0aDw9bi5sZW5ndGgpe2lmKHI9PT1uKXJldHVybiIiO2xldCBlPXIubGVuZ3RoLTEsdD0tMTtmb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKXt2YXIgbD1uLmNoYXJDb2RlQXQocyk7aWYoNDc9PT1sKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKWlmKDQ3PT09bi5jaGFyQ29kZUF0KHMpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cysxKTtyZXR1cm4tMT09PWE/IiI6bi5zbGljZShpLGEpfSxleHRuYW1lKHQpe3plKHQsInBhdGgiKTtsZXQgbj0tMSxyPTAsaT0tMSxhPSEwLG89MDtmb3IobGV0IGU9dC5sZW5ndGgtMTswPD1lOy0tZSl7dmFyIHM9dC5jaGFyQ29kZUF0KGUpO2lmKDQ3PT09cyl7aWYoYSljb250aW51ZTtyPWUrMTticmVha30tMT09PWkmJihhPSExLGk9ZSsxKSw0Nj09PXM/LTE9PT1uP249ZToxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSl9cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjp0LnNsaWNlKG4saSl9LGZvcm1hdDpQZS5iaW5kKG51bGwsIi8iKSxwYXJzZShlKXt6ZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTQ3PT09ZS5jaGFyQ29kZUF0KDApO2xldCByLGk9KHI9bj8odC5yb290PSIvIiwxKTowLC0xKSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtsPj1yOy0tbCl7dmFyIGM9ZS5jaGFyQ29kZUF0KGwpO2lmKDQ3PT09Yyl7aWYocyljb250aW51ZTthPWwrMTticmVha30tMT09PW8mJihzPSExLG89bCsxKSw0Nj09PWM/LTE9PT1pP2k9bDoxIT09aCYmKGg9MSk6LTEhPT1pJiYoaD0tMSl9aWYoLTEhPT1vKXtjb25zdCByPTA9PT1hJiZuPzE6YTstMT09PWl8fDA9PT1ofHwxPT09aCYmaT09PW8tMSYmaT09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UocixvKToodC5uYW1lPWUuc2xpY2UocixpKSx0LmJhc2U9ZS5zbGljZShyLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSl9cmV0dXJuIDA8YT90LmRpcj1lLnNsaWNlKDAsYS0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxGZT0ocWUud2luMzI9T2Uud2luMzI9T2UscWUucG9zaXg9T2UucG9zaXg9cWUsKCJ3aW4zMiI9PT10P09lOnFlKS5ub3JtYWxpemUsKCJ3aW4zMiI9PT10P09lOnFlKS5yZXNvbHZlLCgid2luMzIiPT09dD9PZTpxZSkucmVsYXRpdmUsKCJ3aW4zMiI9PT10P09lOnFlKS5kaXJuYW1lLCgid2luMzIiPT09dD9PZTpxZSkuYmFzZW5hbWUsKCJ3aW4zMiI9PT10P09lOnFlKS5leHRuYW1lLCgid2luMzIiPT09dD9PZTpxZSkuc2VwLC9eXHdbXHdcZCsuLV0qJC8pLFZlPS9eXC8vLEJlPS9eXC9cLy87ZnVuY3Rpb24gS2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFGZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighVmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoQmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IGplPSIvIixHZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyAkZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksYT0hMSl7dmFyIG87Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8IiIsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fCIiLHRoaXMucGF0aD1lLnBhdGh8fCIiLHRoaXMucXVlcnk9ZS5xdWVyeXx8IiIsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHwiIik6KHRoaXMuc2NoZW1lPShvPWEsKGU9ZSl8fG8/ZToiZmlsZSIpLHRoaXMuYXV0aG9yaXR5PXR8fCIiLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09amUmJih0PWplK3QpOnQ9amV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fCIiKSx0aGlzLnF1ZXJ5PXJ8fCIiLHRoaXMuZnJhZ21lbnQ9aXx8IiIsS2UodGhpcyxhKSl9c3RhdGljIGlzVXJpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgJGV8fCEhZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgZS5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiBlLnBhdGgmJiJzdHJpbmciPT10eXBlb2YgZS5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiBlLnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiBlLmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9TdHJpbmcpfWdldCBmc1BhdGgoKXtyZXR1cm4gZXQodGhpcywhMSl9d2l0aChlKXtpZighZSlyZXR1cm4gdGhpcztsZXR7c2NoZW1lOnQsYXV0aG9yaXR5Om4scGF0aDpyLHF1ZXJ5OmksZnJhZ21lbnQ6YX09ZTtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD0iIiksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj0iIiksdm9pZCAwPT09cj9yPXRoaXMucGF0aDpudWxsPT09ciYmKHI9IiIpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT0iIiksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPSIiKSx0PT09dGhpcy5zY2hlbWUmJm49PT10aGlzLmF1dGhvcml0eSYmcj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJmE9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IFhlKHQsbixyLGksYSl9c3RhdGljIHBhcnNlKGUsdD0hMSl7ZT1HZS5leGVjKGUpO3JldHVybiBlP25ldyBYZShlWzJdfHwiIixydChlWzRdfHwiIikscnQoZVs1XXx8IiIpLHJ0KGVbN118fCIiKSxydChlWzldfHwiIiksdCk6bmV3IFhlKCIiLCIiLCIiLCIiLCIiKX1zdGF0aWMgZmlsZShlKXtsZXQgdD0iIjt2YXIgbjtyZXR1cm4oZT1EP2UucmVwbGFjZSgvXFwvZyxqZSk6ZSlbMF09PT1qZSYmZVsxXT09PWplJiYoZT0tMT09PShuPWUuaW5kZXhPZihqZSwyKSk/KHQ9ZS5zdWJzdHJpbmcoMiksamUpOih0PWUuc3Vic3RyaW5nKDIsbiksZS5zdWJzdHJpbmcobil8fGplKSksbmV3IFhlKCJmaWxlIix0LGUsIiIsIiIpfXN0YXRpYyBmcm9tKGUpe2U9bmV3IFhlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBLZShlLCEwKSxlfXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IG47cmV0dXJuIG49RCYmImZpbGUiPT09ZS5zY2hlbWU/JGUuZmlsZShPZS5qb2luKGV0KGUsITApLC4uLnQpKS5wYXRoOnFlLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpufSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIHR0KHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgJGUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IFhlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09SmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgSmU9RD8xOnZvaWQgMDtjbGFzcyBYZSBleHRlbmRzICRle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1ldCh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP3R0KHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9dHQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1KZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IFllPXtbNThdOiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBRZSh0LG4pe2xldCByPXZvaWQgMCxpPS0xO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10LmNoYXJDb2RlQXQoZSk7OTc8PWEmJmE8PTEyMnx8NjU8PWEmJmE8PTkwfHw0ODw9YSYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fG4mJjQ3PT09YT8oLTEhPT1pJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLHZvaWQgMCE9PXImJihyKz10LmNoYXJBdChlKSkpOih2b2lkIDA9PT1yJiYocj10LnN1YnN0cigwLGUpKSx2b2lkIDAhPT0oYT1ZZVthXSk/KC0xIT09aSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLGUpKSxpPS0xKSxyKz1hKTotMT09PWkmJihpPWUpKX1yZXR1cm4tMSE9PWkmJihyKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1yP3I6dH1mdW5jdGlvbiBaZSh0KXtsZXQgbj12b2lkIDA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciByPXQuY2hhckNvZGVBdChlKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09biYmKG49dC5zdWJzdHIoMCxlKSksbis9WWVbcl0pOnZvaWQgMCE9PW4mJihuKz10W2VdKX1yZXR1cm4gdm9pZCAwIT09bj9uOnR9ZnVuY3Rpb24gZXQoZSx0KXtsZXQgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmMTxlLnBhdGgubGVuZ3RoJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iK2UuYXV0aG9yaXR5K2UucGF0aDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLG49RD9uLnJlcGxhY2UoL1wvL2csIlxcIik6bn1mdW5jdGlvbiB0dChlLHQpe2NvbnN0IG49dD9aZTpRZTtsZXQgcj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYocj1yK2krIjoiKSwhYSYmImZpbGUiIT09aXx8KHI9KHIrPWplKStqZSksYSl7bGV0IGU9YS5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCBoPWEuc3Vic3RyKDAsZSk7YT1hLnN1YnN0cihlKzEpLC0xPT09KGU9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6cj0ocj1yK24oaC5zdWJzdHIoMCxlKSwhMSkrIjoiKStuKGguc3Vic3RyKGUrMSksITEpLHIrPSJAIn1hPWEudG9Mb3dlckNhc2UoKSwtMT09PShlPWEuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOnI9KHIrPW4oYS5zdWJzdHIoMCxlKSwhMSkpK2Euc3Vic3RyKGUpfXJldHVybiBvJiYoMzw9by5sZW5ndGgmJjQ3PT09by5jaGFyQ29kZUF0KDApJiY1OD09PW8uY2hhckNvZGVBdCgyKT82NTw9KGU9by5jaGFyQ29kZUF0KDEpKSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfTpgK28uc3Vic3RyKDMpKToyPD1vLmxlbmd0aCYmNTg9PT1vLmNoYXJDb2RlQXQoMSkmJig2NTw9KGU9by5jaGFyQ29kZUF0KDApKSYmZTw9OTAmJihvPVN0cmluZy5mcm9tQ2hhckNvZGUoZSszMikrIjoiK28uc3Vic3RyKDIpKSkscis9bihvLCEwKSkscyYmKHI9KHIrPSI/IikrbihzLCExKSkscj1sPyhyKz0iIyIpKyh0P2w6UWUobCwhMSkpOnJ9Y29uc3QgbnQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gcnQoZSl7cmV0dXJuIGUubWF0Y2gobnQpP2UucmVwbGFjZShudCxlPT5mdW5jdGlvbiB0KG4pe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG4pfWNhdGNoKGUpe3JldHVybiAzPG4ubGVuZ3RoP24uc3Vic3RyKDAsMykrdChuLnN1YnN0cigzKSk6bn19KGUpKTplfWNsYXNzIGl0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKGU9dGhpcy5saW5lTnVtYmVyLHQ9dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZ0PT09dGhpcy5jb2x1bW4/dGhpczpuZXcgaXQoZSx0KX1kZWx0YShlPTAsdD0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK3QpfWVxdWFscyhlKXtyZXR1cm4gaXQuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZShlKXtyZXR1cm4gaXQuaXNCZWZvcmUodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBpdC5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPD10LmNvbHVtbn1zdGF0aWMgY29tcGFyZShlLHQpe3ZhciBuPTB8ZS5saW5lTnVtYmVyLHI9MHx0LmxpbmVOdW1iZXI7cmV0dXJuIG4hPXI/bi1yOigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9Y2xvbmUoKXtyZXR1cm4gbmV3IGl0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBpdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIGF0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe248ZXx8ZT09PW4mJnI8dD8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gYXQuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiBhdC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBhdC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gYXQuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiBhdC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IG4scixpLGE7cmV0dXJuIHI9dC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KG49dC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcixNYXRoLm1pbih0LnN0YXJ0Q29sdW1uLGUuc3RhcnRDb2x1bW4pKToobj1lLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKSxhPXQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLE1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKSxuZXcgYXQobixyLGksYSl9aW50ZXJzZWN0UmFuZ2VzKGUpe3JldHVybiBhdC5pbnRlcnNlY3RSYW5nZXModGhpcyxlKX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKGUsdCl7bGV0IG49ZS5zdGFydExpbmVOdW1iZXIscj1lLnN0YXJ0Q29sdW1uLGk9ZS5lbmRMaW5lTnVtYmVyLGE9ZS5lbmRDb2x1bW47dmFyIGU9dC5zdGFydExpbmVOdW1iZXIsbz10LnN0YXJ0Q29sdW1uLHM9dC5lbmRMaW5lTnVtYmVyLHQ9dC5lbmRDb2x1bW47cmV0dXJuIG48ZT8obj1lLHI9byk6bj09PWUmJihyPU1hdGgubWF4KHIsbykpLGk+cz8oaT1zLGE9dCk6aT09PXMmJihhPU1hdGgubWluKGEsdCkpLG4+aXx8bj09PWkmJnI+YT9udWxsOm5ldyBhdChuLHIsaSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gYXQuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBhdC5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBpdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gYXQuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IGl0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgYXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IGF0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiBhdC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IGF0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgYXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGxpZnQoZSl7cmV0dXJuIGU/bmV3IGF0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7dmFyIG4scixpLGEsbyxzO3JldHVybiBlJiZ0PyhuPTB8ZS5zdGFydExpbmVOdW1iZXIpPT0ocj0wfHQuc3RhcnRMaW5lTnVtYmVyKT8oaT0wfGUuc3RhcnRDb2x1bW4pPT0oYT0wfHQuc3RhcnRDb2x1bW4pPyhvPTB8ZS5lbmRMaW5lTnVtYmVyKSE9KHM9MHx0LmVuZExpbmVOdW1iZXIpP28tczooMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pOmktYTpuLXI6KGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX1mdW5jdGlvbiBvdChlLHQsbixyKXtjb25zdCBpPW5ldyBFZShlLHQsbik7cmV0dXJuIGkuQ29tcHV0ZURpZmYocil9Y2xhc3Mgc3R7Y29uc3RydWN0b3Iobil7Y29uc3Qgcj1bXSxpPVtdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylyW2VdPXV0KG5bZV0sMSksaVtlXT1wdChuW2VdLDEpO3RoaXMubGluZXM9bix0aGlzLl9zdGFydENvbHVtbnM9cix0aGlzLl9lbmRDb2x1bW5zPWl9Z2V0RWxlbWVudHMoKXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5saW5lcy5sZW5ndGg7ZTx0O2UrKyluW2VdPXRoaXMubGluZXNbZV0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tlXS0xLHRoaXMuX2VuZENvbHVtbnNbZV0tMSk7cmV0dXJuIG59Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUsbixyKXtjb25zdCBpPVtdLGE9W10sbz1bXTtsZXQgcz0wO2ZvcihsZXQgdD1uO3Q8PXI7dCsrKXtjb25zdCBjPXRoaXMubGluZXNbdF07dmFyIGw9ZT90aGlzLl9zdGFydENvbHVtbnNbdF06MSxoPWU/dGhpcy5fZW5kQ29sdW1uc1t0XTpjLmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8aDtlKyspaVtzXT1jLmNoYXJDb2RlQXQoZS0xKSxhW3NdPXQrMSxvW3NdPWUscysrfXJldHVybiBuZXcgbHQoaSxhLG8pfX1jbGFzcyBsdHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPW59Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIGh0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1yLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LG4pe2xldCByLGksYSxvLHMsbCxoLGM7cmV0dXJuIG89MD09PWUub3JpZ2luYWxMZW5ndGg/KHI9MCxpPTAsYT0wKToocj10LmdldFN0YXJ0TGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQpLGk9dC5nZXRTdGFydENvbHVtbihlLm9yaWdpbmFsU3RhcnQpLGE9dC5nZXRFbmRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLHQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpKSxjPTA9PT1lLm1vZGlmaWVkTGVuZ3RoPyhzPTAsbD0wLGg9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPW4uZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxoPW4uZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxuLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSksbmV3IGh0KHIsaSxhLG8scyxsLGgsYyl9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQscixpLGEsYyxkKXtsZXQgbixvLHMsbCxoPXZvaWQgMDtpZihvPTA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhuPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSwwKToobj1yLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLHIuZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksbD0wPT09dC5tb2RpZmllZExlbmd0aD8ocz1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLTEsMCk6KHM9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxpLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLGMmJjA8dC5vcmlnaW5hbExlbmd0aCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmMDx0Lm1vZGlmaWVkTGVuZ3RoJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZhKCkpe3ZhciB1PXIuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLHA9aS5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm1vZGlmaWVkU3RhcnQsdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSk7bGV0IG49b3QodSxwLGEsITApLmNoYW5nZXM7ZCYmKG49ZnVuY3Rpb24obil7aWYobi5sZW5ndGg8PTEpcmV0dXJuIG47Y29uc3Qgcj1bblswXV07bGV0IGk9clswXTtmb3IobGV0IGU9MSx0PW4ubGVuZ3RoO2U8dDtlKyspe3ZhciBhPW5bZV0sbz1hLm9yaWdpbmFsU3RhcnQtKGkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoKSxzPWEubW9kaWZpZWRTdGFydC0oaS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKG8scyk8Mz8oaS5vcmlnaW5hbExlbmd0aD1hLm9yaWdpbmFsU3RhcnQrYS5vcmlnaW5hbExlbmd0aC1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1hLm1vZGlmaWVkU3RhcnQrYS5tb2RpZmllZExlbmd0aC1pLm1vZGlmaWVkU3RhcnQpOihyLnB1c2goYSksaT1hKX1yZXR1cm4gcn0obikpLGg9W107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKWgucHVzaChodC5jcmVhdGVGcm9tRGlmZkNoYW5nZShuW2VdLHUscCkpfXJldHVybiBuZXcgY3QobixvLHMsbCxoKX19Y2xhc3MgZHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBzdChlKSx0aGlzLm1vZGlmaWVkPW5ldyBzdCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9bXQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1tdCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07dmFyIGU9b3QodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPWUuY2hhbmdlcyxlPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IHA9W107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXAucHVzaChjdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bZV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpwfX1jb25zdCByPVtdO2xldCBpPTAsYT0wO2ZvcihsZXQgZT0tMSx0PW4ubGVuZ3RoO2U8dDtlKyspe2Zvcih2YXIgbz1lKzE8dD9uW2UrMV06bnVsbCxkPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsdT1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2k8ZCYmYTx1Oyl7Y29uc3QgaD10aGlzLm9yaWdpbmFsTGluZXNbaV0sYz10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoaCE9PWMpe3tsZXQgZT11dChoLDEpLHQ9dXQoYywxKTtmb3IoOzE8ZSYmMTx0Oyl7aWYoaC5jaGFyQ29kZUF0KGUtMikhPT1jLmNoYXJDb2RlQXQodC0yKSlicmVhaztlLS0sdC0tfSgxPGV8fDE8dCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UocixpKzEsMSxlLGErMSwxLHQpfXtsZXQgZT1wdChoLDEpLHQ9cHQoYywxKTtmb3IodmFyIHM9aC5sZW5ndGgrMSxsPWMubGVuZ3RoKzE7ZTxzJiZ0PGw7KXtpZihoLmNoYXJDb2RlQXQoZS0xKSE9PWguY2hhckNvZGVBdCh0LTEpKWJyZWFrO2UrKyx0Kyt9KGU8c3x8dDxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSxlLHMsYSsxLHQsbCl9fWkrKyxhKyt9byYmKHIucHVzaChjdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1vLm9yaWdpbmFsTGVuZ3RoLGErPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOnJ9fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGksYSxvLHMpe2lmKCF0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixpLGEsbyxzKSl7bGV0IGU9dm9pZCAwO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoZT1bbmV3IGh0KG4scixuLGksYSxvLGEscyldKSx0LnB1c2gobmV3IGN0KG4sbixhLGEsZSkpfX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7dmFyIHM9ZS5sZW5ndGg7aWYoMD09PXMpcmV0dXJuITE7Y29uc3QgbD1lW3MtMV07cmV0dXJuIDAhPT1sLm9yaWdpbmFsRW5kTGluZU51bWJlciYmMCE9PWwubW9kaWZpZWRFbmRMaW5lTnVtYmVyJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IGh0KHQsbix0LHIsaSxhLGksbykpLCEwKSl9fWZ1bmN0aW9uIHV0KGUsdCl7ZT1mdW5jdGlvbihuKXtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe3ZhciByPW4uY2hhckNvZGVBdChlKTtpZigzMiE9PXImJjkhPT1yKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzF9ZnVuY3Rpb24gcHQoZSx0KXtlPWZ1bmN0aW9uKHQsbj10Lmxlbmd0aC0xKXtmb3IobGV0IGU9bjswPD1lO2UtLSl7dmFyIHI9dC5jaGFyQ29kZUF0KGUpO2lmKDMyIT09ciYmOSE9PXIpcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMn1mdW5jdGlvbiBtdChlKXtpZigwPT09ZSlyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiBmdChlKXtyZXR1cm4gZTwwPzA6MjU1PGU/MjU1OjB8ZX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZTwwPzA6NDI5NDk2NzI5NTxlPzQyOTQ5NjcyOTU6MHxlfWNsYXNzIGJ0e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9Z3QoZSk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO3ZhciBpPXQubGVuZ3RoO3JldHVybiAwIT09aSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KGUpLGUraSksdGhpcy52YWx1ZXMuc2V0KHQsZSksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KHIuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZShlLHQpe3JldHVybiBlPWd0KGUpLHQ9Z3QodCksdGhpcy52YWx1ZXNbZV0hPT10JiYodGhpcy52YWx1ZXNbZV09dCxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksITApfXJlbW92ZVZhbHVlcyhlLHQpe2U9Z3QoZSksdD1ndCh0KTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW07aWYoZT49bi5sZW5ndGgpcmV0dXJuITE7dmFyIGk9bi5sZW5ndGgtZTtyZXR1cm4gMCE9PSh0PWk8PXQ/aTp0KSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aC10KSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KGUrdCksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KHIuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiAwPT09dGhpcy52YWx1ZXMubGVuZ3RoPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPWd0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bSh0KXtpZih0PD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW3RdO2xldCBuPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxOzA9PT1uJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0sbisrKSx0Pj10aGlzLnZhbHVlcy5sZW5ndGgmJih0PXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IGU9bjtlPD10O2UrKyl0aGlzLnByZWZpeFN1bVtlXT10aGlzLnByZWZpeFN1bVtlLTFdK3RoaXMudmFsdWVzW2VdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLHQpLHRoaXMucHJlZml4U3VtW3RdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgdD0wLG49dGhpcy52YWx1ZXMubGVuZ3RoLTEscj0wO3ZhciBpO2xldCBhPTA7Zm9yKDt0PD1uOylpZihyPXQrKG4tdCkvMnwwLGk9dGhpcy5wcmVmaXhTdW1bcl0sZTwoYT1pLXRoaXMudmFsdWVzW3JdKSluPXItMTtlbHNle2lmKCEoaTw9ZSkpYnJlYWs7dD1yKzF9cmV0dXJuIG5ldyBfdChyLGUtYSl9fWNsYXNzIF90e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXQsdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dH19Y29uc3Qgd3Q9ZnVuY3Rpb24oZT0iIil7bGV0IHQ9IigtP1xcZCpcXC5cXGRcXHcqKXwoW14iO2Zvcihjb25zdCBuIG9mImB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiwuPD4vPyIpMDw9ZS5pbmRleE9mKG4pfHwodCs9IlxcIituKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9KCk7Y29uc3QgdnQ9e21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH07ZnVuY3Rpb24geXQodCxuLHIsaSxhPXZ0KXtpZihyLmxlbmd0aD5hLm1heExlbil7bGV0IGU9dC1hLm1heExlbi8yO3JldHVybiBlPDA/ZT0wOmkrPWUseXQodCxuLHI9ci5zdWJzdHJpbmcoZSx0K2EubWF4TGVuLzIpLGksYSl9dmFyIGQ9RGF0ZS5ub3coKSxvPXQtMS1pO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktZD49YS50aW1lQnVkZ2V0KTtlKyspe3ZhciBoPW8tYS53aW5kb3dTaXplKmUsYz0obi5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKSxmdW5jdGlvbihlLHQsbixyKXt2YXIgaTtmb3IoO2k9ZS5leGVjKHQpOyl7dmFyIGE9aS5pbmRleHx8MDtpZihhPD1uJiZlLmxhc3RJbmRleD49bilyZXR1cm4gaTtpZigwPHImJnI8YSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0obixyLG8scykpO2lmKCFjJiZsKWJyZWFrO2lmKGw9YyxoPD0wKWJyZWFrO3M9aH1yZXR1cm4gbD8odD17d29yZDpsWzBdLHN0YXJ0Q29sdW1uOmkrMStsLmluZGV4LGVuZENvbHVtbjppKzErbC5pbmRleCtsWzBdLmxlbmd0aH0sbi5sYXN0SW5kZXg9MCx0KTpudWxsfWNsYXNzIFR0e2NvbnN0cnVjdG9yKGUpe2U9ZnQoZSk7dGhpcy5fZGVmYXVsdFZhbHVlPWUsdGhpcy5fYXNjaWlNYXA9VHQuX2NyZWF0ZUFzY2lpTWFwKGUpLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAodCl7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyluW2VdPXQ7cmV0dXJuIG59c2V0KGUsdCl7dD1mdCh0KTswPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXT10OnRoaXMuX21hcC5zZXQoZSx0KX1nZXQoZSl7cmV0dXJuIDA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdOnRoaXMuX21hcC5nZXQoZSl8fHRoaXMuX2RlZmF1bHRWYWx1ZX19Y2xhc3Mga3R7Y29uc3RydWN0b3IobixyLGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkobipyKTtmb3IobGV0IGU9MCx0PW4qcjtlPHQ7ZSsrKWFbZV09aTt0aGlzLl9kYXRhPWEsdGhpcy5yb3dzPW4sdGhpcy5jb2xzPXJ9Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF19c2V0KGUsdCxuKXt0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdPW59fWNsYXNzIFN0e2NvbnN0cnVjdG9yKG4pe2xldCByPTAsaT0wO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7dmFyW2EsbyxzXT1uW2VdO28+ciYmKHI9bykscz4oaT1hPmk/YTppKSYmKGk9cyl9cisrLGkrKztjb25zdCBsPW5ldyBrdChpLHIsMCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXt2YXJbaCxjLGRdPW5bZV07bC5zZXQoaCxjLGQpfXRoaXMuX3N0YXRlcz1sLHRoaXMuX21heENoYXJDb2RlPXJ9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBDdD1udWxsO2xldCB4dD1udWxsO2NsYXNzIEx0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixyLGkpe2xldCBhPWktMTtkb3t2YXIgbz10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG8pKWJyZWFrfXdoaWxlKC0tYT5yKTt2YXIgcztyZXR1cm4gMDxyJiYoaT10LmNoYXJDb2RlQXQoci0xKSxzPXQuY2hhckNvZGVBdChhKSwoNDA9PT1pJiY0MT09PXN8fDkxPT09aSYmOTM9PT1zfHwxMjM9PT1pJiYxMjU9PT1zKSYmYS0tKSx7cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpuLHN0YXJ0Q29sdW1uOnIrMSxlbmRMaW5lTnVtYmVyOm4sZW5kQ29sdW1uOmErMn0sdXJsOnQuc3Vic3RyaW5nKHIsYSsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LGQ9Q3Q9bnVsbD09PUN0P25ldyBTdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKTpDdCl7Y29uc3QgdT1mdW5jdGlvbigpe2lmKG51bGw9PT14dCl7eHQ9bmV3IFR0KDApO3ZhciB0PSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspeHQuc2V0KHQuY2hhckNvZGVBdChlKSwxKTtmb3IobGV0IGU9MDtlPCIuLDsiLmxlbmd0aDtlKyspeHQuc2V0KCIuLDsiLmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIHh0fSgpLHA9W107Zm9yKGxldCBjPTEsZT10LmdldExpbmVDb3VudCgpO2M8PWU7YysrKXtjb25zdCBnPXQuZ2V0TGluZUNvbnRlbnQoYyk7dmFyIG09Zy5sZW5ndGg7bGV0IG49MCxyPTAsaT0wLGE9MSxvPSExLHM9ITEsbD0hMSxoPSExO2Zvcig7bjxtOyl7bGV0IHQ9ITE7dmFyIGY9Zy5jaGFyQ29kZUF0KG4pO2lmKDEzPT09YSl7bGV0IGU7c3dpdGNoKGYpe2Nhc2UgNDA6bz0hMCxlPTA7YnJlYWs7Y2FzZSA0MTplPW8/MDoxO2JyZWFrO2Nhc2UgOTE6bD0hMCxzPSEwLGU9MDticmVhaztjYXNlIDkzOmw9ITEsZT1zPzA6MTticmVhaztjYXNlIDEyMzpoPSEwLGU9MDticmVhaztjYXNlIDEyNTplPWg/MDoxO2JyZWFrO2Nhc2UgMzk6ZT0zND09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSAzNDplPTM5PT09aXx8OTY9PT1pPzA6MTticmVhaztjYXNlIDk2OmU9Mzk9PT1pfHwzND09PWk/MDoxO2JyZWFrO2Nhc2UgNDI6ZT00Mj09PWk/MTowO2JyZWFrO2Nhc2UgMTI0OmU9MTI0PT09aT8xOjA7YnJlYWs7Y2FzZSAzMjplPWw/MDoxO2JyZWFrO2RlZmF1bHQ6ZT11LmdldChmKX0xPT09ZSYmKHAucHVzaChMdC5fY3JlYXRlTGluayh1LGcsYyxyLG4pKSx0PSEwKX1lbHNlIGlmKDEyPT09YSl7bGV0IGU7MT09PShlPTkxPT09Zj8ocz0hMCwwKTp1LmdldChmKSk/dD0hMDphPTEzfWVsc2UgMD09PShhPWQubmV4dFN0YXRlKGEsZikpJiYodD0hMCk7dCYmKGE9MSxvPSExLHM9ITEsaD0hMSxyPW4rMSxpPWYpLG4rK30xMz09PWEmJnAucHVzaChMdC5fY3JlYXRlTGluayh1LGcsYyxyLG0pKX1yZXR1cm4gcH19Y2xhc3MgRXR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe2lmKGUmJnQpe3Q9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZih0KXJldHVybntyYW5nZTplLHZhbHVlOnR9fWlmKG4mJnIpe2U9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocixpKTtpZihlKXJldHVybntyYW5nZTpuLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe3ZhciBuPXRoaXMubnVtYmVyUmVwbGFjZShlLHQpO3JldHVybiBudWxsIT09bj9uOnRoaXMudGV4dFJlcGxhY2UoZSx0KX1udW1iZXJSZXBsYWNlKGUsdCl7dmFyIG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2U9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4ocikmJiFpc05hTihlKSYmcj09PWUmJigwIT09cnx8dCk/KHI9TWF0aC5mbG9vcihyKm4pLHIrPXQ/bjotbixTdHJpbmcoci9uKSk6bnVsbH10ZXh0UmVwbGFjZShlLHQpe3JldHVybiB0aGlzLnZhbHVlU2V0c1JlcGxhY2UodGhpcy5fZGVmYXVsdFZhbHVlU2V0LGUsdCl9dmFsdWVTZXRzUmVwbGFjZShuLHIsaSl7bGV0IGE9bnVsbDtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO251bGw9PT1hJiZlPHQ7ZSsrKWE9dGhpcy52YWx1ZVNldFJlcGxhY2UobltlXSxyLGkpO3JldHVybiBhfXZhbHVlU2V0UmVwbGFjZShlLHQsbil7bGV0IHI9ZS5pbmRleE9mKHQpO3JldHVybiAwPD1yPygocis9bj8xOi0xKTwwP3I9ZS5sZW5ndGgtMTpyJT1lLmxlbmd0aCxlW3JdKTpudWxsfX1FdC5JTlNUQU5DRT1uZXcgRXQ7Y29uc3QgQXQ9T2JqZWN0LmZyZWV6ZShmdW5jdGlvbihlLHQpe2NvbnN0IG49c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQobil9fX0pOyhOZT1JZT1JZXx8e30pLmlzQ2FuY2VsbGF0aW9uVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1OZS5Ob25lfHxlPT09TmUuQ2FuY2VsbGVkfHwoZSBpbnN0YW5jZW9mIE10fHwhKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoImJvb2xlYW4iPT10eXBlb2YgZS5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIGUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sTmUuTm9uZT1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMSxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDphLk5vbmV9KSxOZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6QXR9KTtjbGFzcyBNdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/QXQ6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyB0ZSksdGhpcy5fZW1pdHRlci5ldmVudCl9ZGlzcG9zZSgpe3RoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmRpc3Bvc2UoKSx0aGlzLl9lbWl0dGVyPW51bGwpfX1jbGFzcyBSdHtjb25zdHJ1Y3RvcihlKXt0aGlzLl90b2tlbj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPWUmJmUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQodGhpcy5jYW5jZWwsdGhpcyl9Z2V0IHRva2VuKCl7cmV0dXJuIHRoaXMuX3Rva2VufHwodGhpcy5fdG9rZW49bmV3IE10KSx0aGlzLl90b2tlbn1jYW5jZWwoKXt0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIE10JiZ0aGlzLl90b2tlbi5jYW5jZWwoKTp0aGlzLl90b2tlbj1JZS5DYW5jZWxsZWR9ZGlzcG9zZShlPSExKXtlJiZ0aGlzLmNhbmNlbCgpLHRoaXMuX3BhcmVudExpc3RlbmVyJiZ0aGlzLl9wYXJlbnRMaXN0ZW5lci5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBNdCYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPUllLk5vbmV9fWNsYXNzIEl0e2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZShlLHQpe3RoaXMuX2tleUNvZGVUb1N0cltlXT10LHRoaXMuX3N0clRvS2V5Q29kZVt0LnRvTG93ZXJDYXNlKCldPWV9a2V5Q29kZVRvU3RyKGUpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbZV19c3RyVG9LZXlDb2RlKGUpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbZS50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgTnQ9bmV3IEl0LFV0PW5ldyBJdCx6dD1uZXcgSXQsSHQ9bmV3IEFycmF5KDIzMCksRHQ9e30sV3Q9W10sUHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxPdD1PYmplY3QuY3JlYXRlKG51bGwpLHF0PVtdLEZ0PVtdO2ZvcihsZXQgZT0wO2U8PTE5MztlKyspcXRbZV09LTE7Zm9yKGxldCBlPTA7ZTw9MTI3O2UrKylGdFtlXT0tMTt7bGV0IGU9W10sdD1bXTtmb3IoY29uc3QgdWEgb2ZbWzAsMSwwLCJOb25lIiwwLCJ1bmtub3duIiwwLCJWS19VTktOT1dOIiwiIiwiIl0sWzAsMSwxLCJIeXBlciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDIsIlN1cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMywiRm4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw0LCJGbkxvY2siLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw1LCJTdXNwZW5kIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNiwiUmVzdW1lIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNywiVHVyYm8iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw4LCJTbGVlcCIsMCwiIiwwLCJWS19TTEVFUCIsIiIsIiJdLFswLDEsOSwiV2FrZVVwIiwwLCIiLDAsIiIsIiIsIiJdLFszMSwwLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLCIiLCIiXSxbMzIsMCwxMSwiS2V5QiIsMzIsIkIiLDY2LCJWS19CIiwiIiwiIl0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsIiIsIiJdLFszNCwwLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLCIiLCIiXSxbMzUsMCwxNCwiS2V5RSIsMzUsIkUiLDY5LCJWS19FIiwiIiwiIl0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsIiIsIiJdLFszNywwLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLCIiLCIiXSxbMzgsMCwxNywiS2V5SCIsMzgsIkgiLDcyLCJWS19IIiwiIiwiIl0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsIiIsIiJdLFs0MCwwLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLCIiLCIiXSxbNDEsMCwyMCwiS2V5SyIsNDEsIksiLDc1LCJWS19LIiwiIiwiIl0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsIiIsIiJdLFs0MywwLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLCIiLCIiXSxbNDQsMCwyMywiS2V5TiIsNDQsIk4iLDc4LCJWS19OIiwiIiwiIl0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsIiIsIiJdLFs0NiwwLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLCIiLCIiXSxbNDcsMCwyNiwiS2V5USIsNDcsIlEiLDgxLCJWS19RIiwiIiwiIl0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsIiIsIiJdLFs0OSwwLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLCIiLCIiXSxbNTAsMCwyOSwiS2V5VCIsNTAsIlQiLDg0LCJWS19UIiwiIiwiIl0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsIiIsIiJdLFs1MiwwLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLCIiLCIiXSxbNTMsMCwzMiwiS2V5VyIsNTMsIlciLDg3LCJWS19XIiwiIiwiIl0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsIiIsIiJdLFs1NSwwLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLCIiLCIiXSxbNTYsMCwzNSwiS2V5WiIsNTYsIloiLDkwLCJWS19aIiwiIiwiIl0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIiwiIiwiIl0sWzIzLDAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIiwiIiwiIl0sWzI0LDAsMzgsIkRpZ2l0MyIsMjQsIjMiLDUxLCJWS18zIiwiIiwiIl0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IiwiIiwiIl0sWzI2LDAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IiwiIiwiIl0sWzI3LDAsNDEsIkRpZ2l0NiIsMjcsIjYiLDU0LCJWS182IiwiIiwiIl0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IiwiIiwiIl0sWzI5LDAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IiwiIiwiIl0sWzMwLDAsNDQsIkRpZ2l0OSIsMzAsIjkiLDU3LCJWS185IiwiIiwiIl0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIiwiIiwiIl0sWzMsMSw0NiwiRW50ZXIiLDMsIkVudGVyIiwxMywiVktfUkVUVVJOIiwiIiwiIl0sWzksMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLCIiLCIiXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsIiIsIiJdLFsyLDEsNDksIlRhYiIsMiwiVGFiIiw5LCJWS19UQUIiLCIiLCIiXSxbMTAsMSw1MCwiU3BhY2UiLDEwLCJTcGFjZSIsMzIsIlZLX1NQQUNFIiwiIiwiIl0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCwiIiwwLCIiLCIiLCIiXSxbODAsMCw1NywiU2VtaWNvbG9uIiw4MCwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFs5MCwwLDU4LCJRdW90ZSIsOTAsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbODYsMCw1OSwiQmFja3F1b3RlIiw4NiwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFs4MiwwLDYwLCJDb21tYSIsODIsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFs4NCwwLDYxLCJQZXJpb2QiLDg0LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFs4NSwwLDYyLCJTbGFzaCIsODUsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbOCwxLDYzLCJDYXBzTG9jayIsOCwiQ2Fwc0xvY2siLDIwLCJWS19DQVBJVEFMIiwiIiwiIl0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLCIiLCIiXSxbNjAsMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsIiIsIiJdLFs2MSwxLDY2LCJGMyIsNjEsIkYzIiwxMTQsIlZLX0YzIiwiIiwiIl0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLCIiLCIiXSxbNjMsMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsIiIsIiJdLFs2NCwxLDY5LCJGNiIsNjQsIkY2IiwxMTcsIlZLX0Y2IiwiIiwiIl0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLCIiLCIiXSxbNjYsMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsIiIsIiJdLFs2NywxLDcyLCJGOSIsNjcsIkY5IiwxMjAsIlZLX0Y5IiwiIiwiIl0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLCIiLCIiXSxbNjksMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsIiIsIiJdLFs3MCwxLDc1LCJGMTIiLDcwLCJGMTIiLDEyMywiVktfRjEyIiwiIiwiIl0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzc5LDEsNzcsIlNjcm9sbExvY2siLDc5LCJTY3JvbGxMb2NrIiwxNDUsIlZLX1NDUk9MTCIsIiIsIiJdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLCIiLCIiXSxbMTksMSw3OSwiSW5zZXJ0IiwxOSwiSW5zZXJ0Iiw0NSwiVktfSU5TRVJUIiwiIiwiIl0sWzE0LDEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsIiIsIiJdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsIiIsIiJdLFsyMCwxLDgyLCJEZWxldGUiLDIwLCJEZWxldGUiLDQ2LCJWS19ERUxFVEUiLCIiLCIiXSxbMTMsMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIiwiIiwiIl0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIiwiIiwiIl0sWzE3LDEsODUsIkFycm93UmlnaHQiLDE3LCJSaWdodEFycm93IiwzOSwiVktfUklHSFQiLCJSaWdodCIsIiJdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsIiJdLFsxOCwxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsIiJdLFsxNiwxLDg4LCJBcnJvd1VwIiwxNiwiVXBBcnJvdyIsMzgsIlZLX1VQIiwiVXAiLCIiXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsIiIsIiJdLFsxMDgsMSw5MCwiTnVtcGFkRGl2aWRlIiwxMDgsIk51bVBhZF9EaXZpZGUiLDExMSwiVktfRElWSURFIiwiIiwiIl0sWzEwMywxLDkxLCJOdW1wYWRNdWx0aXBseSIsMTAzLCJOdW1QYWRfTXVsdGlwbHkiLDEwNiwiVktfTVVMVElQTFkiLCIiLCIiXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsIiIsIiJdLFsxMDQsMSw5MywiTnVtcGFkQWRkIiwxMDQsIk51bVBhZF9BZGQiLDEwNywiVktfQUREIiwiIiwiIl0sWzMsMSw5NCwiTnVtcGFkRW50ZXIiLDMsIiIsMCwiIiwiIiwiIl0sWzk0LDEsOTUsIk51bXBhZDEiLDk0LCJOdW1QYWQxIiw5NywiVktfTlVNUEFEMSIsIiIsIiJdLFs5NSwxLDk2LCJOdW1wYWQyIiw5NSwiTnVtUGFkMiIsOTgsIlZLX05VTVBBRDIiLCIiLCIiXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIiwiIiwiIl0sWzk3LDEsOTgsIk51bXBhZDQiLDk3LCJOdW1QYWQ0IiwxMDAsIlZLX05VTVBBRDQiLCIiLCIiXSxbOTgsMSw5OSwiTnVtcGFkNSIsOTgsIk51bVBhZDUiLDEwMSwiVktfTlVNUEFENSIsIiIsIiJdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsIiIsIiJdLFsxMDAsMSwxMDEsIk51bXBhZDciLDEwMCwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IiwiIiwiIl0sWzEwMSwxLDEwMiwiTnVtcGFkOCIsMTAxLCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLCIiLCIiXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsIiIsIiJdLFs5MywxLDEwNCwiTnVtcGFkMCIsOTMsIk51bVBhZDAiLDk2LCJWS19OVU1QQUQwIiwiIiwiIl0sWzEwNywxLDEwNSwiTnVtcGFkRGVjaW1hbCIsMTA3LCJOdW1QYWRfRGVjaW1hbCIsMTEwLCJWS19ERUNJTUFMIiwiIiwiIl0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIiwiIiwiIl0sWzU4LDEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MywiIiwiIiwiIl0sWzAsMSwxMDgsIlBvd2VyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCwiIiwwLCIiLCIiLCIiXSxbNzEsMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLCIiLCIiXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLCIiLCIiXSxbNzMsMSwxMTIsIkYxNSIsNzMsIkYxNSIsMTI2LCJWS19GMTUiLCIiLCIiXSxbNzQsMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLCIiLCIiXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLCIiLCIiXSxbNzYsMSwxMTUsIkYxOCIsNzYsIkYxOCIsMTI5LCJWS19GMTgiLCIiLCIiXSxbNzcsMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLCIiLCIiXSxbMCwxLDExNywiRjIwIiwwLCIiLDAsIlZLX0YyMCIsIiIsIiJdLFswLDEsMTE4LCJGMjEiLDAsIiIsMCwiVktfRjIxIiwiIiwiIl0sWzAsMSwxMTksIkYyMiIsMCwiIiwwLCJWS19GMjIiLCIiLCIiXSxbMCwxLDEyMCwiRjIzIiwwLCIiLDAsIlZLX0YyMyIsIiIsIiJdLFswLDEsMTIxLCJGMjQiLDAsIiIsMCwiVktfRjI0IiwiIiwiIl0sWzAsMSwxMjIsIk9wZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjMsIkhlbHAiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjQsIlNlbGVjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNSwiQWdhaW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjYsIlVuZG8iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjcsIkN1dCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyOCwiQ29weSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyOSwiUGFzdGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzAsIkZpbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLCIiLCIiXSxbMCwxLDEzMiwiQXVkaW9Wb2x1bWVVcCIsMTEzLCJBdWRpb1ZvbHVtZVVwIiwxNzUsIlZLX1ZPTFVNRV9VUCIsIiIsIiJdLFswLDEsMTMzLCJBdWRpb1ZvbHVtZURvd24iLDExNCwiQXVkaW9Wb2x1bWVEb3duIiwxNzQsIlZLX1ZPTFVNRV9ET1dOIiwiIiwiIl0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLCIiLCIiXSxbMTEwLDAsMTM1LCJJbnRsUm8iLDExMCwiQUJOVF9DMSIsMTkzLCJWS19BQk5UX0MxIiwiIiwiIl0sWzAsMSwxMzYsIkthbmFNb2RlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDAsMTM3LCJJbnRsWWVuIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTM4LCJDb252ZXJ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTM5LCJOb25Db252ZXJ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQwLCJMYW5nMSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MSwiTGFuZzIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDIsIkxhbmczIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQzLCJMYW5nNCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NCwiTGFuZzUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDUsIkFib3J0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ2LCJQcm9wcyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU1LCJOdW1wYWRDbGVhciIsMTI2LCJDbGVhciIsMTIsIlZLX0NMRUFSIiwiIiwiIl0sWzAsMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsIiIsMCwiIiwiIiwiIl0sWzUsMSwwLCIiLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIiwiIiwiIl0sWzQsMSwwLCIiLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLCIiLCIiXSxbNiwxLDAsIiIsNiwiQWx0IiwxOCwiVktfTUVOVSIsIiIsIiJdLFs1NywxLDAsIiIsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLCIiLCIiXSxbNSwxLDE1NywiQ29udHJvbExlZnQiLDUsIiIsMCwiVktfTENPTlRST0wiLCIiLCIiXSxbNCwxLDE1OCwiU2hpZnRMZWZ0Iiw0LCIiLDAsIlZLX0xTSElGVCIsIiIsIiJdLFs2LDEsMTU5LCJBbHRMZWZ0Iiw2LCIiLDAsIlZLX0xNRU5VIiwiIiwiIl0sWzU3LDEsMTYwLCJNZXRhTGVmdCIsNTcsIiIsMCwiVktfTFdJTiIsIiIsIiJdLFs1LDEsMTYxLCJDb250cm9sUmlnaHQiLDUsIiIsMCwiVktfUkNPTlRST0wiLCIiLCIiXSxbNCwxLDE2MiwiU2hpZnRSaWdodCIsNCwiIiwwLCJWS19SU0hJRlQiLCIiLCIiXSxbNiwxLDE2MywiQWx0UmlnaHQiLDYsIiIsMCwiVktfUk1FTlUiLCIiLCIiXSxbNTcsMSwxNjQsIk1ldGFSaWdodCIsNTcsIiIsMCwiVktfUldJTiIsIiIsIiJdLFswLDEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY3LCJNZWRpYVBsYXkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjgsIk1lZGlhUmVjb3JkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTcwLCJNZWRpYVJld2luZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE0LDEsMTcxLCJNZWRpYVRyYWNrTmV4dCIsMTE5LCJNZWRpYVRyYWNrTmV4dCIsMTc2LCJWS19NRURJQV9ORVhUX1RSQUNLIiwiIiwiIl0sWzExNSwxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjAsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIiwiIiwiIl0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIiwiIiwiIl0sWzAsMSwxNzQsIkVqZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLCIiLCIiXSxbMCwxLDE3NiwiTWVkaWFTZWxlY3QiLDEyMywiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsIiIsIiJdLFswLDEsMTc3LCJMYXVuY2hNYWlsIiwxMjQsIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLCIiLCIiXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIiwiIiwiIl0sWzAsMSwxNzksIkxhdW5jaEFwcDEiLDAsIiIsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLCIiLCIiXSxbMCwxLDE4MCwiU2VsZWN0VGFzayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODIsIkJyb3dzZXJTZWFyY2giLDExNSwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsIiIsIiJdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLCIiLCIiXSxbMTEyLDEsMTg0LCJCcm93c2VyQmFjayIsMTE3LCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLCIiLCIiXSxbMTEzLDEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTE4LCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLCIiLCIiXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsIiIsMCwiVktfQlJPV1NFUl9TVE9QIiwiIiwiIl0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLCIiLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsIiIsIiJdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLCIiLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIiwiIiwiIl0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTAsIk1haWxSZXBseSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE5MSwiTWFpbEZvcndhcmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLCIiLDAsIiIsIiIsIiJdLFsxMDksMSwwLCIiLDEwOSwiS2V5SW5Db21wb3NpdGlvbiIsMjI5LCIiLCIiLCIiXSxbMTExLDEsMCwiIiwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsIiIsIiJdLFs5MSwxLDAsIiIsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkdVTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0pVTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRklOQUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IQU5KQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0tBTkpJIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkNPTlZFUlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BQ0NFUFQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19NT0RFQ0hBTkdFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU0VMRUNUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJJTlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWEVDVVRFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU05BUFNIT1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IRUxQIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQVBQUyIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BST0NFU1NLRVkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQUNLRVQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfU0JDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfREJDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BVFROIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ1JTRUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWFNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VSRU9GIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUExBWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1pPT00iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19OT05BTUUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQTEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19PRU1fQ0xFQVIiLCIiLCIiXV0pe2NvbnN0WyxwYSxtYSxmYSxnYSxiYSxfYSx3YSx2YSx5YV09dWE7aWYodFttYV18fCh0W21hXT0hMCxXdFttYV09ZmEsUHRbZmFdPW1hLE90W2ZhLnRvTG93ZXJDYXNlKCldPW1hLHBhJiYwIT09KHF0W21hXT1nYSkmJjMhPT1nYSYmNSE9PWdhJiY0IT09Z2EmJjYhPT1nYSYmNTchPT1nYSYmKEZ0W2dhXT1tYSkpLCFlW2dhXSl7aWYoZVtnYV09ITAsIWJhKXRocm93IG5ldyBFcnJvcihgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG1pc3NpbmcgZm9yIGtleSBjb2RlICR7Z2F9IGFyb3VuZCBzY2FuIGNvZGUgYCtmYSk7TnQuZGVmaW5lKGdhLGJhKSxVdC5kZWZpbmUoZ2EsdmF8fGJhKSx6dC5kZWZpbmUoZ2EseWF8fHZhfHxiYSl9X2EmJihIdFtfYV09Z2EpLHdhJiYoRHRbd2FdPWdhKX1GdFszXT00Nn1jbGFzcyBWdCBleHRlbmRzIGF0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCxuLHIpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj10LHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPW4sdGhpcy5wb3NpdGlvbkNvbHVtbj1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKGUpe3JldHVybiBWdC5zZWxlY3Rpb25zRXF1YWwodGhpcyxlKX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKGUsdCl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJmUuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10LnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZlLnBvc2l0aW9uTGluZU51bWJlcj09PXQucG9zaXRpb25MaW5lTnVtYmVyJiZlLnBvc2l0aW9uQ29sdW1uPT09dC5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBWdCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCk6bmV3IFZ0KGUsdCx0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgaXQodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IGl0KHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IFZ0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyBWdCh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sZSx0KX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBWdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKGUsdCl7cmV0dXJuIDA9PT10P25ldyBWdChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bmV3IFZ0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbihlKXtyZXR1cm4gbmV3IFZ0KGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4sZS5wb3NpdGlvbkxpbmVOdW1iZXIsZS5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbChuLHIpe2lmKG4mJiFyfHwhbiYmcilyZXR1cm4hMTtpZighbiYmIXIpcmV0dXJuITA7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKG5bZV0scltlXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25Db2x1bW59c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gMD09PWk/bmV3IFZ0KGUsdCxuLHIpOm5ldyBWdChuLHIsZSx0KX19dmFyIEJ0LEt0PWZ1bmN0aW9uKGUsbyxzLGwpe3JldHVybiBuZXcocz1zfHxQcm9taXNlKShmdW5jdGlvbihuLHQpe2Z1bmN0aW9uIHIoZSl7dHJ5e2EobC5uZXh0KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBpKGUpe3RyeXthKGwudGhyb3coZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGEoZSl7dmFyIHQ7ZS5kb25lP24oZS52YWx1ZSk6KCh0PWUudmFsdWUpaW5zdGFuY2VvZiBzP3Q6bmV3IHMoZnVuY3Rpb24oZSl7ZSh0KX0pKS50aGVuKHIsaSl9YSgobD1sLmFwcGx5KGUsb3x8W10pKS5uZXh0KCkpfSl9O2NsYXNzIGp0IGV4dGVuZHMgdntjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl9mYWN0b3J5PW4sdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9cmVzb2x2ZSgpe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSl9X2NyZWF0ZSgpe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZhY3RvcnkuY3JlYXRlVG9rZW5pemF0aW9uU3VwcG9ydCgpKTt0aGlzLl9pc1Jlc29sdmVkPSEwLGUmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLGUpKX0pfX1jbGFzcyBpe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLGkuX2FsbENvZGljb25zLnB1c2godGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH1zdGF0aWMgZ2V0QWxsKCl7cmV0dXJuIGkuX2FsbENvZGljb25zfX1pLl9hbGxDb2RpY29ucz1bXSxpLmFkZD1uZXcgaSgiYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYwIn0pLGkucGx1cz1uZXcgaSgicGx1cyIsaS5hZGQuZGVmaW5pdGlvbiksaS5naXN0TmV3PW5ldyBpKCJnaXN0LW5ldyIsaS5hZGQuZGVmaW5pdGlvbiksaS5yZXBvQ3JlYXRlPW5ldyBpKCJyZXBvLWNyZWF0ZSIsaS5hZGQuZGVmaW5pdGlvbiksaS5saWdodGJ1bGI9bmV3IGkoImxpZ2h0YnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLmxpZ2h0QnVsYj1uZXcgaSgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLnJlcG89bmV3IGkoInJlcG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5yZXBvRGVsZXRlPW5ldyBpKCJyZXBvLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxpLmdpc3RGb3JrPW5ldyBpKCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5yZXBvRm9ya2VkPW5ldyBpKCJyZXBvLWZvcmtlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MyJ9KSxpLmdpdFB1bGxSZXF1ZXN0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkuZ2l0UHVsbFJlcXVlc3RBYmFuZG9uZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkucmVjb3JkS2V5cz1uZXcgaSgicmVjb3JkLWtleXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS5rZXlib2FyZD1uZXcgaSgia2V5Ym9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS50YWc9bmV3IGkoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ0FkZD1uZXcgaSgidGFnLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ1JlbW92ZT1uZXcgaSgidGFnLXJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnBlcnNvbj1uZXcgaSgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRm9sbG93PW5ldyBpKCJwZXJzb24tZm9sbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uT3V0bGluZT1uZXcgaSgicGVyc29uLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5wZXJzb25GaWxsZWQ9bmV3IGkoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5naXRCcmFuY2g9bmV3IGkoImdpdC1icmFuY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5naXRCcmFuY2hDcmVhdGU9bmV3IGkoImdpdC1icmFuY2gtY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoRGVsZXRlPW5ldyBpKCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLnNvdXJjZUNvbnRyb2w9bmV3IGkoInNvdXJjZS1jb250cm9sIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkubWlycm9yPW5ldyBpKCJtaXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5taXJyb3JQdWJsaWM9bmV3IGkoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5zdGFyPW5ldyBpKCJzdGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckFkZD1uZXcgaSgic3Rhci1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRGVsZXRlPW5ldyBpKCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJFbXB0eT1uZXcgaSgic3Rhci1lbXB0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLmNvbW1lbnQ9bmV3IGkoImNvbW1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5jb21tZW50QWRkPW5ldyBpKCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxpLmFsZXJ0PW5ldyBpKCJhbGVydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YyJ9KSxpLndhcm5pbmc9bmV3IGkoIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS5zZWFyY2g9bmV3IGkoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLnNlYXJjaFNhdmU9bmV3IGkoInNlYXJjaC1zYXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTZkIn0pLGkubG9nT3V0PW5ldyBpKCJsb2ctb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkuc2lnbk91dD1uZXcgaSgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksaS5sb2dJbj1uZXcgaSgibG9nLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuc2lnbkluPW5ldyBpKCJzaWduLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuZXllPW5ldyBpKCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVVbndhdGNoPW5ldyBpKCJleWUtdW53YXRjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MCJ9KSxpLmV5ZVdhdGNoPW5ldyBpKCJleWUtd2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5jaXJjbGVGaWxsZWQ9bmV3IGkoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5wcmltaXRpdmVEb3Q9bmV3IGkoInByaW1pdGl2ZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5jbG9zZURpcnR5PW5ldyBpKCJjbG9zZS1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludD1uZXcgaSgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludERpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuZGVidWdIaW50PW5ldyBpKCJkZWJ1Zy1oaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlU3F1YXJlPW5ldyBpKCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLGkuZWRpdD1uZXcgaSgiZWRpdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLnBlbmNpbD1uZXcgaSgicGVuY2lsIix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLGkuaW5mbz1uZXcgaSgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxpLmlzc3VlT3BlbmVkPW5ldyBpKCJpc3N1ZS1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5naXN0UHJpdmF0ZT1uZXcgaSgiZ2lzdC1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuZ2l0Rm9ya1ByaXZhdGU9bmV3IGkoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5sb2NrPW5ldyBpKCJsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubWlycm9yUHJpdmF0ZT1uZXcgaSgibWlycm9yLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5jbG9zZT1uZXcgaSgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZW1vdmVDbG9zZT1uZXcgaSgicmVtb3ZlLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkueD1uZXcgaSgieCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLnJlcG9TeW5jPW5ldyBpKCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksaS5zeW5jPW5ldyBpKCJzeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuY2xvbmU9bmV3IGkoImNsb25lIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuZGVza3RvcERvd25sb2FkPW5ldyBpKCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuYmVha2VyPW5ldyBpKCJiZWFrZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzkifSksaS5taWNyb3Njb3BlPW5ldyBpKCJtaWNyb3Njb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkudm09bmV3IGkoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZGV2aWNlRGVza3RvcD1uZXcgaSgiZGV2aWNlLWRlc2t0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2EifSksaS5maWxlPW5ldyBpKCJmaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLGkuZmlsZVRleHQ9bmV3IGkoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLm1vcmU9bmV3IGkoIm1vcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5lbGxpcHNpcz1uZXcgaSgiZWxsaXBzaXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5rZWJhYkhvcml6b250YWw9bmV3IGkoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5tYWlsUmVwbHk9bmV3IGkoIm1haWwtcmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5yZXBseT1uZXcgaSgicmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5vcmdhbml6YXRpb249bmV3IGkoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbkZpbGxlZD1uZXcgaSgib3JnYW5pemF0aW9uLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IGkoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLGkubmV3RmlsZT1uZXcgaSgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5maWxlQWRkPW5ldyBpKCJmaWxlLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZiJ9KSxpLm5ld0ZvbGRlcj1uZXcgaSgibmV3LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLmZpbGVEaXJlY3RvcnlDcmVhdGU9bmV3IGkoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLnRyYXNoPW5ldyBpKCJ0cmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLnRyYXNoY2FuPW5ldyBpKCJ0cmFzaGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLmhpc3Rvcnk9bmV3IGkoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5jbG9jaz1uZXcgaSgiY2xvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5mb2xkZXI9bmV3IGkoImZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmZpbGVEaXJlY3Rvcnk9bmV3IGkoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkuc3ltYm9sRm9sZGVyPW5ldyBpKCJzeW1ib2wtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkubG9nb0dpdGh1Yj1uZXcgaSgibG9nby1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5tYXJrR2l0aHViPW5ldyBpKCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLmdpdGh1Yj1uZXcgaSgiZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkudGVybWluYWw9bmV3IGkoInRlcm1pbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuY29uc29sZT1uZXcgaSgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLnJlcGw9bmV3IGkoInJlcGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS56YXA9bmV3IGkoInphcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxpLnN5bWJvbEV2ZW50PW5ldyBpKCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5lcnJvcj1uZXcgaSgiZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhODcifSksaS5zdG9wPW5ldyBpKCJzdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkudmFyaWFibGU9bmV3IGkoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLGkuc3ltYm9sVmFyaWFibGU9bmV3IGkoInN5bWJvbC12YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLmFycmF5PW5ldyBpKCJhcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxpLnN5bWJvbEFycmF5PW5ldyBpKCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xNb2R1bGU9bmV3IGkoInN5bWJvbC1tb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xQYWNrYWdlPW5ldyBpKCJzeW1ib2wtcGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE5hbWVzcGFjZT1uZXcgaSgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE9iamVjdD1uZXcgaSgic3ltYm9sLW9iamVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE1ldGhvZD1uZXcgaSgic3ltYm9sLW1ldGhvZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEZ1bmN0aW9uPW5ldyBpKCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xDb25zdHJ1Y3Rvcj1uZXcgaSgic3ltYm9sLWNvbnN0cnVjdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQm9vbGVhbj1uZXcgaSgic3ltYm9sLWJvb2xlYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdWxsPW5ldyBpKCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxpLnN5bWJvbE51bWVyaWM9bmV3IGkoInN5bWJvbC1udW1lcmljIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sTnVtYmVyPW5ldyBpKCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sU3RydWN0dXJlPW5ldyBpKCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sU3RydWN0PW5ldyBpKCJzeW1ib2wtc3RydWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sUGFyYW1ldGVyPW5ldyBpKCJzeW1ib2wtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sVHlwZVBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sS2V5PW5ldyBpKCJzeW1ib2wta2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sVGV4dD1uZXcgaSgic3ltYm9sLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksaS5zeW1ib2xSZWZlcmVuY2U9bmV3IGkoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5nb1RvRmlsZT1uZXcgaSgiZ28tdG8tZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NCJ9KSxpLnN5bWJvbEVudW09bmV3IGkoInN5bWJvbC1lbnVtIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLGkuc3ltYm9sVmFsdWU9bmV3IGkoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFJ1bGVyPW5ldyBpKCJzeW1ib2wtcnVsZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5zeW1ib2xVbml0PW5ldyBpKCJzeW1ib2wtdW5pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxpLmFjdGl2YXRlQnJlYWtwb2ludHM9bmV3IGkoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLGkuYXJjaGl2ZT1uZXcgaSgiYXJjaGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OCJ9KSxpLmFycm93Qm90aD1uZXcgaSgiYXJyb3ctYm90aCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OSJ9KSxpLmFycm93RG93bj1uZXcgaSgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxpLmFycm93TGVmdD1uZXcgaSgiYXJyb3ctbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YiJ9KSxpLmFycm93UmlnaHQ9bmV3IGkoImFycm93LXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTljIn0pLGkuYXJyb3dTbWFsbERvd249bmV3IGkoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksaS5hcnJvd1NtYWxsTGVmdD1uZXcgaSgiYXJyb3ctc21hbGwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5ZSJ9KSxpLmFycm93U21hbGxSaWdodD1uZXcgaSgiYXJyb3ctc21hbGwtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWYifSksaS5hcnJvd1NtYWxsVXA9bmV3IGkoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLGkuYXJyb3dVcD1uZXcgaSgiYXJyb3ctdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTEifSksaS5iZWxsPW5ldyBpKCJiZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWEyIn0pLGkuYm9sZD1uZXcgaSgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxpLmJvb2s9bmV3IGkoImJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYTQifSksaS5ib29rbWFyaz1uZXcgaSgiYm9va21hcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTUifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYWE3In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGE9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLGkuZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZz1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ciLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5icmllZmNhc2U9bmV3IGkoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxpLmJyb2FkY2FzdD1uZXcgaSgiYnJvYWRjYXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWFkIn0pLGkuYnJvd3Nlcj1uZXcgaSgiYnJvd3NlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZSJ9KSxpLmJ1Zz1uZXcgaSgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLGkuY2FsZW5kYXI9bmV3IGkoImNhbGVuZGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWIwIn0pLGkuY2FzZVNlbnNpdGl2ZT1uZXcgaSgiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksaS5jaGVjaz1uZXcgaSgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksaS5jaGVja2xpc3Q9bmV3IGkoImNoZWNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMyJ9KSxpLmNoZXZyb25Eb3duPW5ldyBpKCJjaGV2cm9uLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYjQifSksaS5kcm9wRG93bkJ1dHRvbj1uZXcgaSgiZHJvcC1kb3duLWJ1dHRvbiIsaS5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxpLmNoZXZyb25MZWZ0PW5ldyBpKCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksaS5jaGV2cm9uUmlnaHQ9bmV3IGkoImNoZXZyb24tcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjYifSksaS5jaGV2cm9uVXA9bmV3IGkoImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksaS5jaHJvbWVDbG9zZT1uZXcgaSgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLGkuY2hyb21lTWF4aW1pemU9bmV3IGkoImNocm9tZS1tYXhpbWl6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOSJ9KSxpLmNocm9tZU1pbmltaXplPW5ldyBpKCJjaHJvbWUtbWluaW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmEifSksaS5jaHJvbWVSZXN0b3JlPW5ldyBpKCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxpLmNpcmNsZU91dGxpbmU9bmV3IGkoImNpcmNsZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuY2lyY2xlU2xhc2g9bmV3IGkoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxpLmNpcmN1aXRCb2FyZD1uZXcgaSgiY2lyY3VpdC1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZSJ9KSxpLmNsZWFyQWxsPW5ldyBpKCJjbGVhci1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmYifSksaS5jbGlwcHk9bmV3IGkoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxpLmNsb3NlQWxsPW5ldyBpKCJjbG9zZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzEifSksaS5jbG91ZERvd25sb2FkPW5ldyBpKCJjbG91ZC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMiJ9KSxpLmNsb3VkVXBsb2FkPW5ldyBpKCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksaS5jb2RlPW5ldyBpKCJjb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWM0In0pLGkuY29sbGFwc2VBbGw9bmV3IGkoImNvbGxhcHNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNSJ9KSxpLmNvbG9yTW9kZT1uZXcgaSgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxpLmNvbW1lbnREaXNjdXNzaW9uPW5ldyBpKCJjb21tZW50LWRpc2N1c3Npb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYzcifSksaS5jb21wYXJlQ2hhbmdlcz1uZXcgaSgiY29tcGFyZS1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuY3JlZGl0Q2FyZD1uZXcgaSgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksaS5kYXNoPW5ldyBpKCJkYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYWNjIn0pLGkuZGFzaGJvYXJkPW5ldyBpKCJkYXNoYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2QifSksaS5kYXRhYmFzZT1uZXcgaSgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksaS5kZWJ1Z0NvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjZiJ9KSxpLmRlYnVnRGlzY29ubmVjdD1uZXcgaSgiZGVidWctZGlzY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMCJ9KSxpLmRlYnVnUGF1c2U9bmV3IGkoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLGkuZGVidWdSZXN0YXJ0PW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQyIn0pLGkuZGVidWdTdGFydD1uZXcgaSgiZGVidWctc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDMifSksaS5kZWJ1Z1N0ZXBJbnRvPW5ldyBpKCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksaS5kZWJ1Z1N0ZXBPdXQ9bmV3IGkoImRlYnVnLXN0ZXAtb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQ1In0pLGkuZGVidWdTdGVwT3Zlcj1uZXcgaSgiZGVidWctc3RlcC1vdmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ2In0pLGkuZGVidWdTdG9wPW5ldyBpKCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLGkuZGVidWc9bmV3IGkoImRlYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ4In0pLGkuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IGkoImRldmljZS1jYW1lcmEtdmlkZW8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDkifSksaS5kZXZpY2VDYW1lcmE9bmV3IGkoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksaS5kZXZpY2VNb2JpbGU9bmV3IGkoImRldmljZS1tb2JpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGIifSksaS5kaWZmQWRkZWQ9bmV3IGkoImRpZmYtYWRkZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGMifSksaS5kaWZmSWdub3JlZD1uZXcgaSgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLGkuZGlmZk1vZGlmaWVkPW5ldyBpKCJkaWZmLW1vZGlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRlIn0pLGkuZGlmZlJlbW92ZWQ9bmV3IGkoImRpZmYtcmVtb3ZlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZiJ9KSxpLmRpZmZSZW5hbWVkPW5ldyBpKCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksaS5kaWZmPW5ldyBpKCJkaWZmIix7Zm9udENoYXJhY3RlcjoiXFxlYWUxIn0pLGkuZGlzY2FyZD1uZXcgaSgiZGlzY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMiJ9KSxpLmVkaXRvckxheW91dD1uZXcgaSgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxpLmVtcHR5V2luZG93PW5ldyBpKCJlbXB0eS13aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhZTQifSksaS5leGNsdWRlPW5ldyBpKCJleGNsdWRlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU1In0pLGkuZXh0ZW5zaW9ucz1uZXcgaSgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxpLmV5ZUNsb3NlZD1uZXcgaSgiZXllLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNyJ9KSxpLmZpbGVCaW5hcnk9bmV3IGkoImZpbGUtYmluYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU4In0pLGkuZmlsZUNvZGU9bmV3IGkoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxpLmZpbGVNZWRpYT1uZXcgaSgiZmlsZS1tZWRpYSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYSJ9KSxpLmZpbGVQZGY9bmV3IGkoImZpbGUtcGRmIix7Zm9udENoYXJhY3RlcjoiXFxlYWViIn0pLGkuZmlsZVN1Ym1vZHVsZT1uZXcgaSgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksaS5maWxlU3ltbGlua0RpcmVjdG9yeT1uZXcgaSgiZmlsZS1zeW1saW5rLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZCJ9KSxpLmZpbGVTeW1saW5rRmlsZT1uZXcgaSgiZmlsZS1zeW1saW5rLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWUifSksaS5maWxlWmlwPW5ldyBpKCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxpLmZpbGVzPW5ldyBpKCJmaWxlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMCJ9KSxpLmZpbHRlcj1uZXcgaSgiZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWYxIn0pLGkuZmxhbWU9bmV3IGkoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLGkuZm9sZERvd249bmV3IGkoImZvbGQtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMyJ9KSxpLmZvbGRVcD1uZXcgaSgiZm9sZC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNCJ9KSxpLmZvbGQ9bmV3IGkoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksaS5mb2xkZXJBY3RpdmU9bmV3IGkoImZvbGRlci1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjYifSksaS5mb2xkZXJPcGVuZWQ9bmV3IGkoImZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjcifSksaS5nZWFyPW5ldyBpKCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLGkuZ2lmdD1uZXcgaSgiZ2lmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOSJ9KSxpLmdpc3RTZWNyZXQ9bmV3IGkoImdpc3Qtc2VjcmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZhIn0pLGkuZ2lzdD1uZXcgaSgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxpLmdpdENvbW1pdD1uZXcgaSgiZ2l0LWNvbW1pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYyJ9KSxpLmdpdENvbXBhcmU9bmV3IGkoImdpdC1jb21wYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuZ2l0TWVyZ2U9bmV3IGkoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxpLmdpdGh1YkFjdGlvbj1uZXcgaSgiZ2l0aHViLWFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZiJ9KSxpLmdpdGh1YkFsdD1uZXcgaSgiZ2l0aHViLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMCJ9KSxpLmdsb2JlPW5ldyBpKCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxpLmdyYWJiZXI9bmV3IGkoImdyYWJiZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMDIifSksaS5ncmFwaD1uZXcgaSgiZ3JhcGgiLHtmb250Q2hhcmFjdGVyOiJcXGViMDMifSksaS5ncmlwcGVyPW5ldyBpKCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLGkuaGVhcnQ9bmV3IGkoImhlYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA1In0pLGkuaG9tZT1uZXcgaSgiaG9tZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNiJ9KSxpLmhvcml6b250YWxSdWxlPW5ldyBpKCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksaS5odWJvdD1uZXcgaSgiaHVib3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMDgifSksaS5pbmJveD1uZXcgaSgiaW5ib3giLHtmb250Q2hhcmFjdGVyOiJcXGViMDkifSksaS5pc3N1ZUNsb3NlZD1uZXcgaSgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLGkuaXNzdWVSZW9wZW5lZD1uZXcgaSgiaXNzdWUtcmVvcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMGIifSksaS5pc3N1ZXM9bmV3IGkoImlzc3VlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYyJ9KSxpLml0YWxpYz1uZXcgaSgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLGkuamVyc2V5PW5ldyBpKCJqZXJzZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMGUifSksaS5qc29uPW5ldyBpKCJqc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYjBmIn0pLGkua2ViYWJWZXJ0aWNhbD1uZXcgaSgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksaS5rZXk9bmV3IGkoImtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMSJ9KSxpLmxhdz1uZXcgaSgibGF3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEyIn0pLGkubGlnaHRidWxiQXV0b2ZpeD1uZXcgaSgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksaS5saW5rRXh0ZXJuYWw9bmV3IGkoImxpbmstZXh0ZXJuYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTQifSksaS5saW5rPW5ldyBpKCJsaW5rIix7Zm9udENoYXJhY3RlcjoiXFxlYjE1In0pLGkubGlzdE9yZGVyZWQ9bmV3IGkoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxpLmxpc3RVbm9yZGVyZWQ9bmV3IGkoImxpc3QtdW5vcmRlcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjE3In0pLGkubGl2ZVNoYXJlPW5ldyBpKCJsaXZlLXNoYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYjE4In0pLGkubG9hZGluZz1uZXcgaSgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxpLmxvY2F0aW9uPW5ldyBpKCJsb2NhdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYSJ9KSxpLm1haWxSZWFkPW5ldyBpKCJtYWlsLXJlYWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMWIifSksaS5tYWlsPW5ldyBpKCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLGkubWFya2Rvd249bmV3IGkoIm1hcmtkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjFkIn0pLGkubWVnYXBob25lPW5ldyBpKCJtZWdhcGhvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMWUifSksaS5tZW50aW9uPW5ldyBpKCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLGkubWlsZXN0b25lPW5ldyBpKCJtaWxlc3RvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjAifSksaS5tb3J0YXJCb2FyZD1uZXcgaSgibW9ydGFyLWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYjIxIn0pLGkubW92ZT1uZXcgaSgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxpLm11bHRpcGxlV2luZG93cz1uZXcgaSgibXVsdGlwbGUtd2luZG93cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMyJ9KSxpLm11dGU9bmV3IGkoIm11dGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjQifSksaS5ub05ld2xpbmU9bmV3IGkoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksaS5ub3RlPW5ldyBpKCJub3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI2In0pLGkub2N0b2ZhY2U9bmV3IGkoIm9jdG9mYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI3In0pLGkub3BlblByZXZpZXc9bmV3IGkoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxpLnBhY2thZ2VfPW5ldyBpKCJwYWNrYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI5In0pLGkucGFpbnRjYW49bmV3IGkoInBhaW50Y2FuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJhIn0pLGkucGluPW5ldyBpKCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksaS5wbGF5PW5ldyBpKCJwbGF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucnVuPW5ldyBpKCJydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksaS5wbHVnPW5ldyBpKCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLGkucHJlc2VydmVDYXNlPW5ldyBpKCJwcmVzZXJ2ZS1jYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjJlIn0pLGkucHJldmlldz1uZXcgaSgicHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZiJ9KSxpLnByb2plY3Q9bmV3IGkoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksaS5wdWxzZT1uZXcgaSgicHVsc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMzEifSksaS5xdWVzdGlvbj1uZXcgaSgicXVlc3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMzIifSksaS5xdW90ZT1uZXcgaSgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksaS5yYWRpb1Rvd2VyPW5ldyBpKCJyYWRpby10b3dlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNCJ9KSxpLnJlYWN0aW9ucz1uZXcgaSgicmVhY3Rpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYjM1In0pLGkucmVmZXJlbmNlcz1uZXcgaSgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxpLnJlZnJlc2g9bmV3IGkoInJlZnJlc2giLHtmb250Q2hhcmFjdGVyOiJcXGViMzcifSksaS5yZWdleD1uZXcgaSgicmVnZXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMzgifSksaS5yZW1vdGVFeHBsb3Jlcj1uZXcgaSgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLGkucmVtb3RlPW5ldyBpKCJyZW1vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2EifSksaS5yZW1vdmU9bmV3IGkoInJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYiJ9KSxpLnJlcGxhY2VBbGw9bmV3IGkoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLGkucmVwbGFjZT1uZXcgaSgicmVwbGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZCJ9KSxpLnJlcG9DbG9uZT1uZXcgaSgicmVwby1jbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZSJ9KSxpLnJlcG9Gb3JjZVB1c2g9bmV3IGkoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxpLnJlcG9QdWxsPW5ldyBpKCJyZXBvLXB1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDAifSksaS5yZXBvUHVzaD1uZXcgaSgicmVwby1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjQxIn0pLGkucmVwb3J0PW5ldyBpKCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksaS5yZXF1ZXN0Q2hhbmdlcz1uZXcgaSgicmVxdWVzdC1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQzIn0pLGkucm9ja2V0PW5ldyBpKCJyb2NrZXQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDQifSksaS5yb290Rm9sZGVyT3BlbmVkPW5ldyBpKCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksaS5yb290Rm9sZGVyPW5ldyBpKCJyb290LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NiJ9KSxpLnJzcz1uZXcgaSgicnNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ3In0pLGkucnVieT1uZXcgaSgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxpLnNhdmVBbGw9bmV3IGkoInNhdmUtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ5In0pLGkuc2F2ZUFzPW5ldyBpKCJzYXZlLWFzIix7Zm9udENoYXJhY3RlcjoiXFxlYjRhIn0pLGkuc2F2ZT1uZXcgaSgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxpLnNjcmVlbkZ1bGw9bmV3IGkoInNjcmVlbi1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRjIn0pLGkuc2NyZWVuTm9ybWFsPW5ldyBpKCJzY3JlZW4tbm9ybWFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRkIn0pLGkuc2VhcmNoU3RvcD1uZXcgaSgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksaS5zZXJ2ZXI9bmV3IGkoInNlcnZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MCJ9KSxpLnNldHRpbmdzR2Vhcj1uZXcgaSgic2V0dGluZ3MtZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MSJ9KSxpLnNldHRpbmdzPW5ldyBpKCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxpLnNoaWVsZD1uZXcgaSgic2hpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjUzIn0pLGkuc21pbGV5PW5ldyBpKCJzbWlsZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViNTQifSksaS5zb3J0UHJlY2VkZW5jZT1uZXcgaSgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLGkuc3BsaXRIb3Jpem9udGFsPW5ldyBpKCJzcGxpdC1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU2In0pLGkuc3BsaXRWZXJ0aWNhbD1uZXcgaSgic3BsaXQtdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTcifSksaS5zcXVpcnJlbD1uZXcgaSgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksaS5zdGFyRnVsbD1uZXcgaSgic3Rhci1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU5In0pLGkuc3RhckhhbGY9bmV3IGkoInN0YXItaGFsZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YSJ9KSxpLnN5bWJvbENsYXNzPW5ldyBpKCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksaS5zeW1ib2xDb2xvcj1uZXcgaSgic3ltYm9sLWNvbG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjVjIn0pLGkuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IGkoInN5bWJvbC1jdXN0b21jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbENvbnN0YW50PW5ldyBpKCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksaS5zeW1ib2xFbnVtTWVtYmVyPW5ldyBpKCJzeW1ib2wtZW51bS1tZW1iZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNWUifSksaS5zeW1ib2xGaWVsZD1uZXcgaSgic3ltYm9sLWZpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjVmIn0pLGkuc3ltYm9sRmlsZT1uZXcgaSgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksaS5zeW1ib2xJbnRlcmZhY2U9bmV3IGkoInN5bWJvbC1pbnRlcmZhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNjEifSksaS5zeW1ib2xLZXl3b3JkPW5ldyBpKCJzeW1ib2wta2V5d29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MiJ9KSxpLnN5bWJvbE1pc2M9bmV3IGkoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLGkuc3ltYm9sT3BlcmF0b3I9bmV3IGkoInN5bWJvbC1vcGVyYXRvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NCJ9KSxpLnN5bWJvbFByb3BlcnR5PW5ldyBpKCJzeW1ib2wtcHJvcGVydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2g9bmV3IGkoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLndyZW5jaFN1YmFjdGlvbj1uZXcgaSgid3JlbmNoLXN1YmFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLnN5bWJvbFNuaXBwZXQ9bmV3IGkoInN5bWJvbC1zbmlwcGV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY2In0pLGkudGFza2xpc3Q9bmV3IGkoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLGkudGVsZXNjb3BlPW5ldyBpKCJ0ZWxlc2NvcGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjgifSksaS50ZXh0U2l6ZT1uZXcgaSgidGV4dC1zaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYjY5In0pLGkudGhyZWVCYXJzPW5ldyBpKCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLGkudGh1bWJzZG93bj1uZXcgaSgidGh1bWJzZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YiJ9KSxpLnRodW1ic3VwPW5ldyBpKCJ0aHVtYnN1cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YyJ9KSxpLnRvb2xzPW5ldyBpKCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxpLnRyaWFuZ2xlRG93bj1uZXcgaSgidHJpYW5nbGUtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZSJ9KSxpLnRyaWFuZ2xlTGVmdD1uZXcgaSgidHJpYW5nbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZiJ9KSxpLnRyaWFuZ2xlUmlnaHQ9bmV3IGkoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLGkudHJpYW5nbGVVcD1uZXcgaSgidHJpYW5nbGUtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNzEifSksaS50d2l0dGVyPW5ldyBpKCJ0d2l0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjcyIn0pLGkudW5mb2xkPW5ldyBpKCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksaS51bmxvY2s9bmV3IGkoInVubG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NCJ9KSxpLnVubXV0ZT1uZXcgaSgidW5tdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc1In0pLGkudW52ZXJpZmllZD1uZXcgaSgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxpLnZlcmlmaWVkPW5ldyBpKCJ2ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NyJ9KSxpLnZlcnNpb25zPW5ldyBpKCJ2ZXJzaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OCJ9KSxpLnZtQWN0aXZlPW5ldyBpKCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksaS52bU91dGxpbmU9bmV3IGkoInZtLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViN2EifSksaS52bVJ1bm5pbmc9bmV3IGkoInZtLXJ1bm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViN2IifSksaS53YXRjaD1uZXcgaSgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksaS53aGl0ZXNwYWNlPW5ldyBpKCJ3aGl0ZXNwYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjdkIn0pLGkud2hvbGVXb3JkPW5ldyBpKCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLGkud2luZG93PW5ldyBpKCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksaS53b3JkV3JhcD1uZXcgaSgid29yZC13cmFwIix7Zm9udENoYXJhY3RlcjoiXFxlYjgwIn0pLGkuem9vbUluPW5ldyBpKCJ6b29tLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYjgxIn0pLGkuem9vbU91dD1uZXcgaSgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksaS5saXN0RmlsdGVyPW5ldyBpKCJsaXN0LWZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MyJ9KSxpLmxpc3RGbGF0PW5ldyBpKCJsaXN0LWZsYXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODQifSksaS5saXN0U2VsZWN0aW9uPW5ldyBpKCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLnNlbGVjdGlvbj1uZXcgaSgic2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLGkubGlzdFRyZWU9bmV3IGkoImxpc3QtdHJlZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NiJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb249bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODgifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdTdGFja2ZyYW1lQWN0aXZlPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxpLmRlYnVnU3RhY2tmcmFtZURvdD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksaS5kZWJ1Z1N0YWNrZnJhbWU9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z1N0YWNrZnJhbWVGb2N1c2VkPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWZvY3VzZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YyJ9KSxpLnN5bWJvbFN0cmluZz1uZXcgaSgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxpLmRlYnVnUmV2ZXJzZUNvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1yZXZlcnNlLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYjhlIn0pLGkuZGVidWdTdGVwQmFjaz1uZXcgaSgiZGVidWctc3RlcC1iYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjhmIn0pLGkuZGVidWdSZXN0YXJ0RnJhbWU9bmV3IGkoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksaS5jYWxsSW5jb21pbmc9bmV3IGkoImNhbGwtaW5jb21pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTIifSksaS5jYWxsT3V0Z29pbmc9bmV3IGkoImNhbGwtb3V0Z29pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTMifSksaS5tZW51PW5ldyBpKCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLGkuZXhwYW5kQWxsPW5ldyBpKCJleHBhbmQtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjk1In0pLGkuZmVlZGJhY2s9bmV3IGkoImZlZWRiYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjk2In0pLGkuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLGkudW5ncm91cEJ5UmVmVHlwZT1uZXcgaSgidW5ncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5OCJ9KSxpLmFjY291bnQ9bmV3IGkoImFjY291bnQiLHtmb250Q2hhcmFjdGVyOiJcXGViOTkifSksaS5iZWxsRG90PW5ldyBpKCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxpLmRlYnVnQ29uc29sZT1uZXcgaSgiZGVidWctY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YiJ9KSxpLmxpYnJhcnk9bmV3IGkoImxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViOWMifSksaS5vdXRwdXQ9bmV3IGkoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxpLnJ1bkFsbD1uZXcgaSgicnVuLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZSJ9KSxpLnN5bmNJZ25vcmVkPW5ldyBpKCJzeW5jLWlnbm9yZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWYifSksaS5waW5uZWQ9bmV3IGkoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxpLmdpdGh1YkludmVydGVkPW5ldyBpKCJnaXRodWItaW52ZXJ0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTEifSksaS5kZWJ1Z0FsdD1uZXcgaSgiZGVidWctYWx0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjkxIn0pLGkuc2VydmVyUHJvY2Vzcz1uZXcgaSgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksaS5zZXJ2ZXJFbnZpcm9ubWVudD1uZXcgaSgic2VydmVyLWVudmlyb25tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYmEzIn0pLGkucGFzcz1uZXcgaSgicGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLnN0b3BDaXJjbGU9bmV3IGkoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLGkucGxheUNpcmNsZT1uZXcgaSgicGxheS1jaXJjbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYTYifSksaS5yZWNvcmQ9bmV3IGkoInJlY29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNyJ9KSxpLmRlYnVnQWx0U21hbGw9bmV3IGkoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxpLnZtQ29ubmVjdD1uZXcgaSgidm0tY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOSJ9KSxpLmNsb3VkPW5ldyBpKCJjbG91ZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYSJ9KSxpLm1lcmdlPW5ldyBpKCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxpLmV4cG9ydEljb249bmV3IGkoImV4cG9ydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYyJ9KSxpLmdyYXBoTGVmdD1uZXcgaSgiZ3JhcGgtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZCJ9KSxpLm1hZ25ldD1uZXcgaSgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLGkubm90ZWJvb2s9bmV3IGkoIm5vdGVib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYmFmIn0pLGkucmVkbz1uZXcgaSgicmVkbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMCJ9KSxpLmNoZWNrQWxsPW5ldyBpKCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksaS5waW5uZWREaXJ0eT1uZXcgaSgicGlubmVkLWRpcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmIyIn0pLGkucGFzc0ZpbGxlZD1uZXcgaSgicGFzcy1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjMifSksaS5jaXJjbGVMYXJnZUZpbGxlZD1uZXcgaSgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxpLmNpcmNsZUxhcmdlT3V0bGluZT1uZXcgaSgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjUifSksaS5jb21iaW5lPW5ldyBpKCJjb21iaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkuZ2F0aGVyPW5ldyBpKCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksaS50YWJsZT1uZXcgaSgidGFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjcifSksaS52YXJpYWJsZUdyb3VwPW5ldyBpKCJ2YXJpYWJsZS1ncm91cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOCJ9KSxpLnR5cGVIaWVyYXJjaHk9bmV3IGkoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLGkudHlwZUhpZXJhcmNoeVN1Yj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3ViIix7Zm9udENoYXJhY3RlcjoiXFxlYmJhIn0pLGkudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBpKCJ0eXBlLWhpZXJhcmNoeS1zdXBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYiJ9KSxpLmdpdFB1bGxSZXF1ZXN0Q3JlYXRlPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxpLnJ1bkFib3ZlPW5ldyBpKCJydW4tYWJvdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmQifSksaS5ydW5CZWxvdz1uZXcgaSgicnVuLWJlbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYmJlIn0pLGkubm90ZWJvb2tUZW1wbGF0ZT1uZXcgaSgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksaS5kZWJ1Z1JlcnVuPW5ldyBpKCJkZWJ1Zy1yZXJ1biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMCJ9KSxpLndvcmtzcGFjZVRydXN0ZWQ9bmV3IGkoIndvcmtzcGFjZS10cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMxIn0pLGkud29ya3NwYWNlVW50cnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLGkud29ya3NwYWNlVW5zcGVjaWZpZWQ9bmV3IGkoIndvcmtzcGFjZS11bnNwZWNpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMyJ9KSxpLnRlcm1pbmFsQ21kPW5ldyBpKCJ0ZXJtaW5hbC1jbWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzQifSksaS50ZXJtaW5hbERlYmlhbj1uZXcgaSgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLGkudGVybWluYWxMaW51eD1uZXcgaSgidGVybWluYWwtbGludXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzYifSksaS50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IGkoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYzcifSksaS50ZXJtaW5hbFRtdXg9bmV3IGkoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksaS50ZXJtaW5hbFVidW50dT1uZXcgaSgidGVybWluYWwtdWJ1bnR1Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM5In0pLGkudGVybWluYWxCYXNoPW5ldyBpKCJ0ZXJtaW5hbC1iYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYmNhIn0pLGkuYXJyb3dTd2FwPW5ldyBpKCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLGkuY29weT1uZXcgaSgiY29weSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYyJ9KSxpLnBlcnNvbkFkZD1uZXcgaSgicGVyc29uLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZCJ9KSxpLmZpbHRlckZpbGxlZD1uZXcgaSgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxpLndhbmQ9bmV3IGkoIndhbmQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2YifSksaS5kZWJ1Z0xpbmVCeUxpbmU9bmV3IGkoImRlYnVnLWxpbmUtYnktbGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMCJ9KSxpLmluc3BlY3Q9bmV3IGkoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksaS5sYXllcnM9bmV3IGkoImxheWVycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMiJ9KSxpLmxheWVyc0RvdD1uZXcgaSgibGF5ZXJzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMyJ9KSxpLmxheWVyc0FjdGl2ZT1uZXcgaSgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxpLmNvbXBhc3M9bmV3IGkoImNvbXBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViZDUifSksaS5jb21wYXNzRG90PW5ldyBpKCJjb21wYXNzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNiJ9KSxpLmNvbXBhc3NBY3RpdmU9bmV3IGkoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLGkuYXp1cmU9bmV3IGkoImF6dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ4In0pLGkuaXNzdWVEcmFmdD1uZXcgaSgiaXNzdWUtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZDkifSksaS5naXRQdWxsUmVxdWVzdENsb3NlZD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksaS5naXRQdWxsUmVxdWVzdERyYWZ0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRiIn0pLGkuZGVidWdBbGw9bmV3IGkoImRlYnVnLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYyJ9KSxpLmRlYnVnQ292ZXJhZ2U9bmV3IGkoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLGkucnVuRXJyb3JzPW5ldyBpKCJydW4tZXJyb3JzIix7Zm9udENoYXJhY3RlcjoiXFxlYmRlIn0pLGkuZm9sZGVyTGlicmFyeT1uZXcgaSgiZm9sZGVyLWxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZGYifSksaS5kZWJ1Z0NvbnRpbnVlU21hbGw9bmV3IGkoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLGkuYmVha2VyU3RvcD1uZXcgaSgiYmVha2VyLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViZTEifSksaS5ncmFwaExpbmU9bmV3IGkoImdyYXBoLWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZTIifSksaS5ncmFwaFNjYXR0ZXI9bmV3IGkoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksaS5waWVDaGFydD1uZXcgaSgicGllLWNoYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU0In0pLGkuYnJhY2tldD1uZXcgaSgiYnJhY2tldCIsaS5qc29uLmRlZmluaXRpb24pLGkuYnJhY2tldERvdD1uZXcgaSgiYnJhY2tldC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZTUifSksaS5icmFja2V0RXJyb3I9bmV3IGkoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksaS5sb2NrU21hbGw9bmV3IGkoImxvY2stc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZTcifSksaS5henVyZURldm9wcz1uZXcgaSgiYXp1cmUtZGV2b3BzIix7Zm9udENoYXJhY3RlcjoiXFxlYmU4In0pLGkudmVyaWZpZWRGaWxsZWQ9bmV3IGkoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxpLm5ld0xpbmU9bmV3IGkoIm5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZWEifSksaS5sYXlvdXQ9bmV3IGkoImxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYiJ9KSxpLmxheW91dEFjdGl2aXR5YmFyTGVmdD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksaS5sYXlvdXRBY3Rpdml0eWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWQifSksaS5sYXlvdXRQYW5lbExlZnQ9bmV3IGkoImxheW91dC1wYW5lbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVlIn0pLGkubGF5b3V0UGFuZWxDZW50ZXI9bmV3IGkoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksaS5sYXlvdXRQYW5lbEp1c3RpZnk9bmV3IGkoImxheW91dC1wYW5lbC1qdXN0aWZ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYwIn0pLGkubGF5b3V0UGFuZWxSaWdodD1uZXcgaSgibGF5b3V0LXBhbmVsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYxIn0pLGkubGF5b3V0UGFuZWw9bmV3IGkoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxpLmxheW91dFNpZGViYXJMZWZ0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYzIn0pLGkubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNCJ9KSxpLmxheW91dFN0YXR1c2Jhcj1uZXcgaSgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxpLmxheW91dE1lbnViYXI9bmV3IGkoImxheW91dC1tZW51YmFyIix7Zm9udENoYXJhY3RlcjoiXFxlYmY2In0pLGkubGF5b3V0Q2VudGVyZWQ9bmV3IGkoImxheW91dC1jZW50ZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNyJ9KSxpLnRhcmdldD1uZXcgaSgidGFyZ2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY4In0pLGkuaW5kZW50PW5ldyBpKCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksaS5yZWNvcmRTbWFsbD1uZXcgaSgicmVjb3JkLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZhIn0pLGkuZXJyb3JTbWFsbD1uZXcgaSgiZXJyb3Itc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmIifSksaS5hcnJvd0NpcmNsZURvd249bmV3IGkoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLGkuYXJyb3dDaXJjbGVMZWZ0PW5ldyBpKCJhcnJvdy1jaXJjbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZCJ9KSxpLmFycm93Q2lyY2xlUmlnaHQ9bmV3IGkoImFycm93LWNpcmNsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZSJ9KSxpLmFycm93Q2lyY2xlVXA9bmV3IGkoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxpLmRpYWxvZ0Vycm9yPW5ldyBpKCJkaWFsb2ctZXJyb3IiLGkuZXJyb3IuZGVmaW5pdGlvbiksaS5kaWFsb2dXYXJuaW5nPW5ldyBpKCJkaWFsb2ctd2FybmluZyIsaS53YXJuaW5nLmRlZmluaXRpb24pLGkuZGlhbG9nSW5mbz1uZXcgaSgiZGlhbG9nLWluZm8iLGkuaW5mby5kZWZpbml0aW9uKSxpLmRpYWxvZ0Nsb3NlPW5ldyBpKCJkaWFsb2ctY2xvc2UiLGkuY2xvc2UuZGVmaW5pdGlvbiksaS50cmVlSXRlbUV4cGFuZGVkPW5ldyBpKCJ0cmVlLWl0ZW0tZXhwYW5kZWQiLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyT25UeXBlT249bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLGkubGlzdEZpbHRlci5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb2ZmIixpLmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyQ2xlYXI9bmV3IGkoInRyZWUtZmlsdGVyLWNsZWFyIixpLmNsb3NlLmRlZmluaXRpb24pLGkudHJlZUl0ZW1Mb2FkaW5nPW5ldyBpKCJ0cmVlLWl0ZW0tbG9hZGluZyIsaS5sb2FkaW5nLmRlZmluaXRpb24pLGkubWVudVNlbGVjdGlvbj1uZXcgaSgibWVudS1zZWxlY3Rpb24iLGkuY2hlY2suZGVmaW5pdGlvbiksaS5tZW51U3VibWVudT1uZXcgaSgibWVudS1zdWJtZW51IixpLmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxpLm1lbnVCYXJNb3JlPW5ldyBpKCJtZW51YmFyLW1vcmUiLGkubW9yZS5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IGkoInNjcm9sbGJhci1idXR0b24tbGVmdCIsaS50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsaS50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IGkoInNjcm9sbGJhci1idXR0b24tdXAiLGkudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IGkoInNjcm9sbGJhci1idXR0b24tZG93biIsaS50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksaS50b29sQmFyTW9yZT1uZXcgaSgidG9vbGJhci1tb3JlIixpLm1vcmUuZGVmaW5pdGlvbiksaS5xdWlja0lucHV0QmFjaz1uZXcgaSgicXVpY2staW5wdXQtYmFjayIsaS5hcnJvd0xlZnQuZGVmaW5pdGlvbik7e3ZhciBTOyhTPUlpPUlpfHx7fSkuaWNvbk5hbWVTZWdtZW50PSJbQS1aYS16MC05XSsiLFMuaWNvbk5hbWVFeHByZXNzaW9uPSJbQS1aYS16MC05LV0rIixTLmljb25Nb2RpZmllckV4cHJlc3Npb249In5bQS1aYS16XSsiLFMuaWNvbk5hbWVDaGFyYWN0ZXI9IltBLVphLXowLTl+LV0iO2NvbnN0IFRhPW5ldyBSZWdFeHAoYF4oJHtTLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7Uy5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIEd0KGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtlPVRhLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIEd0KGkuZXJyb3IpO2xldFssdCxuXT1lO2NvbnN0IHI9WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiBuJiZyLnB1c2goImNvZGljb24tbW9kaWZpZXItIituLnN1YnN0cigxKSkscn1TLmFzQ2xhc3NOYW1lQXJyYXk9R3QsUy5hc0NsYXNzTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gR3QoZSkuam9pbigiICIpfSxTLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK0d0KGUpLmpvaW4oIi4iKX19Y2xhc3MgJHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1ufXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgSnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIFh0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fZW5jb2RlZFRva2VuaXphdGlvblJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19e0g9e307Y29uc3Qga2E9bmV3IE1hcCxTYT0oa2Euc2V0KDAsaS5zeW1ib2xNZXRob2QpLGthLnNldCgxLGkuc3ltYm9sRnVuY3Rpb24pLGthLnNldCgyLGkuc3ltYm9sQ29uc3RydWN0b3IpLGthLnNldCgzLGkuc3ltYm9sRmllbGQpLGthLnNldCg0LGkuc3ltYm9sVmFyaWFibGUpLGthLnNldCg1LGkuc3ltYm9sQ2xhc3MpLGthLnNldCg2LGkuc3ltYm9sU3RydWN0KSxrYS5zZXQoNyxpLnN5bWJvbEludGVyZmFjZSksa2Euc2V0KDgsaS5zeW1ib2xNb2R1bGUpLGthLnNldCg5LGkuc3ltYm9sUHJvcGVydHkpLGthLnNldCgxMCxpLnN5bWJvbEV2ZW50KSxrYS5zZXQoMTEsaS5zeW1ib2xPcGVyYXRvciksa2Euc2V0KDEyLGkuc3ltYm9sVW5pdCksa2Euc2V0KDEzLGkuc3ltYm9sVmFsdWUpLGthLnNldCgxNSxpLnN5bWJvbEVudW0pLGthLnNldCgxNCxpLnN5bWJvbENvbnN0YW50KSxrYS5zZXQoMTUsaS5zeW1ib2xFbnVtKSxrYS5zZXQoMTYsaS5zeW1ib2xFbnVtTWVtYmVyKSxrYS5zZXQoMTcsaS5zeW1ib2xLZXl3b3JkKSxrYS5zZXQoMjcsaS5zeW1ib2xTbmlwcGV0KSxrYS5zZXQoMTgsaS5zeW1ib2xUZXh0KSxrYS5zZXQoMTksaS5zeW1ib2xDb2xvciksa2Euc2V0KDIwLGkuc3ltYm9sRmlsZSksa2Euc2V0KDIxLGkuc3ltYm9sUmVmZXJlbmNlKSxrYS5zZXQoMjIsaS5zeW1ib2xDdXN0b21Db2xvciksa2Euc2V0KDIzLGkuc3ltYm9sRm9sZGVyKSxrYS5zZXQoMjQsaS5zeW1ib2xUeXBlUGFyYW1ldGVyKSxrYS5zZXQoMjUsaS5hY2NvdW50KSxrYS5zZXQoMjYsaS5pc3N1ZXMpLEgudG9JY29uPWZ1bmN0aW9uKGUpe2xldCB0PWthLmdldChlKTtyZXR1cm4gdHx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgQ29tcGxldGlvbkl0ZW1LaW5kICIrZSksdD1pLnN5bWJvbFByb3BlcnR5KSx0fSxuZXcgTWFwKTtTYS5zZXQoIm1ldGhvZCIsMCksU2Euc2V0KCJmdW5jdGlvbiIsMSksU2Euc2V0KCJjb25zdHJ1Y3RvciIsMiksU2Euc2V0KCJmaWVsZCIsMyksU2Euc2V0KCJ2YXJpYWJsZSIsNCksU2Euc2V0KCJjbGFzcyIsNSksU2Euc2V0KCJzdHJ1Y3QiLDYpLFNhLnNldCgiaW50ZXJmYWNlIiw3KSxTYS5zZXQoIm1vZHVsZSIsOCksU2Euc2V0KCJwcm9wZXJ0eSIsOSksU2Euc2V0KCJldmVudCIsMTApLFNhLnNldCgib3BlcmF0b3IiLDExKSxTYS5zZXQoInVuaXQiLDEyKSxTYS5zZXQoInZhbHVlIiwxMyksU2Euc2V0KCJjb25zdGFudCIsMTQpLFNhLnNldCgiZW51bSIsMTUpLFNhLnNldCgiZW51bS1tZW1iZXIiLDE2KSxTYS5zZXQoImVudW1NZW1iZXIiLDE2KSxTYS5zZXQoImtleXdvcmQiLDE3KSxTYS5zZXQoInNuaXBwZXQiLDI3KSxTYS5zZXQoInRleHQiLDE4KSxTYS5zZXQoImNvbG9yIiwxOSksU2Euc2V0KCJmaWxlIiwyMCksU2Euc2V0KCJyZWZlcmVuY2UiLDIxKSxTYS5zZXQoImN1c3RvbWNvbG9yIiwyMiksU2Euc2V0KCJmb2xkZXIiLDIzKSxTYS5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksU2Euc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksU2Euc2V0KCJhY2NvdW50IiwyNSksU2Euc2V0KCJpc3N1ZSIsMjYpLEguZnJvbVN0cmluZz1mdW5jdGlvbihlLHQpe2xldCBuPVNhLmdldChlKTtyZXR1cm4gbj12b2lkIDAhPT1ufHx0P246OX19e2U9e307Y29uc3QgQ2E9bmV3IE1hcDtDYS5zZXQoMCxpLnN5bWJvbEZpbGUpLENhLnNldCgxLGkuc3ltYm9sTW9kdWxlKSxDYS5zZXQoMixpLnN5bWJvbE5hbWVzcGFjZSksQ2Euc2V0KDMsaS5zeW1ib2xQYWNrYWdlKSxDYS5zZXQoNCxpLnN5bWJvbENsYXNzKSxDYS5zZXQoNSxpLnN5bWJvbE1ldGhvZCksQ2Euc2V0KDYsaS5zeW1ib2xQcm9wZXJ0eSksQ2Euc2V0KDcsaS5zeW1ib2xGaWVsZCksQ2Euc2V0KDgsaS5zeW1ib2xDb25zdHJ1Y3RvciksQ2Euc2V0KDksaS5zeW1ib2xFbnVtKSxDYS5zZXQoMTAsaS5zeW1ib2xJbnRlcmZhY2UpLENhLnNldCgxMSxpLnN5bWJvbEZ1bmN0aW9uKSxDYS5zZXQoMTIsaS5zeW1ib2xWYXJpYWJsZSksQ2Euc2V0KDEzLGkuc3ltYm9sQ29uc3RhbnQpLENhLnNldCgxNCxpLnN5bWJvbFN0cmluZyksQ2Euc2V0KDE1LGkuc3ltYm9sTnVtYmVyKSxDYS5zZXQoMTYsaS5zeW1ib2xCb29sZWFuKSxDYS5zZXQoMTcsaS5zeW1ib2xBcnJheSksQ2Euc2V0KDE4LGkuc3ltYm9sT2JqZWN0KSxDYS5zZXQoMTksaS5zeW1ib2xLZXkpLENhLnNldCgyMCxpLnN5bWJvbE51bGwpLENhLnNldCgyMSxpLnN5bWJvbEVudW1NZW1iZXIpLENhLnNldCgyMixpLnN5bWJvbFN0cnVjdCksQ2Euc2V0KDIzLGkuc3ltYm9sRXZlbnQpLENhLnNldCgyNCxpLnN5bWJvbE9wZXJhdG9yKSxDYS5zZXQoMjUsaS5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgdD1DYS5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9fShyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJzdHJpbmciPT10eXBlb2YgZS5pZCYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlKX0sbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IHRlLHRoaXMub25EaWRDaGFuZ2U9dGhpcy5fb25EaWRDaGFuZ2UuZXZlbnQsdGhpcy5fY29sb3JNYXA9bnVsbH1maXJlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLHQpe3JldHVybiB0aGlzLl9tYXAuc2V0KGUsdCksdGhpcy5maXJlKFtlXSksXygoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KX1yZWdpc3RlckZhY3RvcnkodCxlKXt2YXIgbjtudWxsIT09KG49dGhpcy5fZmFjdG9yaWVzLmdldCh0KSkmJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpO2NvbnN0IHI9bmV3IGp0KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldCh0LHIpLF8oKCk9Pntjb25zdCBlPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7ZSYmZT09PXImJih0aGlzLl9mYWN0b3JpZXMuZGVsZXRlKHQpLGUuZGlzcG9zZSgpKX0pfWdldE9yQ3JlYXRlKG4pe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9dGhpcy5nZXQobik7aWYoZSlyZXR1cm4gZTtjb25zdCB0PXRoaXMuX2ZhY3Rvcmllcy5nZXQobik7cmV0dXJuIXR8fHQuaXNSZXNvbHZlZD9udWxsOih5aWVsZCB0LnJlc29sdmUoKSx0aGlzLmdldChuKSl9KX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl8fG51bGx9aXNSZXNvbHZlZChlKXtpZih0aGlzLmdldChlKSlyZXR1cm4hMDtlPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIShlJiYhZS5pc1Jlc29sdmVkKX1zZXRDb2xvck1hcChlKXt0aGlzLl9jb2xvck1hcD1lLHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6QXJyYXkuZnJvbSh0aGlzLl9tYXAua2V5cygpKSxjaGFuZ2VkQ29sb3JNYXA6ITB9KX1nZXRDb2xvck1hcCgpe3JldHVybiB0aGlzLl9jb2xvck1hcH1nZXREZWZhdWx0QmFja2dyb3VuZCgpe3JldHVybiB0aGlzLl9jb2xvck1hcCYmMjx0aGlzLl9jb2xvck1hcC5sZW5ndGg/dGhpcy5fY29sb3JNYXBbMl06bnVsbH19LCh0PUJuPUJufHx7fSlbdC5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0Iix0W3QuVW5rbm93bj0wXT0iVW5rbm93biIsdFt0LkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIix0W3QuVGFiPTJdPSJUYWIiLHRbdC5FbnRlcj0zXT0iRW50ZXIiLHRbdC5TaGlmdD00XT0iU2hpZnQiLHRbdC5DdHJsPTVdPSJDdHJsIix0W3QuQWx0PTZdPSJBbHQiLHRbdC5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIix0W3QuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIix0W3QuRXNjYXBlPTldPSJFc2NhcGUiLHRbdC5TcGFjZT0xMF09IlNwYWNlIix0W3QuUGFnZVVwPTExXT0iUGFnZVVwIix0W3QuUGFnZURvd249MTJdPSJQYWdlRG93biIsdFt0LkVuZD0xM109IkVuZCIsdFt0LkhvbWU9MTRdPSJIb21lIix0W3QuTGVmdEFycm93PTE1XT0iTGVmdEFycm93Iix0W3QuVXBBcnJvdz0xNl09IlVwQXJyb3ciLHRbdC5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsdFt0LkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsdFt0Lkluc2VydD0xOV09Ikluc2VydCIsdFt0LkRlbGV0ZT0yMF09IkRlbGV0ZSIsdFt0LkRpZ2l0MD0yMV09IkRpZ2l0MCIsdFt0LkRpZ2l0MT0yMl09IkRpZ2l0MSIsdFt0LkRpZ2l0Mj0yM109IkRpZ2l0MiIsdFt0LkRpZ2l0Mz0yNF09IkRpZ2l0MyIsdFt0LkRpZ2l0ND0yNV09IkRpZ2l0NCIsdFt0LkRpZ2l0NT0yNl09IkRpZ2l0NSIsdFt0LkRpZ2l0Nj0yN109IkRpZ2l0NiIsdFt0LkRpZ2l0Nz0yOF09IkRpZ2l0NyIsdFt0LkRpZ2l0OD0yOV09IkRpZ2l0OCIsdFt0LkRpZ2l0OT0zMF09IkRpZ2l0OSIsdFt0LktleUE9MzFdPSJLZXlBIix0W3QuS2V5Qj0zMl09IktleUIiLHRbdC5LZXlDPTMzXT0iS2V5QyIsdFt0LktleUQ9MzRdPSJLZXlEIix0W3QuS2V5RT0zNV09IktleUUiLHRbdC5LZXlGPTM2XT0iS2V5RiIsdFt0LktleUc9MzddPSJLZXlHIix0W3QuS2V5SD0zOF09IktleUgiLHRbdC5LZXlJPTM5XT0iS2V5SSIsdFt0LktleUo9NDBdPSJLZXlKIix0W3QuS2V5Sz00MV09IktleUsiLHRbdC5LZXlMPTQyXT0iS2V5TCIsdFt0LktleU09NDNdPSJLZXlNIix0W3QuS2V5Tj00NF09IktleU4iLHRbdC5LZXlPPTQ1XT0iS2V5TyIsdFt0LktleVA9NDZdPSJLZXlQIix0W3QuS2V5UT00N109IktleVEiLHRbdC5LZXlSPTQ4XT0iS2V5UiIsdFt0LktleVM9NDldPSJLZXlTIix0W3QuS2V5VD01MF09IktleVQiLHRbdC5LZXlVPTUxXT0iS2V5VSIsdFt0LktleVY9NTJdPSJLZXlWIix0W3QuS2V5Vz01M109IktleVciLHRbdC5LZXlYPTU0XT0iS2V5WCIsdFt0LktleVk9NTVdPSJLZXlZIix0W3QuS2V5Wj01Nl09IktleVoiLHRbdC5NZXRhPTU3XT0iTWV0YSIsdFt0LkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLHRbdC5GMT01OV09IkYxIix0W3QuRjI9NjBdPSJGMiIsdFt0LkYzPTYxXT0iRjMiLHRbdC5GND02Ml09IkY0Iix0W3QuRjU9NjNdPSJGNSIsdFt0LkY2PTY0XT0iRjYiLHRbdC5GNz02NV09IkY3Iix0W3QuRjg9NjZdPSJGOCIsdFt0LkY5PTY3XT0iRjkiLHRbdC5GMTA9NjhdPSJGMTAiLHRbdC5GMTE9NjldPSJGMTEiLHRbdC5GMTI9NzBdPSJGMTIiLHRbdC5GMTM9NzFdPSJGMTMiLHRbdC5GMTQ9NzJdPSJGMTQiLHRbdC5GMTU9NzNdPSJGMTUiLHRbdC5GMTY9NzRdPSJGMTYiLHRbdC5GMTc9NzVdPSJGMTciLHRbdC5GMTg9NzZdPSJGMTgiLHRbdC5GMTk9NzddPSJGMTkiLHRbdC5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsdFt0LlNjcm9sbExvY2s9NzldPSJTY3JvbGxMb2NrIix0W3QuU2VtaWNvbG9uPTgwXT0iU2VtaWNvbG9uIix0W3QuRXF1YWw9ODFdPSJFcXVhbCIsdFt0LkNvbW1hPTgyXT0iQ29tbWEiLHRbdC5NaW51cz04M109Ik1pbnVzIix0W3QuUGVyaW9kPTg0XT0iUGVyaW9kIix0W3QuU2xhc2g9ODVdPSJTbGFzaCIsdFt0LkJhY2txdW90ZT04Nl09IkJhY2txdW90ZSIsdFt0LkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLHRbdC5CYWNrc2xhc2g9ODhdPSJCYWNrc2xhc2giLHRbdC5CcmFja2V0UmlnaHQ9ODldPSJCcmFja2V0UmlnaHQiLHRbdC5RdW90ZT05MF09IlF1b3RlIix0W3QuT0VNXzg9OTFdPSJPRU1fOCIsdFt0LkludGxCYWNrc2xhc2g9OTJdPSJJbnRsQmFja3NsYXNoIix0W3QuTnVtcGFkMD05M109Ik51bXBhZDAiLHRbdC5OdW1wYWQxPTk0XT0iTnVtcGFkMSIsdFt0Lk51bXBhZDI9OTVdPSJOdW1wYWQyIix0W3QuTnVtcGFkMz05Nl09Ik51bXBhZDMiLHRbdC5OdW1wYWQ0PTk3XT0iTnVtcGFkNCIsdFt0Lk51bXBhZDU9OThdPSJOdW1wYWQ1Iix0W3QuTnVtcGFkNj05OV09Ik51bXBhZDYiLHRbdC5OdW1wYWQ3PTEwMF09Ik51bXBhZDciLHRbdC5OdW1wYWQ4PTEwMV09Ik51bXBhZDgiLHRbdC5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLHRbdC5OdW1wYWRNdWx0aXBseT0xMDNdPSJOdW1wYWRNdWx0aXBseSIsdFt0Lk51bXBhZEFkZD0xMDRdPSJOdW1wYWRBZGQiLHRbdC5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLHRbdC5OdW1wYWRTdWJ0cmFjdD0xMDZdPSJOdW1wYWRTdWJ0cmFjdCIsdFt0Lk51bXBhZERlY2ltYWw9MTA3XT0iTnVtcGFkRGVjaW1hbCIsdFt0Lk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLHRbdC5LRVlfSU5fQ09NUE9TSVRJT049MTA5XT0iS0VZX0lOX0NPTVBPU0lUSU9OIix0W3QuQUJOVF9DMT0xMTBdPSJBQk5UX0MxIix0W3QuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIix0W3QuQXVkaW9Wb2x1bWVNdXRlPTExMl09IkF1ZGlvVm9sdW1lTXV0ZSIsdFt0LkF1ZGlvVm9sdW1lVXA9MTEzXT0iQXVkaW9Wb2x1bWVVcCIsdFt0LkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLHRbdC5Ccm93c2VyU2VhcmNoPTExNV09IkJyb3dzZXJTZWFyY2giLHRbdC5Ccm93c2VySG9tZT0xMTZdPSJCcm93c2VySG9tZSIsdFt0LkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIix0W3QuQnJvd3NlckZvcndhcmQ9MTE4XT0iQnJvd3NlckZvcndhcmQiLHRbdC5NZWRpYVRyYWNrTmV4dD0xMTldPSJNZWRpYVRyYWNrTmV4dCIsdFt0Lk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLHRbdC5NZWRpYVN0b3A9MTIxXT0iTWVkaWFTdG9wIix0W3QuTWVkaWFQbGF5UGF1c2U9MTIyXT0iTWVkaWFQbGF5UGF1c2UiLHRbdC5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsdFt0LkxhdW5jaE1haWw9MTI0XT0iTGF1bmNoTWFpbCIsdFt0LkxhdW5jaEFwcDI9MTI1XT0iTGF1bmNoQXBwMiIsdFt0LkNsZWFyPTEyNl09IkNsZWFyIix0W3QuTUFYX1ZBTFVFPTEyN109Ik1BWF9WQUxVRSIsKGE9bj1ufHx7fSlbYS5UcmFjZT0wXT0iVHJhY2UiLGFbYS5EZWJ1Zz0xXT0iRGVidWciLGFbYS5JbmZvPTJdPSJJbmZvIixhW2EuV2FybmluZz0zXT0iV2FybmluZyIsYVthLkVycm9yPTRdPSJFcnJvciIsYVthLkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsYVthLk9mZj02XT0iT2ZmIiwoUz0kbj0kbnx8e30pW1MuUGFyYWdyYXBoPTBdPSJQYXJhZ3JhcGgiLFNbUy5CcmVhaz0xXT0iQnJlYWsiLChlPWZyPWZyfHx7fSlbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IiLChyPXdyPXdyfHx7fSlbci5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLHJbci5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIiwoYT1hcj1hcnx8e30pW2EuTFRSPTBdPSJMVFIiLGFbYS5SVEw9MV09IlJUTCI7Y2xhc3MgWXR7Y29uc3RydWN0b3IoKXt0aGlzW0J0XT0iTGlua2VkTWFwIix0aGlzLl9tYXA9bmV3IE1hcCx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGU9MH1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZSsrfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5faGVhZCYmIXRoaXMuX3RhaWx9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1nZXQgZmlyc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX2hlYWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWdldCBsYXN0KCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLl90YWlsKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZSl9Z2V0KGUsdD0wKXtlPXRoaXMuX21hcC5nZXQoZSk7aWYoZSlyZXR1cm4gMCE9PXQmJnRoaXMudG91Y2goZSx0KSxlLnZhbHVlfXNldChlLHQsbj0wKXtsZXQgcj10aGlzLl9tYXAuZ2V0KGUpO2lmKHIpci52YWx1ZT10LDAhPT1uJiZ0aGlzLnRvdWNoKHIsbik7ZWxzZXtzd2l0Y2gocj17a2V5OmUsdmFsdWU6dCxuZXh0OnZvaWQgMCxwcmV2aW91czp2b2lkIDB9LG4pe2Nhc2UgMDp0aGlzLmFkZEl0ZW1MYXN0KHIpO2JyZWFrO2Nhc2UgMTp0aGlzLmFkZEl0ZW1GaXJzdChyKTticmVhaztkZWZhdWx0OnRoaXMuYWRkSXRlbUxhc3Qocil9dGhpcy5fbWFwLnNldChlLHIpLHRoaXMuX3NpemUrK31yZXR1cm4gdGhpc31kZWxldGUoZSl7cmV0dXJuISF0aGlzLnJlbW92ZShlKX1yZW1vdmUoZSl7dmFyIHQ9dGhpcy5fbWFwLmdldChlKTtpZih0KXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMucmVtb3ZlSXRlbSh0KSx0aGlzLl9zaXplLS0sdC52YWx1ZX1zaGlmdCgpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3ZhciBlPXRoaXMuX2hlYWQ7cmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZS5rZXkpLHRoaXMucmVtb3ZlSXRlbShlKSx0aGlzLl9zaXplLS0sZS52YWx1ZX19Zm9yRWFjaChlLHQpe3ZhciBuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Zm9yKDtyOyl7aWYoKHQ/ZS5iaW5kKHQpOmUpKHIudmFsdWUsci5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3I9ci5uZXh0fX1rZXlzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpyLmtleSxkb25lOiExfSxyPXIubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9dmFsdWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpyLnZhbHVlLGRvbmU6ITF9LHI9ci5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX1lbnRyaWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpbci5rZXksci52YWx1ZV0sZG9uZTohMX0scj1yLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfVsoQnQ9U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQobil7aWYoIShuPj10aGlzLnNpemUpKWlmKDAhPT1uKXtsZXQgZT10aGlzLl9oZWFkLHQ9dGhpcy5zaXplO2Zvcig7ZSYmdD5uOyl0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSxlPWUubmV4dCx0LS07dGhpcy5faGVhZD1lLHRoaXMuX3NpemU9dCxlJiYoZS5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9ZWxzZSB0aGlzLmNsZWFyKCl9YWRkSXRlbUZpcnN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lfWVsc2UgdGhpcy5fdGFpbD1lO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWFkZEl0ZW1MYXN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lfWVsc2UgdGhpcy5faGVhZD1lO3RoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0oZSl7aWYoZT09PXRoaXMuX2hlYWQmJmU9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYoZT09PXRoaXMuX2hlYWQpe2lmKCFlLm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9ZS5uZXh0fWVsc2UgaWYoZT09PXRoaXMuX3RhaWwpe2lmKCFlLnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPWUucHJldmlvdXN9ZWxzZXtjb25zdCB0PWUubmV4dCxuPWUucHJldmlvdXM7aWYoIXR8fCFuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7KHQucHJldmlvdXM9bikubmV4dD10fWUubmV4dD12b2lkIDAsZS5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaChlLHQpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKDE9PT10fHwyPT09dClpZigxPT09dCl7aWYoZSE9PXRoaXMuX2hlYWQpe2NvbnN0IG49ZS5uZXh0LHI9ZS5wcmV2aW91cztlPT09dGhpcy5fdGFpbD8oci5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXIpOihuLnByZXZpb3VzPXIpLm5leHQ9bixlLnByZXZpb3VzPXZvaWQgMCxlLm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPWUsdGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9fWVsc2UgaWYoMj09PXQmJmUhPT10aGlzLl90YWlsKXtjb25zdCBpPWUubmV4dCxhPWUucHJldmlvdXM7ZT09PXRoaXMuX2hlYWQ/KGkucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9aSk6KGkucHJldmlvdXM9YSkubmV4dD1pLGUubmV4dD12b2lkIDAsZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lLHRoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfX10b0pTT04oKXtjb25zdCBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goKGUsdCk9PntuLnB1c2goW3QsZV0pfSksbn1mcm9tSlNPTihlKXt0aGlzLmNsZWFyKCk7Zm9yKHZhclt0LG5db2YgZSl0aGlzLnNldCh0LG4pfX1mdW5jdGlvbiBRdChlLHQsbil7aWYoIW58fG4ubGVuZ3RoPHQubGVuZ3RoKXJldHVybiBudWxsO2xldCByO3ZhciBpLGE7cmV0dXJuKHI9ZT8oZT1uLGE9KGk9dCkubGVuZ3RoLCEoaS5sZW5ndGg+ZS5sZW5ndGgpJiYwPT09YWUoZSxpLDAsYSkpOjA9PT1uLmluZGV4T2YodCkpPzA8dC5sZW5ndGg/W3tzdGFydDowLGVuZDp0Lmxlbmd0aH1dOltdOm51bGx9UXQuYmluZCh2b2lkIDAsITEpLFF0LmJpbmQodm9pZCAwLCEwKTtjb25zdCBadD1uZXcgU2V0OyIoKVtde308PmAnXCItLzs6LC4/ISIuc3BsaXQoIiIpLmZvckVhY2goZT0+WnQuYWRkKGUuY2hhckNvZGVBdCgwKSkpLG5ldyBjbGFzcyBleHRlbmRzIFl0e2NvbnN0cnVjdG9yKGUsdD0xKXtzdXBlcigpLHRoaXMuX2xpbWl0PWUsdGhpcy5fcmF0aW89TWF0aC5taW4oTWF0aC5tYXgoMCx0KSwxKX1nZXQgbGltaXQoKXtyZXR1cm4gdGhpcy5fbGltaXR9c2V0IGxpbWl0KGUpe3RoaXMuX2xpbWl0PWUsdGhpcy5jaGVja1RyaW0oKX1nZXQoZSx0PTIpe3JldHVybiBzdXBlci5nZXQoZSx0KX1wZWVrKGUpe3JldHVybiBzdXBlci5nZXQoZSwwKX1zZXQoZSx0KXtyZXR1cm4gc3VwZXIuc2V0KGUsdCwyKSx0aGlzLmNoZWNrVHJpbSgpLHRoaXN9Y2hlY2tUcmltKCl7dGhpcy5zaXplPnRoaXMuX2xpbWl0JiZ0aGlzLnRyaW1PbGQoTWF0aC5yb3VuZCh0aGlzLl9saW1pdCp0aGlzLl9yYXRpbykpfX0oMWU0KTtmdW5jdGlvbiBlbigpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKW5bZV09MDtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXQucHVzaChuLnNsaWNlKDApKTtyZXR1cm4gdH1mdW5jdGlvbiB0bih0KXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKW5bZV09MDtyZXR1cm4gbn10bigyNTYpLHRuKDI1NiksZW4oKSxlbigpLGVuKCk7dmFyIG5uLHJuLGFuLFM9bmV3IFJlZ0V4cChgXFwkXFwoJHtJaS5pY29uTmFtZUV4cHJlc3Npb259KD86JHtJaS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/XFwpYCwiZyIpO25ldyBSZWdFeHAoSWkuaWNvbk5hbWVDaGFyYWN0ZXIpO2NvbnN0IG9uPW5ldyBSZWdFeHAoIihcXFxcKT8iK1Muc291cmNlLCJnIik7bmV3IFJlZ0V4cCgiXFxcXCIrUy5zb3VyY2UsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtTLnNvdXJjZX0oXFxzKT9gLCJnIik7Y2xhc3Mgc257Y29uc3RydWN0b3IoZT0iIix0PSExKXtpZih0aGlzLnZhbHVlPWUsInN0cmluZyIhPXR5cGVvZiB0aGlzLnZhbHVlKXRocm93KGU9InZhbHVlIik/bmV3IEVycm9yKCJJbGxlZ2FsIGFyZ3VtZW50OiAiK2UpOm5ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudCIpOyJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuaXNUcnVzdGVkPXQsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz0hMSx0aGlzLnN1cHBvcnRIdG1sPSExKToodGhpcy5pc1RydXN0ZWQ9bnVsbCE9PShlPXQuaXNUcnVzdGVkKSYmdm9pZCAwIT09ZT9lOnZvaWQgMCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPW51bGwhPT0oZT10LnN1cHBvcnRUaGVtZUljb25zKSYmdm9pZCAwIT09ZSYmZSx0aGlzLnN1cHBvcnRIdG1sPW51bGwhPT0oZT10LnN1cHBvcnRIdG1sKSYmdm9pZCAwIT09ZSYmZSl9YXBwZW5kVGV4dChlLHQ9MCl7cmV0dXJuIHRoaXMudmFsdWUrPSh0aGlzLnN1cHBvcnRUaGVtZUljb25zP2UucmVwbGFjZShvbiwoZSx0KT0+dD9lOiJcXCIrZSk6ZSkucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0hXS9nLCJcXCQmIikucmVwbGFjZSgvKFsgXHRdKykvZywoZSx0KT0+IiZuYnNwOyIucmVwZWF0KHQubGVuZ3RoKSkucmVwbGFjZSgvXD4vZ20sIlxcPiIpLnJlcGxhY2UoL1xuL2csMT09PXQ/IlxcXG4iOiJcblxuIiksdGhpc31hcHBlbmRNYXJrZG93bihlKXtyZXR1cm4gdGhpcy52YWx1ZSs9ZSx0aGlzfWFwcGVuZENvZGVibG9jayhlLHQpe3JldHVybiB0aGlzLnZhbHVlKz0iXG5gYGAiLHRoaXMudmFsdWUrPWUsdGhpcy52YWx1ZSs9IlxuIix0aGlzLnZhbHVlKz10LHRoaXMudmFsdWUrPSJcbmBgYFxuIix0aGlzfX1mdW5jdGlvbiBsbihlKXtpZihubi5zZXJ2aWNlSWRzLmhhcyhlKSlyZXR1cm4gbm4uc2VydmljZUlkcy5nZXQoZSk7ZnVuY3Rpb24gaShlLHQsbil7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJASVNlcnZpY2VOYW1lLWRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIHRvIGRlY29yYXRlIGEgcGFyYW1ldGVyIik7dmFyIHI7cj1pLG49biwoZT1lKVtubi5ESV9UQVJHRVRdPT09ZT9lW25uLkRJX0RFUEVOREVOQ0lFU10ucHVzaCh7aWQ6cixpbmRleDpufSk6KGVbbm4uRElfREVQRU5ERU5DSUVTXT1be2lkOnIsaW5kZXg6bn1dLGVbbm4uRElfVEFSR0VUXT1lKX1yZXR1cm4gaS50b1N0cmluZz0oKT0+ZSxubi5zZXJ2aWNlSWRzLnNldChlLGkpLGksMX0ocm49bm49bm58fHt9KS5zZXJ2aWNlSWRzPW5ldyBNYXAscm4uRElfVEFSR0VUPSIkZGkkdGFyZ2V0Iixybi5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLHJuLmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbcm4uRElfREVQRU5ERU5DSUVTXXx8W119LGxuKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLGxuKCJsb2dTZXJ2aWNlIiksbG4oImxvZ2dlclNlcnZpY2UiKSwoZT1hbj1hbnx8e30pW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiI7Y29uc3QgaG49YW4uSW5mbztjbGFzcyBjbiBleHRlbmRzIHZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGV2ZWw9aG4sdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9yZWdpc3RlcihuZXcgdGUpLHRoaXMub25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmV2ZW50fXNldExldmVsKGUpe3RoaXMubGV2ZWwhPT1lJiYodGhpcy5sZXZlbD1lLHRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZmlyZSh0aGlzLmxldmVsKSl9Z2V0TGV2ZWwoKXtyZXR1cm4gdGhpcy5sZXZlbH19Y2xhc3MgZG4gZXh0ZW5kcyBjbntjb25zdHJ1Y3RvcihlPWhuKXtzdXBlcigpLHRoaXMuc2V0TGV2ZWwoZSl9dHJhY2UoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLlRyYWNlJiZjb25zb2xlLmxvZygiJWNUUkFDRSIsImNvbG9yOiAjODg4IixlLC4uLnQpfWRlYnVnKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5EZWJ1ZyYmY29uc29sZS5sb2coIiVjREVCVUciLCJiYWNrZ3JvdW5kOiAjZWVlOyBjb2xvcjogIzg4OCIsZSwuLi50KX1pbmZvKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5JbmZvJiZjb25zb2xlLmxvZygiJWMgSU5GTyIsImNvbG9yOiAjMzNmIixlLC4uLnQpfXdhcm4oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLldhcm5pbmcmJmNvbnNvbGUubG9nKCIlYyBXQVJOIiwiY29sb3I6ICM5OTMiLGUsLi4udCl9ZXJyb3IoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLkVycm9yJiZjb25zb2xlLmxvZygiJWMgIEVSUiIsImNvbG9yOiAjZjMzIixlLC4uLnQpfWNyaXRpY2FsKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5Dcml0aWNhbCYmY29uc29sZS5sb2coIiVjQ1JJVEkiLCJiYWNrZ3JvdW5kOiAjZjMzOyBjb2xvcjogd2hpdGUiLGUsLi4udCl9ZGlzcG9zZSgpe31mbHVzaCgpe319Y2xhc3MgdW57c3RhdGljIGNob3JkKGUsdCl7cmV0dXJuKGV8KDY1NTM1JnQpPDwxNj4+PjApPj4+MH19ZnVuY3Rpb24gcG4oZSx0LG4scixpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7aWYoMD09PW4pcmV0dXJuIDE7dmFyIGk9dC5jaGFyQ29kZUF0KG4tMSk7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxO2lmKDEzPT09aXx8MTA9PT1pKXJldHVybiAxO2lmKDA8cil7aT10LmNoYXJDb2RlQXQobik7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxfXJldHVybn0oZSx0LHIsaSkmJmZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYocitpPT09bilyZXR1cm4gMTtpZihuPXQuY2hhckNvZGVBdChyK2kpLDAhPT1lLmdldChuKSlyZXR1cm4gMTtpZigxMz09PW58fDEwPT09bilyZXR1cm4gMTtpZigwPGkpe249dC5jaGFyQ29kZUF0KHIraS0xKTtpZigwIT09ZS5nZXQobikpcmV0dXJuIDF9cmV0dXJufShlLHQsbixyLGkpfXVuLkN0cmxDbWQ9MjA0OCx1bi5TaGlmdD0xMDI0LHVuLkFsdD01MTIsdW4uV2luQ3RybD0yNTY7Y2xhc3MgbW57Y29uc3RydWN0b3IoZSx0KXt0aGlzLl93b3JkU2VwYXJhdG9ycz1lLHRoaXMuX3NlYXJjaFJlZ2V4PXQsdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1yZXNldChlKXt0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXg9ZSx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfW5leHQoZSl7dmFyIHQ9ZS5sZW5ndGg7bGV0IG47ZG97aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleCt0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9PT10KXJldHVybiBudWxsO2lmKCEobj10aGlzLl9zZWFyY2hSZWdleC5leGVjKGUpKSlyZXR1cm4gbnVsbDt2YXIgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYociE9PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXh8fGkhPT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cix0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fHBuKHRoaXMuX3dvcmRTZXBhcmF0b3JzLGUsdCxyLGkpKXJldHVybiBufWVsc2V7aWYoMCE9PWkpcmV0dXJuIG51bGw7NjU1MzU8ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuY2hhckNvZGVBdChuKTtpZihsZShyKSYmbisxPHQpe3Q9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoNTYzMjA8PShlPXQpJiZlPD01NzM0MylyZXR1cm4gdC01NjMyMCsoci01NTI5Njw8MTApKzY1NTM2fXJldHVybiByfShlLHQsdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xfX13aGlsZShuKTtyZXR1cm4gbnVsbH19Y2xhc3MgZm57c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LGMsZSl7dmFyIGQ9ZT9lLnN0YXJ0TGluZU51bWJlcjoxLHU9ZT9lLmVuZExpbmVOdW1iZXI6dC5nZXRMaW5lQ291bnQoKTtjb25zdCByPW5ldyBnbihjKTt2YXIgaSxlPXIuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBuO249ImFsbE5vbkJhc2ljQXNjaWkiPT09ZT9uZXcgUmVnRXhwKCJbXlxcdFxcblxcclxceDIwLVxceDdFXSIsImciKTpuZXcgUmVnRXhwKCIiK2Z1bmN0aW9uKGUpe2U9YFske2UubWFwKGU9PlN0cmluZy5mcm9tQ29kZVBvaW50KGUpKS5qb2luKCIiKS5yZXBsYWNlKC9bXFxce1x9XCpcK1w/XHxcXlwkXC5cW1xdXChcKV0vZywiXFwkJiIpfV1gO3JldHVybiBlfShBcnJheS5mcm9tKGUpKSwiZyIpO2NvbnN0IGE9bmV3IG1uKG51bGwsbiksbz1bXTtsZXQgcD0hMSxtPTAsZj0wLGc9MDtlOmZvcihsZXQgbj1kLGU9dTtuPD1lO24rKyl7Y29uc3QgaD10LmdldExpbmVDb250ZW50KG4pO3ZhciBiPWgubGVuZ3RoO2EucmVzZXQoMCk7ZG97aWYoaT1hLm5leHQoaCkpe2xldCBlPWkuaW5kZXgsdD1pLmluZGV4K2lbMF0ubGVuZ3RoOzA8ZSYmbGUoaC5jaGFyQ29kZUF0KGUtMSkpJiZlLS0sdCsxPGImJmxlKGguY2hhckNvZGVBdCh0LTEpKSYmdCsrO3ZhciBzPWguc3Vic3RyaW5nKGUsdCksbD15dChlKzEsd3QsaCwwKSxzPXIuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShzLGw/bC53b3JkOm51bGwpO2lmKDAhPT1zKXtpZigzPT09cyltKys7ZWxzZSBpZigyPT09cylmKys7ZWxzZXtpZigxIT09cyl0aHJvdyBsPXZvaWQgMCxbbD0iVW5yZWFjaGFibGUiXT1bXSxuZXcgRXJyb3IobCk7ZysrfWlmKDFlMzw9by5sZW5ndGgpe3A9ITA7YnJlYWsgZX1vLnB1c2gobmV3IGF0KG4sZSsxLG4sdCsxKSl9fX13aGlsZShpKX1yZXR1cm57cmFuZ2VzOm8saGFzTW9yZTpwLGFtYmlndW91c0NoYXJhY3RlckNvdW50Om0saW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zixub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Z319c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgbj1uZXcgZ24odCk7c3dpdGNoKG4uc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgYT1lLmNvZGVQb2ludEF0KDApO3ZhciByPW4uYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShhKSxpPWNlLmdldExvY2FsZXMoKS5maWx0ZXIoZT0+IWNlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhhKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChyKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6aX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3MgZ257Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1jZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBkZS5jb2RlUG9pbnRzKWJuKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IG4gb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQobik7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZShyKTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKG4pKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCByPSExLGk9ITE7aWYodClmb3IodmFyIGEgb2YgdCl7Y29uc3Qgbj1hLmNvZGVQb2ludEF0KDApO2E9YTthPWhlLnRlc3QoYSk7cj1yfHxhLGF8fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKXx8ZGUuaXNJbnZpc2libGVDaGFyYWN0ZXIobil8fChpPSEwKX1yZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhYm4oZSkmJmRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIGJuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgX24sd24sdm4seW4sVG4sa24sU24sQ24seG4sTG4sRW4sQW4sTW4sUm4sSW4sTm4sVW49ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gcihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/bihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4ocixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX07Y2xhc3Mgem4gZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1uLHRoaXMuX3ZlcnNpb25JZD1yLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtmb3IoY29uc3QgdCBvZiBlLmNoYW5nZXMpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UodC5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgaXQodC5yYW5nZS5zdGFydExpbmVOdW1iZXIsdC5yYW5nZS5zdGFydENvbHVtbiksdC50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7dmFyIHQ9dGhpcy5fZW9sLmxlbmd0aCxuPXRoaXMuX2xpbmVzLmxlbmd0aDtjb25zdCByPW5ldyBVaW50MzJBcnJheShuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXJbZV09dGhpcy5fbGluZXNbZV0ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgYnQocil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbj92b2lkIDA6dm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKTt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKX1fYWNjZXB0SW5zZXJ0VGV4dCh0LGUpe2lmKDAhPT1lLmxlbmd0aCl7Y29uc3Qgbj1lLnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMSE9PW4ubGVuZ3RoKXtuW24ubGVuZ3RoLTFdKz10aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStuWzBdKTtjb25zdCByPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPG4ubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2UodC5saW5lTnVtYmVyK2UtMSwwLG5bZV0pLHJbZS0xXT1uW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKHQubGluZU51bWJlcixyKX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStuWzBdK3RoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD15dChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgbj13dDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKW49dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLG49bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gbi5sYXN0SW5kZXg9MCxufSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IGF0KGUubGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLGUubGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH13b3Jkcyh0KXtjb25zdCBuPXRoaXMuX2xpbmVzLHI9dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IGk9MCxhPSIiLG89MCxzPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYobzxzLmxlbmd0aCl7dmFyIGU9YS5zdWJzdHJpbmcoc1tvXS5zdGFydCxzW29dLmVuZCk7bys9MSx5aWVsZCBlfWVsc2V7aWYoIShpPG4ubGVuZ3RoKSlicmVhazthPW5baV0scz1yKGEsdCksbz0wLGkrPTF9fX19Z2V0TGluZVdvcmRzKGUsdCl7Y29uc3Qgbj10aGlzLl9saW5lc1tlLTFdO2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgdGhpcy5fd29yZGVuaXplKG4sdCkpci5wdXNoKHt3b3JkOm4uc3Vic3RyaW5nKGkuc3RhcnQsaS5lbmQpLHN0YXJ0Q29sdW1uOmkuc3RhcnQrMSxlbmRDb2x1bW46aS5lbmQrMX0pO3JldHVybiByfV93b3JkZW5pemUoZSx0KXtjb25zdCBuPVtdO3ZhciByO2Zvcih0Lmxhc3RJbmRleD0wOyhyPXQuZXhlYyhlKSkmJjAhPT1yWzBdLmxlbmd0aDspbi5wdXNoKHtzdGFydDpyLmluZGV4LGVuZDpyLmluZGV4K3JbMF0ubGVuZ3RofSk7cmV0dXJuIG59Z2V0VmFsdWVJblJhbmdlKGUpe2lmKChlPXRoaXMuX3ZhbGlkYXRlUmFuZ2UoZSkpLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlcilyZXR1cm4gdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSxlLmVuZENvbHVtbi0xKTt2YXIgdD10aGlzLl9lb2wsbj1lLnN0YXJ0TGluZU51bWJlci0xLHI9ZS5lbmRMaW5lTnVtYmVyLTE7Y29uc3QgaT1bXTtpLnB1c2godGhpcy5fbGluZXNbbl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgZT0xK247ZTxyO2UrKylpLnB1c2godGhpcy5fbGluZXNbZV0pO3JldHVybiBpLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLGkuam9pbih0KX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7dmFyIGU9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLHQ9dGhpcy5fbGluZXNbZS5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErZS5pbmRleCxjb2x1bW46MStNYXRoLm1pbihlLnJlbWFpbmRlcix0KX19X3ZhbGlkYXRlUmFuZ2UoZSl7dmFyIHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLnN0YXJ0TGluZU51bWJlcixjb2x1bW46ZS5zdGFydENvbHVtbn0pLG49dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLmVuZExpbmVOdW1iZXIsY29sdW1uOmUuZW5kQ29sdW1ufSk7cmV0dXJuIHQubGluZU51bWJlciE9PWUuc3RhcnRMaW5lTnVtYmVyfHx0LmNvbHVtbiE9PWUuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcnx8bi5jb2x1bW4hPT1lLmVuZENvbHVtbj97c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59OmV9X3ZhbGlkYXRlUG9zaXRpb24oZSl7aWYoIWl0LmlzSVBvc2l0aW9uKGUpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvc2l0aW9uIik7bGV0e2xpbmVOdW1iZXI6dCxjb2x1bW46bn09ZSxyPSExO3ZhciBpO3JldHVybiB0PDE/KHQ9MSxuPTEscj0hMCk6dD50aGlzLl9saW5lcy5sZW5ndGg/KHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwKTooaT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLG48MT8obj0xLHI9ITApOm4+aSYmKG49aSxyPSEwKSkscj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBIbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IHQ9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaChlPT50LnB1c2godGhpcy5fbW9kZWxzW2VdKSksdH1hY2NlcHROZXdNb2RlbChlKXt0aGlzLl9tb2RlbHNbZS51cmxdPW5ldyB6bigkZS5wYXJzZShlLnVybCksZS5saW5lcyxlLkVPTCxlLnZlcnNpb25JZCl9YWNjZXB0TW9kZWxDaGFuZ2VkKGUsdCl7aWYodGhpcy5fbW9kZWxzW2VdKXtjb25zdCBuPXRoaXMuX21vZGVsc1tlXTtuLm9uRXZlbnRzKHQpfX1hY2NlcHRSZW1vdmVkTW9kZWwoZSl7dGhpcy5fbW9kZWxzW2VdJiZkZWxldGUgdGhpcy5fbW9kZWxzW2VdfWNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LG4scil7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gZT9mbi5jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSxuLHIpOntyYW5nZXM6W10saGFzTW9yZTohMSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDowLGludmlzaWJsZUNoYXJhY3RlckNvdW50OjAsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OjB9fSl9Y29tcHV0ZURpZmYoYSxvLHMsbCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGEpLHQ9dGhpcy5fZ2V0TW9kZWwobyk7aWYoIWV8fCF0KXJldHVybiBudWxsO3ZhciBuPWUuZ2V0TGluZXNDb250ZW50KCkscj10LmdldExpbmVzQ29udGVudCgpO2NvbnN0IGk9bmV3IGR0KG4scix7c2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITAsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6cyxzaG91bGRNYWtlUHJldHR5RGlmZjohMCxtYXhDb21wdXRhdGlvblRpbWU6bH0pO249aS5jb21wdXRlRGlmZigpLHI9ISgwPG4uY2hhbmdlcy5sZW5ndGgpJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5Om4ucXVpdEVhcmx5LGlkZW50aWNhbDpyLGNoYW5nZXM6bi5jaGFuZ2VzfX0pfV9tb2RlbHNBcmVJZGVudGljYWwodCxuKXt2YXIgcj10LmdldExpbmVDb3VudCgpO2lmKHIhPT1uLmdldExpbmVDb3VudCgpKXJldHVybiExO2ZvcihsZXQgZT0xO2U8PXI7ZSsrKWlmKHQuZ2V0TGluZUNvbnRlbnQoZSkhPT1uLmdldExpbmVDb250ZW50KGUpKXJldHVybiExO3JldHVybiEwfWNvbXB1dGVNb3JlTWluaW1hbEVkaXRzKHUscCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKHUpO2lmKCFlKXJldHVybiBwO2NvbnN0IHQ9W107bGV0IG49dm9pZCAwO2Zvcih2YXJ7cmFuZ2U6cix0ZXh0OmksZW9sOmF9b2YgcD1wLnNsaWNlKDApLnNvcnQoKGUsdCk9PntyZXR1cm4gZS5yYW5nZSYmdC5yYW5nZT9hdC5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZS5yYW5nZSx0LnJhbmdlKTooZS5yYW5nZT8wOjEpLSh0LnJhbmdlPzA6MSl9KSlpZigibnVtYmVyIj09dHlwZW9mIGEmJihuPWEpLCFhdC5pc0VtcHR5KHIpfHxpKXthPWUuZ2V0VmFsdWVJblJhbmdlKHIpO2lmKGEhPT0oaT1pLnJlcGxhY2UoL1xyXG58XG58XHIvZyxlLmVvbCkpKWlmKE1hdGgubWF4KGkubGVuZ3RoLGEubGVuZ3RoKT5Ibi5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6cix0ZXh0Oml9KTtlbHNle2E9YSxjPWksZD0hMTt2YXIgYT1uZXcgRWUobmV3IFNlKGEpLG5ldyBTZShjKSkuQ29tcHV0ZURpZmYoZCkuY2hhbmdlcyxvPWUub2Zmc2V0QXQoYXQubGlmdChyKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBoIG9mIGEpe3ZhciBzPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCksbD1lLnBvc2l0aW9uQXQobytoLm9yaWdpbmFsU3RhcnQraC5vcmlnaW5hbExlbmd0aCkscz17dGV4dDppLnN1YnN0cihoLm1vZGlmaWVkU3RhcnQsaC5tb2RpZmllZExlbmd0aCkscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpzLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46cy5jb2x1bW4sZW5kTGluZU51bWJlcjpsLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmwuY29sdW1ufX07ZS5nZXRWYWx1ZUluUmFuZ2Uocy5yYW5nZSkhPT1zLnRleHQmJnQucHVzaChzKX19fXZhciBjLGQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuJiZ0LnB1c2goe2VvbDpuLHRleHQ6IiIscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjowLHN0YXJ0Q29sdW1uOjAsZW5kTGluZU51bWJlcjowLGVuZENvbHVtbjowfX0pLHR9KX1jb21wdXRlTGlua3ModCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gZT8oZT1lKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD9MdC5jb21wdXRlTGlua3MoZSk6W106bnVsbH0pfXRleHR1YWxTdWdnZXN0KG8scyxsLGgpe3JldHVybiBVbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1uZXcgRighMCk7dmFyIHQ9bmV3IFJlZ0V4cChsLGgpO2NvbnN0IG49bmV3IFNldDtlOmZvcih2YXIgciBvZiBvKXtjb25zdCBhPXRoaXMuX2dldE1vZGVsKHIpO2lmKGEpZm9yKHZhciBpIG9mIGEud29yZHModCkpaWYoaSE9PXMmJmlzTmFOKE51bWJlcihpKSkmJihuLmFkZChpKSxuLnNpemU+SG4uX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20obiksZHVyYXRpb246ZS5lbGFwc2VkKCl9fSl9Y29tcHV0ZVdvcmRSYW5nZXModCxhLG8scyl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFlKXJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO3ZhciBuPW5ldyBSZWdFeHAobyxzKTtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0PWEuc3RhcnRMaW5lTnVtYmVyO3Q8YS5lbmRMaW5lTnVtYmVyO3QrKylmb3IoY29uc3QgaSBvZiBlLmdldExpbmVXb3Jkcyh0LG4pKWlmKGlzTmFOKE51bWJlcihpLndvcmQpKSl7bGV0IGU9cltpLndvcmRdO2V8fChlPVtdLHJbaS53b3JkXT1lKSxlLnB1c2goe3N0YXJ0TGluZU51bWJlcjp0LHN0YXJ0Q29sdW1uOmkuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp0LGVuZENvbHVtbjppLmVuZENvbHVtbn0pfXJldHVybiByfSl9bmF2aWdhdGVWYWx1ZVNldChpLGEsbyxzLGwpe3JldHVybiBVbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT10aGlzLl9nZXRNb2RlbChpKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1uZXcgUmVnRXhwKHMsbCksbj0oYS5zdGFydENvbHVtbj09PWEuZW5kQ29sdW1uJiYoYT17c3RhcnRMaW5lTnVtYmVyOmEuc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOmEuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjphLmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOmEuZW5kQ29sdW1uKzF9KSxlLmdldFZhbHVlSW5SYW5nZShhKSksdD1lLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOmEuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjphLnN0YXJ0Q29sdW1ufSx0KTtpZighdClyZXR1cm4gbnVsbDt2YXIgcj1lLmdldFZhbHVlSW5SYW5nZSh0KTtyZXR1cm4gRXQuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldChhLG4sdCxyLG8pfSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe249cmUobiwoZSx0KT0+dGhpcy5faG9zdC5maHIoZSx0KSk7cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KHtob3N0Om4sZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX0sdCksUHJvbWlzZS5yZXNvbHZlKG5lKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Ibi5fZGlmZkxpbWl0PTFlNSxIbi5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJihVLm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLGV4dHJhOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTpSdCxFbWl0dGVyOnRlLEtleUNvZGU6Qm4sS2V5TW9kOnVuLFBvc2l0aW9uOml0LFJhbmdlOmF0LFNlbGVjdGlvbjpWdCxVcmk6JGUsVG9rZW46JHQsTWFya2Rvd25TdHJpbmc6c24sTWFya2Rvd25TdHJpbmdUZXh0TmV3bGluZVN0eWxlOiRuLERpc3Bvc2FibGU6dixEaXNwb3NhYmxlU3RvcmU6dyxFcnJvckhhbmRsZXI6cyxBYnN0cmFjdExvZ2dlcjpjbixDb25zb2xlTG9nZ2VyOmRuLFRva2VuaXphdGlvblJlc3VsdDpKdCxFbmNvZGVkVG9rZW5pemF0aW9uUmVzdWx0Olh0LFNlbGVjdGlvbkRpcmVjdGlvbjphcixNYXJrZXJTZXZlcml0eTpmcixNYXJrZXJUYWc6d3IsTG9nTGV2ZWw6bixlcnJvckhhbmRsZXI6bH0pO2xldCBEbj0hMTtmdW5jdGlvbiBXbih0KXtpZighRG4pe0RuPSEwO2NvbnN0IG49bmV3IHllKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSxlPT5uZXcgSG4oZSx0KSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e24ub25tZXNzYWdlKGUuZGF0YSl9fX1mdW5jdGlvbiBQbihlLHQsLi4ubil7e3ZhciByPW47bGV0IGU7cmV0dXJuIGU9MD09PXIubGVuZ3RoP3Q6dC5yZXBsYWNlKC9ceyhcZCspXH0vZywoZSx0KT0+e3Q9dFswXTtyZXR1cm4gdm9pZCAwIT09clt0XT9yW3RdOmV9KX19c2VsZi5vbm1lc3NhZ2U9ZT0+e0RufHxXbihudWxsKX0sKHI9X249X258fHt9KS5NSU5fVkFMVUU9MCxyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChhPXduPXdufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2xpbmU6ZT1lPT09TnVtYmVyLk1BWF9WQUxVRT9fbi5NQVhfVkFMVUU6ZSxjaGFyYWN0ZXI6dD10PT09TnVtYmVyLk1BWF9WQUxVRT9fbi5NQVhfVkFMVUU6dH19LGEuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmby51aW50ZWdlcihlLmxpbmUpJiZvLnVpbnRlZ2VyKGUuY2hhcmFjdGVyKX0sKElpPXZuPXZufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKG8udWludGVnZXIoZSkmJm8udWludGVnZXIodCkmJm8udWludGVnZXIobikmJm8udWludGVnZXIocikpcmV0dXJue3N0YXJ0OnduLmNyZWF0ZShlLHQpLGVuZDp3bi5jcmVhdGUobixyKX07aWYod24uaXMoZSkmJnduLmlzKHQpKXJldHVybntzdGFydDplLGVuZDp0fTt0aHJvdyBuZXcgRXJyb3IoIlJhbmdlI2NyZWF0ZSBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50c1siK2UrIiwgIit0KyIsICIrbisiLCAiK3IrIl0iKX0sSWkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmd24uaXMoZS5zdGFydCkmJnduLmlzKGUuZW5kKX0sKFM9eW49eW58fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUscmFuZ2U6dH19LFMuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmdm4uaXMoZS5yYW5nZSkmJihvLnN0cmluZyhlLnVyaSl8fG8udW5kZWZpbmVkKGUudXJpKSl9LChlPUluPUlufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0sZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5udW1iZXJSYW5nZShlLnJlZCwwLDEpJiZvLm51bWJlclJhbmdlKGUuZ3JlZW4sMCwxKSYmby5udW1iZXJSYW5nZShlLmJsdWUsMCwxKSYmby5udW1iZXJSYW5nZShlLmFscGhhLDAsMSl9LChCbj1Ubj1Ubnx8e30pLkNvbW1lbnQ9ImNvbW1lbnQiLEJuLkltcG9ydHM9ImltcG9ydHMiLEJuLlJlZ2lvbj0icmVnaW9uIiwoJG49a249a258fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSwkbi5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5kZWZpbmVkKGUpJiZ5bi5pcyhlLmxvY2F0aW9uKSYmby5zdHJpbmcoZS5tZXNzYWdlKX0sKFhufHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJm8uc3RyaW5nKGUuaHJlZil9LChhcj1lcj1lcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7cmV0dXJuIGU9e3JhbmdlOmUsbWVzc2FnZTp0fSxvLmRlZmluZWQobikmJihlLnNldmVyaXR5PW4pLG8uZGVmaW5lZChyKSYmKGUuY29kZT1yKSxvLmRlZmluZWQoaSkmJihlLnNvdXJjZT1pKSxvLmRlZmluZWQoYSkmJihlLnJlbGF0ZWRJbmZvcm1hdGlvbj1hKSxlfSxhci5pcz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gby5kZWZpbmVkKGUpJiZ2bi5pcyhlLnJhbmdlKSYmby5zdHJpbmcoZS5tZXNzYWdlKSYmKG8ubnVtYmVyKGUuc2V2ZXJpdHkpfHxvLnVuZGVmaW5lZChlLnNldmVyaXR5KSkmJihvLmludGVnZXIoZS5jb2RlKXx8by5zdHJpbmcoZS5jb2RlKXx8by51bmRlZmluZWQoZS5jb2RlKSkmJihvLnVuZGVmaW5lZChlLmNvZGVEZXNjcmlwdGlvbil8fG8uc3RyaW5nKG51bGw9PT0odD1lLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoby5zdHJpbmcoZS5zb3VyY2UpfHxvLnVuZGVmaW5lZChlLnNvdXJjZSkpJiYoby51bmRlZmluZWQoZS5yZWxhdGVkSW5mb3JtYXRpb24pfHxvLnR5cGVkQXJyYXkoZS5yZWxhdGVkSW5mb3JtYXRpb24sa24uaXMpKX0sKGZyPWxyPWxyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07cmV0dXJuIGU9e3RpdGxlOmUsY29tbWFuZDp0fSxvLmRlZmluZWQobikmJjA8bi5sZW5ndGgmJihlLmFyZ3VtZW50cz1uKSxlfSxmci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5kZWZpbmVkKGUpJiZvLnN0cmluZyhlLnRpdGxlKSYmby5zdHJpbmcoZS5jb21tYW5kKX0sKHdyPVNuPVNufHx7fSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LHdyLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sd3IuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSx3ci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5vYmplY3RMaXRlcmFsKGUpJiZvLnN0cmluZyhlLm5ld1RleHQpJiZ2bi5pcyhlLnJhbmdlKX0sKG49Q249Q258fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPXtsYWJlbDplfSx2b2lkIDAhPT10JiYoZS5uZWVkc0NvbmZpcm1hdGlvbj10KSx2b2lkIDAhPT1uJiYoZS5kZXNjcmlwdGlvbj1uKSxlfSxuLmlzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiZvLm9iamVjdExpdGVyYWwoZSkmJm8uc3RyaW5nKGUubGFiZWwpJiYoby5ib29sZWFuKGUubmVlZHNDb25maXJtYXRpb24pfHx2b2lkIDA9PT1lLm5lZWRzQ29uZmlybWF0aW9uKSYmKG8uc3RyaW5nKGUuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT1lLmRlc2NyaXB0aW9uKX0sKHhufHwoeG49e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChyPUxuPUxufHx7fSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sci5pbnNlcnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sci5kZWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OiIiLGFubm90YXRpb25JZDp0fX0sci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gU24uaXMoZSkmJihDbi5pcyhlLmFubm90YXRpb25JZCl8fHhuLmlzKGUuYW5ub3RhdGlvbklkKSl9LChhPUVuPUVufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3RleHREb2N1bWVudDplLGVkaXRzOnR9fSxhLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmluZWQoZSkmJkZuLmlzKGUudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheShlLmVkaXRzKX0sKElpPUFuPUFufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT17a2luZDoiY3JlYXRlIix1cmk6ZX0sdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChlLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKGUuYW5ub3RhdGlvbklkPW4pLGV9LElpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiY3JlYXRlIj09PWUua2luZCYmby5zdHJpbmcoZS51cmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLm92ZXJ3cml0ZXx8by5ib29sZWFuKGUub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHx4bi5pcyhlLmFubm90YXRpb25JZCkpfSwoUz1Nbj1Nbnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZT17a2luZDoicmVuYW1lIixvbGRVcmk6ZSxuZXdVcmk6dH0sdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChlLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGUuYW5ub3RhdGlvbklkPXIpLGV9LFMuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJyZW5hbWUiPT09ZS5raW5kJiZvLnN0cmluZyhlLm9sZFVyaSkmJm8uc3RyaW5nKGUubmV3VXJpKSYmKHZvaWQgMD09PWUub3B0aW9uc3x8KHZvaWQgMD09PWUub3B0aW9ucy5vdmVyd3JpdGV8fG8uYm9vbGVhbihlLm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT1lLm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fG8uYm9vbGVhbihlLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJih2b2lkIDA9PT1lLmFubm90YXRpb25JZHx8eG4uaXMoZS5hbm5vdGF0aW9uSWQpKX0sKEluPVJuPVJufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT17a2luZDoiZGVsZXRlIix1cmk6ZX0sdm9pZCAwPT09dHx8dm9pZCAwPT09dC5yZWN1cnNpdmUmJnZvaWQgMD09PXQuaWdub3JlSWZOb3RFeGlzdHN8fChlLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKGUuYW5ub3RhdGlvbklkPW4pLGV9LEluLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZGVsZXRlIj09PWUua2luZCYmby5zdHJpbmcoZS51cmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLnJlY3Vyc2l2ZXx8by5ib29sZWFuKGUub3B0aW9ucy5yZWN1cnNpdmUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHx4bi5pcyhlLmFubm90YXRpb25JZCkpfSwoTm58fChObj17fSkpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYodm9pZCAwIT09ZS5jaGFuZ2VzfHx2b2lkIDAhPT1lLmRvY3VtZW50Q2hhbmdlcykmJih2b2lkIDA9PT1lLmRvY3VtZW50Q2hhbmdlc3x8ZS5kb2N1bWVudENoYW5nZXMuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG8uc3RyaW5nKGUua2luZCk/QW4uaXMoZSl8fE1uLmlzKGUpfHxSbi5pcyhlKTpFbi5pcyhlKX0pKX07cW4ucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbj12b2lkIDA9PT1uP1NuLmluc2VydChlLHQpOnhuLmlzKG4pP0xuLmluc2VydChlLHQscj1uKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLExuLmluc2VydChlLHQscikpO2lmKHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxxbi5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbj12b2lkIDA9PT1uP1NuLnJlcGxhY2UoZSx0KTp4bi5pcyhuKT9Mbi5yZXBsYWNlKGUsdCxyPW4pOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHI9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UobiksTG4ucmVwbGFjZShlLHQscikpO2lmKHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxxbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG4sdD12b2lkIDA9PT10P1NuLmRlbChlKTp4bi5pcyh0KT9Mbi5kZWwoZSxuPXQpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLG49dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UodCksTG4uZGVsKGUsbikpO2lmKHRoaXMuZWRpdHMucHVzaCh0KSx2b2lkIDAhPT1uKXJldHVybiBufSxxbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZWRpdHMucHVzaChlKX0scW4ucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRzfSxxbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0scW4ucHJvdG90eXBlLmFzc2VydENoYW5nZUFubm90YXRpb25zPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKCJUZXh0IGVkaXQgY2hhbmdlIGlzIG5vdCBjb25maWd1cmVkIHRvIG1hbmFnZSBjaGFuZ2UgYW5ub3RhdGlvbnMuIil9O3ZhciBPbj1xbjtmdW5jdGlvbiBxbihlLHQpe3RoaXMuZWRpdHM9ZSx0aGlzLmNoYW5nZUFubm90YXRpb25zPXR9cHIucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHByLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHByLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih4bi5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LHByLnByb3RvdHlwZS5uZXh0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnRlcisrLHRoaXMuX2NvdW50ZXIudG9TdHJpbmcoKX07dmFyIEZuLFZuLEJuLEtuLGpuLEduLCRuLEpuLFhuLFluLFFuLFpuLGVyLHRyLG5yLHJyLGlyLGFyLG9yLHNyLGxyLGhyLGNyLGRyLHVyPXByO2Z1bmN0aW9uIHByKGUpe3RoaXMuX2Fubm90YXRpb25zPXZvaWQgMD09PWU/T2JqZWN0LmNyZWF0ZShudWxsKTplLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9zaXplPTB9ZnVuY3Rpb24gbXIobil7dmFyIHI9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1uPyh0aGlzLl93b3Jrc3BhY2VFZGl0PW4pLmRvY3VtZW50Q2hhbmdlcz8odGhpcy5fY2hhbmdlQW5ub3RhdGlvbnM9bmV3IHVyKG4uY2hhbmdlQW5ub3RhdGlvbnMpLG4uY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCksbi5kb2N1bWVudENoYW5nZXMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdDtFbi5pcyhlKSYmKHQ9bmV3IE9uKGUuZWRpdHMsci5fY2hhbmdlQW5ub3RhdGlvbnMpLHIuX3RleHRFZGl0Q2hhbmdlc1tlLnRleHREb2N1bWVudC51cmldPXQpfSkpOm4uY2hhbmdlcyYmT2JqZWN0LmtleXMobi5jaGFuZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBPbihuLmNoYW5nZXNbZV0pO3IuX3RleHRFZGl0Q2hhbmdlc1tlXT10fSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkobXIucHJvdG90eXBlLCJlZGl0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMCE9PXRoaXMuX2NoYW5nZUFubm90YXRpb25zJiYoMD09PXRoaXMuX2NoYW5nZUFubm90YXRpb25zLnNpemU/dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz12b2lkIDA6dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSksdGhpcy5fd29ya3NwYWNlRWRpdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxtci5wcm90b3R5cGUuZ2V0VGV4dEVkaXRDaGFuZ2U9ZnVuY3Rpb24oZSl7aWYoRm4uaXMoZSkpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHQ9e3VyaTplLnVyaSx2ZXJzaW9uOmUudmVyc2lvbn07cmV0dXJuKG49dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXSl8fCh0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHt0ZXh0RG9jdW1lbnQ6dCxlZGl0czpyPVtdfSksbj1uZXcgT24ocix0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1uKSxufWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciBuLHI7cmV0dXJuKG49dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdKXx8KHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlc1tlXT1yPVtdLG49bmV3IE9uKHIpLHRoaXMuX3RleHRFZGl0Q2hhbmdlc1tlXT1uKSxufSxtci5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgdXIsdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LG1yLnByb3RvdHlwZS5pbml0Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSl9LG1yLnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciByLGk7aWYoQ24uaXModCl8fHhuLmlzKHQpP3I9dDpuPXQsdD12b2lkIDA9PT1yP0FuLmNyZWF0ZShlLG4pOihpPXhuLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLEFuLmNyZWF0ZShlLG4saSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2godCksdm9pZCAwIT09aSlyZXR1cm4gaX0sbXIucHJvdG90eXBlLnJlbmFtZUZpbGU9ZnVuY3Rpb24oZSx0LG4scil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgaSxhO2lmKENuLmlzKG4pfHx4bi5pcyhuKT9pPW46cj1uLG49dm9pZCAwPT09aT9Nbi5jcmVhdGUoZSx0LHIpOihhPXhuLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLE1uLmNyZWF0ZShlLHQscixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChuKSx2b2lkIDAhPT1hKXJldHVybiBhfSxtci5wcm90b3R5cGUuZGVsZXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpO2lmKENuLmlzKHQpfHx4bi5pcyh0KT9yPXQ6bj10LHQ9dm9pZCAwPT09cj9Sbi5jcmVhdGUoZSxuKTooaT14bi5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxSbi5jcmVhdGUoZSxuLGkpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHQpLHZvaWQgMCE9PWkpcmV0dXJuIGl9LChlPUZuPUZufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHZlcnNpb246dH19LGUuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmby5zdHJpbmcoZS51cmkpJiYobnVsbD09PWUudmVyc2lvbnx8by5pbnRlZ2VyKGUudmVyc2lvbikpfSwoQm49Vm49Vm58fHt9KS5QbGFpblRleHQ9InBsYWludGV4dCIsQm4uTWFya2Rvd249Im1hcmtkb3duIiwoS249Vm49Vm58fHt9KS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUtuLlBsYWluVGV4dHx8ZT09PUtuLk1hcmtkb3dufSwoam58fChqbj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmVm4uaXModC5raW5kKSYmby5zdHJpbmcodC52YWx1ZSl9LCgkbj1Hbj1Hbnx8e30pLlRleHQ9MSwkbi5NZXRob2Q9Miwkbi5GdW5jdGlvbj0zLCRuLkNvbnN0cnVjdG9yPTQsJG4uRmllbGQ9NSwkbi5WYXJpYWJsZT02LCRuLkNsYXNzPTcsJG4uSW50ZXJmYWNlPTgsJG4uTW9kdWxlPTksJG4uUHJvcGVydHk9MTAsJG4uVW5pdD0xMSwkbi5WYWx1ZT0xMiwkbi5FbnVtPTEzLCRuLktleXdvcmQ9MTQsJG4uU25pcHBldD0xNSwkbi5Db2xvcj0xNiwkbi5GaWxlPTE3LCRuLlJlZmVyZW5jZT0xOCwkbi5Gb2xkZXI9MTksJG4uRW51bU1lbWJlcj0yMCwkbi5Db25zdGFudD0yMSwkbi5TdHJ1Y3Q9MjIsJG4uRXZlbnQ9MjMsJG4uT3BlcmF0b3I9MjQsJG4uVHlwZVBhcmFtZXRlcj0yNSwoWG49Sm49Sm58fHt9KS5QbGFpblRleHQ9MSxYbi5TbmlwcGV0PTIsKFlufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKFFufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2l0ZW1zOmV8fFtdLGlzSW5jb21wbGV0ZTohIXR9fSwoZXI9Wm49Wm58fHt9KS5mcm9tUGxhaW5UZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtLiFdL2csIlxcJCYiKX0sZXIuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uc3RyaW5nKGUpfHxvLm9iamVjdExpdGVyYWwoZSkmJm8uc3RyaW5nKGUubGFuZ3VhZ2UpJiZvLnN0cmluZyhlLnZhbHVlKX0sKHRyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJm8ub2JqZWN0TGl0ZXJhbCh0KSYmKGpuLmlzKHQuY29udGVudHMpfHxabi5pcyh0LmNvbnRlbnRzKXx8by50eXBlZEFycmF5KHQuY29udGVudHMsWm4uaXMpKSYmKHZvaWQgMD09PWUucmFuZ2V8fHZuLmlzKGUucmFuZ2UpKX0sKG5yfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/e2xhYmVsOmUsZG9jdW1lbnRhdGlvbjp0fTp7bGFiZWw6ZX19LChycnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3JldHVybiBlPXtsYWJlbDplfSxvLmRlZmluZWQodCkmJihlLmRvY3VtZW50YXRpb249dCksby5kZWZpbmVkKG4pP2UucGFyYW1ldGVycz1uOmUucGFyYW1ldGVycz1bXSxlfSwoYXI9aXI9aXJ8fHt9KS5UZXh0PTEsYXIuUmVhZD0yLGFyLldyaXRlPTMsKG9yfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9e3JhbmdlOmV9LG8ubnVtYmVyKHQpJiYoZS5raW5kPXQpLGV9LChscj1zcj1zcnx8e30pLkZpbGU9MSxsci5Nb2R1bGU9Mixsci5OYW1lc3BhY2U9Myxsci5QYWNrYWdlPTQsbHIuQ2xhc3M9NSxsci5NZXRob2Q9Nixsci5Qcm9wZXJ0eT03LGxyLkZpZWxkPTgsbHIuQ29uc3RydWN0b3I9OSxsci5FbnVtPTEwLGxyLkludGVyZmFjZT0xMSxsci5GdW5jdGlvbj0xMixsci5WYXJpYWJsZT0xMyxsci5Db25zdGFudD0xNCxsci5TdHJpbmc9MTUsbHIuTnVtYmVyPTE2LGxyLkJvb2xlYW49MTcsbHIuQXJyYXk9MTgsbHIuT2JqZWN0PTE5LGxyLktleT0yMCxsci5OdWxsPTIxLGxyLkVudW1NZW1iZXI9MjIsbHIuU3RydWN0PTIzLGxyLkV2ZW50PTI0LGxyLk9wZXJhdG9yPTI1LGxyLlR5cGVQYXJhbWV0ZXI9MjYsKGhyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIGU9e25hbWU6ZSxraW5kOnQsbG9jYXRpb246e3VyaTpyLHJhbmdlOm59fSxpJiYoZS5jb250YWluZXJOYW1lPWkpLGV9LChkcj1jcj1jcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sZHIuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJnZuLmlzKGUucmFuZ2UpJiYodm9pZCAwPT09ZS5wYXJlbnR8fGRyLmlzKGUucGFyZW50KSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShici5wcm90b3R5cGUsInVyaSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91cml9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGJyLnByb3RvdHlwZSwibGFuZ3VhZ2VJZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShici5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxici5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZT8odD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLGU9dGhpcy5vZmZzZXRBdChlLmVuZCksdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxlKSk6dGhpcy5fY29udGVudH0sYnIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRlbnQ9ZS50ZXh0LHRoaXMuX3ZlcnNpb249dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9LGJyLnByb3RvdHlwZS5nZXRMaW5lT2Zmc2V0cz1mdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzKXtmb3IodmFyIGU9W10sdD10aGlzLl9jb250ZW50LG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXtuJiYoZS5wdXNoKHIpLG49ITEpO3ZhciBpPXQuY2hhckF0KHIpLG49IlxyIj09PWl8fCJcbiI9PT1pOyJcciI9PT1pJiZyKzE8dC5sZW5ndGgmJiJcbiI9PT10LmNoYXJBdChyKzEpJiZyKyt9biYmMDx0Lmxlbmd0aCYmZS5wdXNoKHQubGVuZ3RoKSx0aGlzLl9saW5lT2Zmc2V0cz1lfXJldHVybiB0aGlzLl9saW5lT2Zmc2V0c30sYnIucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHduLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gd24uY3JlYXRlKGEsZS10W2FdKX0sYnIucHJvdG90eXBlLm9mZnNldEF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZihlLmxpbmU+PXQubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZihlLmxpbmU8MClyZXR1cm4gMDt2YXIgbj10W2UubGluZV0sdD1lLmxpbmUrMTx0Lmxlbmd0aD90W2UubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obitlLmNoYXJhY3Rlcix0KSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGJyLnByb3RvdHlwZSwibGluZUNvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7dmFyIG8sZnIsZ3I7ZnVuY3Rpb24gYnIoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PXIsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWZyPW89b3x8e30sZ3I9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxmci5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxmci51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LGZyLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LGZyLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PWdyLmNhbGwoZSl9LGZyLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWdyLmNhbGwoZSl9LGZyLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWdyLmNhbGwoZSkmJnQ8PWUmJmU8PW59LGZyLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1nci5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sZnIudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1nci5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxmci5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1nci5jYWxsKGUpfSxmci5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxmci50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBfcix3cixNLG4sUixyLHZyLGEseXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PXIsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWdldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBsYW5ndWFnZUlkKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn1nZXRUZXh0KGUpe3ZhciB0O3JldHVybiBlPyh0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksZT10aGlzLm9mZnNldEF0KGUuZW5kKSx0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LGUpKTp0aGlzLl9jb250ZW50fXVwZGF0ZShlLHQpe2Zvcih2YXIgciBvZiBlKWlmKHlyLmlzSW5jcmVtZW50YWwocikpe3ZhciBpPWtyKHIucmFuZ2UpLGE9dGhpcy5vZmZzZXRBdChpLnN0YXJ0KSxvPXRoaXMub2Zmc2V0QXQoaS5lbmQpLHM9KHRoaXMuX2NvbnRlbnQ9dGhpcy5fY29udGVudC5zdWJzdHJpbmcoMCxhKStyLnRleHQrdGhpcy5fY29udGVudC5zdWJzdHJpbmcobyx0aGlzLl9jb250ZW50Lmxlbmd0aCksTWF0aC5tYXgoaS5zdGFydC5saW5lLDApKSxpPU1hdGgubWF4KGkuZW5kLmxpbmUsMCk7bGV0IG49dGhpcy5fbGluZU9mZnNldHM7dmFyIGw9VHIoci50ZXh0LCExLGEpO2lmKGktcz09PWwubGVuZ3RoKWZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyluW2UrcysxXT1sW2VdO2Vsc2UgbC5sZW5ndGg8MWU0P24uc3BsaWNlKHMrMSxpLXMsLi4ubCk6dGhpcy5fbGluZU9mZnNldHM9bj1uLnNsaWNlKDAscysxKS5jb25jYXQobCxuLnNsaWNlKGkrMSkpO3ZhciBoPXIudGV4dC5sZW5ndGgtKG8tYSk7aWYoMCE9aClmb3IobGV0IGU9cysxK2wubGVuZ3RoLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdPW5bZV0raH1lbHNle2lmKCF5ci5pc0Z1bGwocikpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNoYW5nZSBldmVudCByZWNlaXZlZCIpO3RoaXMuX2NvbnRlbnQ9ci50ZXh0LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH10aGlzLl92ZXJzaW9uPXR9Z2V0TGluZU9mZnNldHMoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fbGluZU9mZnNldHMmJih0aGlzLl9saW5lT2Zmc2V0cz1Ucih0aGlzLl9jb250ZW50LCEwKSksdGhpcy5fbGluZU9mZnNldHN9cG9zaXRpb25BdChlKXtlPU1hdGgubWF4KE1hdGgubWluKGUsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtsZXQgbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9dmFyIGE9bi0xO3JldHVybntsaW5lOmEsY2hhcmFjdGVyOmUtdFthXX19b2Zmc2V0QXQoZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSx0PWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHQpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtyZXR1cm4gbnVsbCE9ZSYmInN0cmluZyI9PXR5cGVvZiBlLnRleHQmJnZvaWQgMCE9PWUucmFuZ2UmJih2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIGUucmFuZ2VMZW5ndGgpfXN0YXRpYyBpc0Z1bGwoZSl7cmV0dXJuIG51bGwhPWUmJiJzdHJpbmciPT10eXBlb2YgZS50ZXh0JiZ2b2lkIDA9PT1lLnJhbmdlJiZ2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofX07ZnVuY3Rpb24gVHIodCxlLG49MCl7Y29uc3Qgcj1lP1tuXTpbXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9dC5jaGFyQ29kZUF0KGUpOzEzIT09aSYmMTAhPT1pfHwoMTM9PT1pJiZlKzE8dC5sZW5ndGgmJjEwPT09dC5jaGFyQ29kZUF0KGUrMSkmJmUrKyxyLnB1c2gobitlKzEpKX1yZXR1cm4gcn1mdW5jdGlvbiBrcihlKXt2YXIgdD1lLnN0YXJ0LG49ZS5lbmQ7cmV0dXJuIHQubGluZT5uLmxpbmV8fHQubGluZT09PW4ubGluZSYmdC5jaGFyYWN0ZXI+bi5jaGFyYWN0ZXI/e3N0YXJ0Om4sZW5kOnR9OmV9ZnVuY3Rpb24gU3IoZSl7dmFyIHQ9a3IoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfSh3cj1fcj1fcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3IHlyKGUsdCxuLHIpfSx3ci51cGRhdGU9ZnVuY3Rpb24oZSx0LG4pe2lmKGUgaW5zdGFuY2VvZiB5cilyZXR1cm4gZS51cGRhdGUodCxuKSxlO3Rocm93IG5ldyBFcnJvcigiVGV4dERvY3VtZW50LnVwZGF0ZTogZG9jdW1lbnQgbXVzdCBiZSBjcmVhdGVkIGJ5IFRleHREb2N1bWVudC5jcmVhdGUiKX0sd3IuYXBwbHlFZGl0cz1mdW5jdGlvbihlLHQpe2xldCBuPWUuZ2V0VGV4dCgpLHI9MDtjb25zdCBpPVtdO2Zvcihjb25zdCBvIG9mIGZ1bmN0aW9uIGUodCxuKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm4gdDtjb25zdCByPXQubGVuZ3RoLzJ8MDtjb25zdCBpPXQuc2xpY2UoMCxyKTtjb25zdCBhPXQuc2xpY2Uocik7ZShpLG4pO2UoYSxuKTtsZXQgbz0wO2xldCBzPTA7bGV0IGw9MDtmb3IoO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXtsZXQgZT1uKGlbb10sYVtzXSk7ZTw9MD90W2wrK109aVtvKytdOnRbbCsrXT1hW3MrK119Zm9yKDtvPGkubGVuZ3RoOyl0W2wrK109aVtvKytdO2Zvcig7czxhLmxlbmd0aDspdFtsKytdPWFbcysrXTtyZXR1cm4gdH0odC5tYXAoU3IpLChlLHQpPT57dmFyIG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpe3ZhciBhPWUub2Zmc2V0QXQoby5yYW5nZS5zdGFydCk7aWYoYTxyKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO2E+ciYmaS5wdXNoKG4uc3Vic3RyaW5nKHIsYSkpLG8ubmV3VGV4dC5sZW5ndGgmJmkucHVzaChvLm5ld1RleHQpLHI9ZS5vZmZzZXRBdChvLnJhbmdlLmVuZCl9cmV0dXJuIGkucHVzaChuLnN1YnN0cihyKSksaS5qb2luKCIiKX0sKG49TT1NfHx7fSlbbi5TdGFydENvbW1lbnRUYWc9MF09IlN0YXJ0Q29tbWVudFRhZyIsbltuLkNvbW1lbnQ9MV09IkNvbW1lbnQiLG5bbi5FbmRDb21tZW50VGFnPTJdPSJFbmRDb21tZW50VGFnIixuW24uU3RhcnRUYWdPcGVuPTNdPSJTdGFydFRhZ09wZW4iLG5bbi5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixuW24uU3RhcnRUYWdTZWxmQ2xvc2U9NV09IlN0YXJ0VGFnU2VsZkNsb3NlIixuW24uU3RhcnRUYWc9Nl09IlN0YXJ0VGFnIixuW24uRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsbltuLkVuZFRhZ0Nsb3NlPThdPSJFbmRUYWdDbG9zZSIsbltuLkVuZFRhZz05XT0iRW5kVGFnIixuW24uRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixuW24uQXR0cmlidXRlTmFtZT0xMV09IkF0dHJpYnV0ZU5hbWUiLG5bbi5BdHRyaWJ1dGVWYWx1ZT0xMl09IkF0dHJpYnV0ZVZhbHVlIixuW24uU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixuW24uRG9jdHlwZT0xNF09IkRvY3R5cGUiLG5bbi5FbmREb2N0eXBlVGFnPTE1XT0iRW5kRG9jdHlwZVRhZyIsbltuLkNvbnRlbnQ9MTZdPSJDb250ZW50IixuW24uV2hpdGVzcGFjZT0xN109IldoaXRlc3BhY2UiLG5bbi5Vbmtub3duPTE4XT0iVW5rbm93biIsbltuLlNjcmlwdD0xOV09IlNjcmlwdCIsbltuLlN0eWxlcz0yMF09IlN0eWxlcyIsbltuLkVPUz0yMV09IkVPUyIsKHI9Uj1SfHx7fSlbci5XaXRoaW5Db250ZW50PTBdPSJXaXRoaW5Db250ZW50IixyW3IuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixyW3IuQWZ0ZXJPcGVuaW5nRW5kVGFnPTJdPSJBZnRlck9wZW5pbmdFbmRUYWciLHJbci5XaXRoaW5Eb2N0eXBlPTNdPSJXaXRoaW5Eb2N0eXBlIixyW3IuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLHJbci5XaXRoaW5FbmRUYWc9NV09IldpdGhpbkVuZFRhZyIscltyLldpdGhpbkNvbW1lbnQ9Nl09IldpdGhpbkNvbW1lbnQiLHJbci5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixyW3IuV2l0aGluU3R5bGVDb250ZW50PThdPSJXaXRoaW5TdHlsZUNvbnRlbnQiLHJbci5BZnRlckF0dHJpYnV0ZU5hbWU9OV09IkFmdGVyQXR0cmlidXRlTmFtZSIscltyLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLFZuLk1hcmtkb3duLFZuLlBsYWluVGV4dCxWbi5NYXJrZG93bixWbi5QbGFpblRleHQsKGE9dnI9dnJ8fHt9KVthLlVua25vd249MF09IlVua25vd24iLGFbYS5GaWxlPTFdPSJGaWxlIixhW2EuRGlyZWN0b3J5PTJdPSJEaXJlY3RvcnkiLGFbYS5TeW1ib2xpY0xpbms9NjRdPSJTeW1ib2xpY0xpbmsiO3ZhciBDcj1Qbix4cj0oTHIucHJvdG90eXBlLmVvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn0sTHIucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZX0sTHIucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxMci5wcm90b3R5cGUuZ29CYWNrVG89ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbj1lfSxMci5wcm90b3R5cGUuZ29CYWNrPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24tPWV9LExyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LExyLnByb3RvdHlwZS5nb1RvRW5kPWZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvbj10aGlzLnNvdXJjZS5sZW5ndGh9LExyLnByb3RvdHlwZS5uZXh0Q2hhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rKyl8fDB9LExyLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyhlPXZvaWQgMD09PWU/MDplKSl8fDB9LExyLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LExyLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuIHRoaXMuYWR2YW5jZSh0KSwhMH0sTHIucHJvdG90eXBlLmFkdmFuY2VJZlJlZ0V4cD1mdW5jdGlvbihlKXtlPXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gZT8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK2UuaW5kZXgrZVswXS5sZW5ndGgsZVswXSk6IiJ9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxSZWdFeHA9ZnVuY3Rpb24oZSl7ZT10aGlzLnNvdXJjZS5zdWJzdHIodGhpcy5wb3NpdGlvbikubWF0Y2goZSk7cmV0dXJuIGU/KHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbitlLmluZGV4LGVbMF0pOih0aGlzLmdvVG9FbmQoKSwiIil9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFyPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5wb3NpdGlvbjx0aGlzLnNvdXJjZS5sZW5ndGg7KXtpZih0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pPT09ZSlyZXR1cm4hMDt0aGlzLmFkdmFuY2UoMSl9cmV0dXJuITF9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sTHIucHJvdG90eXBlLnNraXBXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5hZHZhbmNlV2hpbGVDaGFyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09UHJ8fGU9PT1Pcnx8ZT09PUhyfHxlPT09V3J8fGU9PT1Ecn0pfSxMci5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sTHIpO2Z1bmN0aW9uIExyKGUsdCl7dGhpcy5zb3VyY2U9ZSx0aGlzLmxlbj1lLmxlbmd0aCx0aGlzLnBvc2l0aW9uPXR9dmFyIEVyPSIhIi5jaGFyQ29kZUF0KDApLEFyPSItIi5jaGFyQ29kZUF0KDApLE1yPSI8Ii5jaGFyQ29kZUF0KDApLFJyPSI+Ii5jaGFyQ29kZUF0KDApLElyPSIvIi5jaGFyQ29kZUF0KDApLE5yPSI9Ii5jaGFyQ29kZUF0KDApLFVyPSciJy5jaGFyQ29kZUF0KDApLHpyPSInIi5jaGFyQ29kZUF0KDApLEhyPSJcbiIuY2hhckNvZGVBdCgwKSxEcj0iXHIiLmNoYXJDb2RlQXQoMCksV3I9IlxmIi5jaGFyQ29kZUF0KDApLFByPSIgIi5jaGFyQ29kZUF0KDApLE9yPSJcdCIuY2hhckNvZGVBdCgwKSxxcj17InRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIjohMCwidGV4dC9odG1sIjohMH07ZnVuY3Rpb24gRnIodCxlLG4sbyl7dm9pZCAwPT09biYmKG49Ui5XaXRoaW5Db250ZW50KSx2b2lkIDA9PT1vJiYobz0hMSk7dmFyIGkscyxsLGgsYyxkPW5ldyB4cih0LGU9dm9pZCAwPT09ZT8wOmUpLHU9bixyPTAsYT1NLlVua25vd247ZnVuY3Rpb24gbSgpe3JldHVybiBkLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmKCl7cmV0dXJuIGQuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIHI9ZSxpPW4sYT10fXJldHVybntzY2FuOmZ1bmN0aW9uKCl7dmFyIGU9ZC5wb3MoKSx0PXUsbj1mdW5jdGlvbiBlKCl7dmFyIHQ9ZC5wb3MoKTtpZihkLmVvcygpKXJldHVybiBwKHQsTS5FT1MpO3ZhciBuO3N3aXRjaCh1KXtjYXNlIFIuV2l0aGluQ29tbWVudDpyZXR1cm4gZC5hZHZhbmNlSWZDaGFycyhbQXIsQXIsUnJdKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kQ29tbWVudFRhZykpOihkLmFkdmFuY2VVbnRpbENoYXJzKFtBcixBcixScl0pLHAodCxNLkNvbW1lbnQpKTtjYXNlIFIuV2l0aGluRG9jdHlwZTpyZXR1cm4gZC5hZHZhbmNlSWZDaGFyKFJyKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kRG9jdHlwZVRhZykpOihkLmFkdmFuY2VVbnRpbENoYXIoUnIpLHAodCxNLkRvY3R5cGUpKTtjYXNlIFIuV2l0aGluQ29udGVudDppZihkLmFkdmFuY2VJZkNoYXIoTXIpKXtpZighZC5lb3MoKSYmZC5wZWVrQ2hhcigpPT09RXIpe2lmKGQuYWR2YW5jZUlmQ2hhcnMoW0VyLEFyLEFyXSkpcmV0dXJuIHU9Ui5XaXRoaW5Db21tZW50LHAodCxNLlN0YXJ0Q29tbWVudFRhZyk7aWYoZC5hZHZhbmNlSWZSZWdFeHAoL14hZG9jdHlwZS9pKSlyZXR1cm4gdT1SLldpdGhpbkRvY3R5cGUscCh0LE0uU3RhcnREb2N0eXBlVGFnKX1yZXR1cm4gZC5hZHZhbmNlSWZDaGFyKElyKT8odT1SLkFmdGVyT3BlbmluZ0VuZFRhZyxwKHQsTS5FbmRUYWdPcGVuKSk6KHU9Ui5BZnRlck9wZW5pbmdTdGFydFRhZyxwKHQsTS5TdGFydFRhZ09wZW4pKX1yZXR1cm4gZC5hZHZhbmNlVW50aWxDaGFyKE1yKSxwKHQsTS5Db250ZW50KTtjYXNlIFIuQWZ0ZXJPcGVuaW5nRW5kVGFnOnZhciByPW0oKTtyZXR1cm4gMDxyLmxlbmd0aD8odT1SLldpdGhpbkVuZFRhZyxwKHQsTS5FbmRUYWcpKTpkLnNraXBXaGl0ZXNwYWNlKCk/cCh0LE0uV2hpdGVzcGFjZSxDcigiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKToodT1SLldpdGhpbkVuZFRhZyxkLmFkdmFuY2VVbnRpbENoYXIoUnIpLHQ8ZC5wb3MoKT9wKHQsTS5Vbmtub3duLENyKCJlcnJvci5lbmRUYWdOYW1lRXhwZWN0ZWQiLCJFbmQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmUoKSk7Y2FzZSBSLldpdGhpbkVuZFRhZzppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO2lmKGQuYWR2YW5jZUlmQ2hhcihScikpcmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLkVuZFRhZ0Nsb3NlKTtpZihvJiZkLnBlZWtDaGFyKCk9PT1NcilyZXR1cm4gdT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kVGFnQ2xvc2UsQ3IoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKTtuPUNyKCJlcnJvci5jbG9zaW5nQnJhY2tldEV4cGVjdGVkIiwiQ2xvc2luZyBicmFja2V0IGV4cGVjdGVkLiIpO2JyZWFrO2Nhc2UgUi5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4obD1tKCksaD1jPXZvaWQgMCwwPGwubGVuZ3RoKT8ocz0hMSx1PVIuV2l0aGluVGFnLHAodCxNLlN0YXJ0VGFnKSk6ZC5za2lwV2hpdGVzcGFjZSgpP3AodCxNLldoaXRlc3BhY2UsQ3IoImVycm9yLnVuZXhwZWN0ZWRXaGl0ZXNwYWNlIiwiVGFnIG5hbWUgbXVzdCBkaXJlY3RseSBmb2xsb3cgdGhlIG9wZW4gYnJhY2tldC4iKSk6KHU9Ui5XaXRoaW5UYWcsZC5hZHZhbmNlVW50aWxDaGFyKFJyKSx0PGQucG9zKCk/cCh0LE0uVW5rbm93bixDcigiZXJyb3Iuc3RhcnRUYWdOYW1lRXhwZWN0ZWQiLCJTdGFydCB0YWcgbmFtZSBleHBlY3RlZC4iKSk6ZSgpKTtjYXNlIFIuV2l0aGluVGFnOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOnMmJjA8KGg9ZigpKS5sZW5ndGg/KHU9Ui5BZnRlckF0dHJpYnV0ZU5hbWUscz0hMSxwKHQsTS5BdHRyaWJ1dGVOYW1lKSk6ZC5hZHZhbmNlSWZDaGFycyhbSXIsUnJdKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uU3RhcnRUYWdTZWxmQ2xvc2UpKTpkLmFkdmFuY2VJZkNoYXIoUnIpPyh1PSJzY3JpcHQiPT09bD9jJiZxcltjXT9SLldpdGhpbkNvbnRlbnQ6Ui5XaXRoaW5TY3JpcHRDb250ZW50OiJzdHlsZSI9PT1sP1IuV2l0aGluU3R5bGVDb250ZW50OlIuV2l0aGluQ29udGVudCxwKHQsTS5TdGFydFRhZ0Nsb3NlKSk6byYmZC5wZWVrQ2hhcigpPT09TXI/KHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLlN0YXJ0VGFnQ2xvc2UsQ3IoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGQuYWR2YW5jZSgxKSxwKHQsTS5Vbmtub3duLENyKCJlcnJvci51bmV4cGVjdGVkQ2hhcmFjdGVySW5UYWciLCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiB0YWcuIikpKTtjYXNlIFIuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOmQuYWR2YW5jZUlmQ2hhcihOcik/KHU9Ui5CZWZvcmVBdHRyaWJ1dGVWYWx1ZSxwKHQsTS5EZWxpbWl0ZXJBc3NpZ24pKToodT1SLldpdGhpblRhZyxlKCkpO2Nhc2UgUi5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO3I9ZC5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZigwPHIubGVuZ3RoKXJldHVybiBkLnBlZWtDaGFyKCk9PT1SciYmZC5wZWVrQ2hhcigtMSk9PT1JciYmKGQuZ29CYWNrKDEpLHI9ci5zdWJzdHIoMCxyLmxlbmd0aC0xKSksInR5cGUiPT09aCYmKGM9ciksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKTtyPWQucGVla0NoYXIoKTtyZXR1cm4gcj09PXpyfHxyPT09VXI/KGQuYWR2YW5jZSgxKSxkLmFkdmFuY2VVbnRpbENoYXIocikmJmQuYWR2YW5jZSgxKSwidHlwZSI9PT1oJiYoYz1kLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsZC5wb3MoKS0xKSksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKSk6KHU9Ui5XaXRoaW5UYWcscz0hMSxlKCkpO2Nhc2UgUi5XaXRoaW5TY3JpcHRDb250ZW50OmZvcih2YXIgaT0xOyFkLmVvcygpOyl7dmFyIGE9ZC5hZHZhbmNlSWZSZWdFeHAoLzwhLS18LS0+fDxcLz9zY3JpcHRccypcLz8+Py9pKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIGQuZ29Ub0VuZCgpLHAodCxNLlNjcmlwdCk7aWYoIlx4M2MhLS0iPT09YSkxPT09aSYmKGk9Mik7ZWxzZSBpZigiLS1ceDNlIj09PWEpaT0xO2Vsc2UgaWYoIi8iIT09YVsxXSkyPT09aSYmKGk9Myk7ZWxzZXtpZigzIT09aSl7ZC5nb0JhY2soYS5sZW5ndGgpO2JyZWFrfWk9Mn19cmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHQ8ZC5wb3MoKT9wKHQsTS5TY3JpcHQpOmUoKTtjYXNlIFIuV2l0aGluU3R5bGVDb250ZW50OnJldHVybiBkLmFkdmFuY2VVbnRpbFJlZ0V4cCgvPFwvc3R5bGUvaSksdT1SLldpdGhpbkNvbnRlbnQsdDxkLnBvcygpP3AodCxNLlN0eWxlcyk6ZSgpfWQuYWR2YW5jZSgxKTt1PVIuV2l0aGluQ29udGVudDtyZXR1cm4gcCh0LE0uVW5rbm93bixuKX0oKTtyZXR1cm4gbj09PU0uRU9TfHxlIT09ZC5wb3MoKXx8byYmKG49PT1NLlN0YXJ0VGFnQ2xvc2V8fG49PT1NLkVuZFRhZ0Nsb3NlKT9uOihjb25zb2xlLmxvZygiU2Nhbm5lci5zY2FuIGhhcyBub3QgYWR2YW5jZWQgYXQgb2Zmc2V0ICIrZSsiLCBzdGF0ZSBiZWZvcmU6ICIrdCsiIGFmdGVyOiAiK3UpLGQuYWR2YW5jZSgxKSxwKGUsTS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiByfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBkLnBvcygpLXJ9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGQucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBkLmdldFNvdXJjZSgpLnN1YnN0cmluZyhyLGQucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gVnIoZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBCcj1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIEtyKGUpe3JldHVybiBlJiYwPD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1lLmxlbmd0aC0xO3I8PWk7KXt2YXIgYT0ocitpKS8yfDAsbz1uKGVbYV0sdCk7aWYobzwwKXI9MSthO2Vsc2V7aWYoISgwPG8pKXJldHVybiBhO2k9YS0xfX1yZXR1cm4tKHIrMSl9KEJyLGUudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlLHQpe3JldHVybiBlLmxvY2FsZUNvbXBhcmUodCl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoR3IucHJvdG90eXBlLCJhdHRyaWJ1dGVOYW1lcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXM/T2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKTpbXX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxHci5wcm90b3R5cGUuaXNTYW1lVGFnPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT10aGlzLnRhZz92b2lkIDA9PT1lOnZvaWQgMCE9PWUmJnRoaXMudGFnLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLnRhZy50b0xvd2VyQ2FzZSgpPT09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHci5wcm90b3R5cGUsImxhc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOnZvaWQgMH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxHci5wcm90b3R5cGUuZmluZE5vZGVCZWZvcmU9ZnVuY3Rpb24odCl7dmFyIGU9VnIodGhpcy5jaGlsZHJlbixmdW5jdGlvbihlKXtyZXR1cm4gdDw9ZS5zdGFydH0pLTE7aWYoMDw9ZSl7ZT10aGlzLmNoaWxkcmVuW2VdO2lmKHQ+ZS5zdGFydCl7aWYodDxlLmVuZClyZXR1cm4gZS5maW5kTm9kZUJlZm9yZSh0KTt2YXIgbj1lLmxhc3RDaGlsZDtyZXR1cm4gbiYmbi5lbmQ9PT1lLmVuZD9lLmZpbmROb2RlQmVmb3JlKHQpOmV9fXJldHVybiB0aGlzfSxHci5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbih0KXt2YXIgZT1Wcih0aGlzLmNoaWxkcmVuLGZ1bmN0aW9uKGUpe3JldHVybiB0PD1lLnN0YXJ0fSktMTtpZigwPD1lKXtlPXRoaXMuY2hpbGRyZW5bZV07aWYodD5lLnN0YXJ0JiZ0PD1lLmVuZClyZXR1cm4gZS5maW5kTm9kZUF0KHQpfXJldHVybiB0aGlzfTt2YXIganI9R3I7ZnVuY3Rpb24gR3IoZSx0LG4scil7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PXIsdGhpcy5jbG9zZWQ9ITF9ZnVuY3Rpb24gJHIoZSl7Zm9yKHZhciB0PUZyKGUsdm9pZCAwLHZvaWQgMCwhMCksbj1uZXcganIoMCxlLmxlbmd0aCxbXSx2b2lkIDApLHI9bixpPS0xLGE9dm9pZCAwLG89bnVsbCxzPXQuc2NhbigpO3MhPT1NLkVPUzspe3N3aXRjaChzKXtjYXNlIE0uU3RhcnRUYWdPcGVuOnZhciBjPW5ldyBqcih0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGMpLHI9YzticmVhaztjYXNlIE0uU3RhcnRUYWc6ci50YWc9dC5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE0uU3RhcnRUYWdDbG9zZTpyLnBhcmVudCYmKHIuZW5kPXQuZ2V0VG9rZW5FbmQoKSx0LmdldFRva2VuTGVuZ3RoKCk/KHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHIudGFnJiZLcihyLnRhZykmJihyLmNsb3NlZD0hMCxyPXIucGFyZW50KSk6cj1yLnBhcmVudCk7YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgTS5FbmRUYWdPcGVuOmk9dC5nZXRUb2tlbk9mZnNldCgpLGE9dm9pZCAwO2JyZWFrO2Nhc2UgTS5FbmRUYWc6YT10LmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBNLkVuZFRhZ0Nsb3NlOmZvcih2YXIgbD1yOyFsLmlzU2FtZVRhZyhhKSYmbC5wYXJlbnQ7KWw9bC5wYXJlbnQ7aWYobC5wYXJlbnQpe2Zvcig7ciE9PWw7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6bz10LmdldFRva2VuVGV4dCgpOyhoPXIuYXR0cmlidXRlcyl8fChyLmF0dHJpYnV0ZXM9aD17fSksaFtvXT1udWxsO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZTp2YXIgaCxjPXQuZ2V0VG9rZW5UZXh0KCk7KGg9ci5hdHRyaWJ1dGVzKSYmbyYmKGhbb109YyxvPW51bGwpfXM9dC5zY2FuKCl9Zm9yKDtyLnBhcmVudDspci5lbmQ9ZS5sZW5ndGgsci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyZXR1cm57cm9vdHM6bi5jaGlsZHJlbixmaW5kTm9kZUJlZm9yZTpuLmZpbmROb2RlQmVmb3JlLmJpbmQobiksZmluZE5vZGVBdDpuLmZpbmROb2RlQXQuYmluZChuKX19dmFyIEpyPXsiQWFjdXRlOyI6IsOBIixBYWN1dGU6IsOBIiwiYWFjdXRlOyI6IsOhIixhYWN1dGU6IsOhIiwiQWJyZXZlOyI6IsSCIiwiYWJyZXZlOyI6IsSDIiwiYWM7Ijoi4oi+IiwiYWNkOyI6IuKIvyIsImFjRTsiOiLiiL7MsyIsIkFjaXJjOyI6IsOCIixBY2lyYzoiw4IiLCJhY2lyYzsiOiLDoiIsYWNpcmM6IsOiIiwiYWN1dGU7IjoiwrQiLGFjdXRlOiLCtCIsIkFjeTsiOiLQkCIsImFjeTsiOiLQsCIsIkFFbGlnOyI6IsOGIixBRWxpZzoiw4YiLCJhZWxpZzsiOiLDpiIsYWVsaWc6IsOmIiwiYWY7Ijoi4oGhIiwiQWZyOyI6IvCdlIQiLCJhZnI7Ijoi8J2UniIsIkFncmF2ZTsiOiLDgCIsQWdyYXZlOiLDgCIsImFncmF2ZTsiOiLDoCIsYWdyYXZlOiLDoCIsImFsZWZzeW07Ijoi4oS1IiwiYWxlcGg7Ijoi4oS1IiwiQWxwaGE7IjoizpEiLCJhbHBoYTsiOiLOsSIsIkFtYWNyOyI6IsSAIiwiYW1hY3I7IjoixIEiLCJhbWFsZzsiOiLiqL8iLCJBTVA7IjoiJiIsQU1QOiImIiwiYW1wOyI6IiYiLGFtcDoiJiIsIkFuZDsiOiLiqZMiLCJhbmQ7Ijoi4oinIiwiYW5kYW5kOyI6IuKplSIsImFuZGQ7Ijoi4qmcIiwiYW5kc2xvcGU7Ijoi4qmYIiwiYW5kdjsiOiLiqZoiLCJhbmc7Ijoi4oigIiwiYW5nZTsiOiLipqQiLCJhbmdsZTsiOiLiiKAiLCJhbmdtc2Q7Ijoi4oihIiwiYW5nbXNkYWE7Ijoi4qaoIiwiYW5nbXNkYWI7Ijoi4qapIiwiYW5nbXNkYWM7Ijoi4qaqIiwiYW5nbXNkYWQ7Ijoi4qarIiwiYW5nbXNkYWU7Ijoi4qasIiwiYW5nbXNkYWY7Ijoi4qatIiwiYW5nbXNkYWc7Ijoi4qauIiwiYW5nbXNkYWg7Ijoi4qavIiwiYW5ncnQ7Ijoi4oifIiwiYW5ncnR2YjsiOiLiir4iLCJhbmdydHZiZDsiOiLipp0iLCJhbmdzcGg7Ijoi4oiiIiwiYW5nc3Q7Ijoiw4UiLCJhbmd6YXJyOyI6IuKNvCIsIkFvZ29uOyI6IsSEIiwiYW9nb247IjoixIUiLCJBb3BmOyI6IvCdlLgiLCJhb3BmOyI6IvCdlZIiLCJhcDsiOiLiiYgiLCJhcGFjaXI7Ijoi4qmvIiwiYXBFOyI6IuKpsCIsImFwZTsiOiLiiYoiLCJhcGlkOyI6IuKJiyIsImFwb3M7IjoiJyIsIkFwcGx5RnVuY3Rpb247Ijoi4oGhIiwiYXBwcm94OyI6IuKJiCIsImFwcHJveGVxOyI6IuKJiiIsIkFyaW5nOyI6IsOFIixBcmluZzoiw4UiLCJhcmluZzsiOiLDpSIsYXJpbmc6IsOlIiwiQXNjcjsiOiLwnZKcIiwiYXNjcjsiOiLwnZK2IiwiQXNzaWduOyI6IuKJlCIsImFzdDsiOiIqIiwiYXN5bXA7Ijoi4omIIiwiYXN5bXBlcTsiOiLiiY0iLCJBdGlsZGU7Ijoiw4MiLEF0aWxkZToiw4MiLCJhdGlsZGU7Ijoiw6MiLGF0aWxkZToiw6MiLCJBdW1sOyI6IsOEIixBdW1sOiLDhCIsImF1bWw7Ijoiw6QiLGF1bWw6IsOkIiwiYXdjb25pbnQ7Ijoi4oizIiwiYXdpbnQ7Ijoi4qiRIiwiYmFja2Nvbmc7Ijoi4omMIiwiYmFja2Vwc2lsb247Ijoiz7YiLCJiYWNrcHJpbWU7Ijoi4oC1IiwiYmFja3NpbTsiOiLiiL0iLCJiYWNrc2ltZXE7Ijoi4ouNIiwiQmFja3NsYXNoOyI6IuKIliIsIkJhcnY7Ijoi4qunIiwiYmFydmVlOyI6IuKKvSIsIkJhcndlZDsiOiLijIYiLCJiYXJ3ZWQ7Ijoi4oyFIiwiYmFyd2VkZ2U7Ijoi4oyFIiwiYmJyazsiOiLijrUiLCJiYnJrdGJyazsiOiLijrYiLCJiY29uZzsiOiLiiYwiLCJCY3k7Ijoi0JEiLCJiY3k7Ijoi0LEiLCJiZHF1bzsiOiLigJ4iLCJiZWNhdXM7Ijoi4oi1IiwiQmVjYXVzZTsiOiLiiLUiLCJiZWNhdXNlOyI6IuKItSIsImJlbXB0eXY7Ijoi4qawIiwiYmVwc2k7Ijoiz7YiLCJiZXJub3U7Ijoi4oSsIiwiQmVybm91bGxpczsiOiLihKwiLCJCZXRhOyI6Is6SIiwiYmV0YTsiOiLOsiIsImJldGg7Ijoi4oS2IiwiYmV0d2VlbjsiOiLiiawiLCJCZnI7Ijoi8J2UhSIsImJmcjsiOiLwnZSfIiwiYmlnY2FwOyI6IuKLgiIsImJpZ2NpcmM7Ijoi4pevIiwiYmlnY3VwOyI6IuKLgyIsImJpZ29kb3Q7Ijoi4qiAIiwiYmlnb3BsdXM7Ijoi4qiBIiwiYmlnb3RpbWVzOyI6IuKogiIsImJpZ3NxY3VwOyI6IuKohiIsImJpZ3N0YXI7Ijoi4piFIiwiYmlndHJpYW5nbGVkb3duOyI6IuKWvSIsImJpZ3RyaWFuZ2xldXA7Ijoi4pazIiwiYmlndXBsdXM7Ijoi4qiEIiwiYmlndmVlOyI6IuKLgSIsImJpZ3dlZGdlOyI6IuKLgCIsImJrYXJvdzsiOiLipI0iLCJibGFja2xvemVuZ2U7Ijoi4qerIiwiYmxhY2tzcXVhcmU7Ijoi4paqIiwiYmxhY2t0cmlhbmdsZTsiOiLilrQiLCJibGFja3RyaWFuZ2xlZG93bjsiOiLilr4iLCJibGFja3RyaWFuZ2xlbGVmdDsiOiLil4IiLCJibGFja3RyaWFuZ2xlcmlnaHQ7Ijoi4pa4IiwiYmxhbms7Ijoi4pCjIiwiYmxrMTI7Ijoi4paSIiwiYmxrMTQ7Ijoi4paRIiwiYmxrMzQ7Ijoi4paTIiwiYmxvY2s7Ijoi4paIIiwiYm5lOyI6Ij3ig6UiLCJibmVxdWl2OyI6IuKJoeKDpSIsImJOb3Q7Ijoi4qutIiwiYm5vdDsiOiLijJAiLCJCb3BmOyI6IvCdlLkiLCJib3BmOyI6IvCdlZMiLCJib3Q7Ijoi4oqlIiwiYm90dG9tOyI6IuKKpSIsImJvd3RpZTsiOiLii4giLCJib3hib3g7Ijoi4qeJIiwiYm94REw7Ijoi4pWXIiwiYm94RGw7Ijoi4pWWIiwiYm94ZEw7Ijoi4pWVIiwiYm94ZGw7Ijoi4pSQIiwiYm94RFI7Ijoi4pWUIiwiYm94RHI7Ijoi4pWTIiwiYm94ZFI7Ijoi4pWSIiwiYm94ZHI7Ijoi4pSMIiwiYm94SDsiOiLilZAiLCJib3hoOyI6IuKUgCIsImJveEhEOyI6IuKVpiIsImJveEhkOyI6IuKVpCIsImJveGhEOyI6IuKVpSIsImJveGhkOyI6IuKUrCIsImJveEhVOyI6IuKVqSIsImJveEh1OyI6IuKVpyIsImJveGhVOyI6IuKVqCIsImJveGh1OyI6IuKUtCIsImJveG1pbnVzOyI6IuKKnyIsImJveHBsdXM7Ijoi4oqeIiwiYm94dGltZXM7Ijoi4oqgIiwiYm94VUw7Ijoi4pWdIiwiYm94VWw7Ijoi4pWcIiwiYm94dUw7Ijoi4pWbIiwiYm94dWw7Ijoi4pSYIiwiYm94VVI7Ijoi4pWaIiwiYm94VXI7Ijoi4pWZIiwiYm94dVI7Ijoi4pWYIiwiYm94dXI7Ijoi4pSUIiwiYm94VjsiOiLilZEiLCJib3h2OyI6IuKUgiIsImJveFZIOyI6IuKVrCIsImJveFZoOyI6IuKVqyIsImJveHZIOyI6IuKVqiIsImJveHZoOyI6IuKUvCIsImJveFZMOyI6IuKVoyIsImJveFZsOyI6IuKVoiIsImJveHZMOyI6IuKVoSIsImJveHZsOyI6IuKUpCIsImJveFZSOyI6IuKVoCIsImJveFZyOyI6IuKVnyIsImJveHZSOyI6IuKVniIsImJveHZyOyI6IuKUnCIsImJwcmltZTsiOiLigLUiLCJCcmV2ZTsiOiLLmCIsImJyZXZlOyI6IsuYIiwiYnJ2YmFyOyI6IsKmIixicnZiYXI6IsKmIiwiQnNjcjsiOiLihKwiLCJic2NyOyI6IvCdkrciLCJic2VtaTsiOiLigY8iLCJic2ltOyI6IuKIvSIsImJzaW1lOyI6IuKLjSIsImJzb2w7IjoiXFwiLCJic29sYjsiOiLip4UiLCJic29saHN1YjsiOiLin4giLCJidWxsOyI6IuKAoiIsImJ1bGxldDsiOiLigKIiLCJidW1wOyI6IuKJjiIsImJ1bXBFOyI6IuKqriIsImJ1bXBlOyI6IuKJjyIsIkJ1bXBlcTsiOiLiiY4iLCJidW1wZXE7Ijoi4omPIiwiQ2FjdXRlOyI6IsSGIiwiY2FjdXRlOyI6IsSHIiwiQ2FwOyI6IuKLkiIsImNhcDsiOiLiiKkiLCJjYXBhbmQ7Ijoi4qmEIiwiY2FwYnJjdXA7Ijoi4qmJIiwiY2FwY2FwOyI6IuKpiyIsImNhcGN1cDsiOiLiqYciLCJjYXBkb3Q7Ijoi4qmAIiwiQ2FwaXRhbERpZmZlcmVudGlhbEQ7Ijoi4oWFIiwiY2FwczsiOiLiiKnvuIAiLCJjYXJldDsiOiLigYEiLCJjYXJvbjsiOiLLhyIsIkNheWxleXM7Ijoi4oStIiwiY2NhcHM7Ijoi4qmNIiwiQ2Nhcm9uOyI6IsSMIiwiY2Nhcm9uOyI6IsSNIiwiQ2NlZGlsOyI6IsOHIixDY2VkaWw6IsOHIiwiY2NlZGlsOyI6IsOnIixjY2VkaWw6IsOnIiwiQ2NpcmM7IjoixIgiLCJjY2lyYzsiOiLEiSIsIkNjb25pbnQ7Ijoi4oiwIiwiY2N1cHM7Ijoi4qmMIiwiY2N1cHNzbTsiOiLiqZAiLCJDZG90OyI6IsSKIiwiY2RvdDsiOiLEiyIsImNlZGlsOyI6IsK4IixjZWRpbDoiwrgiLCJDZWRpbGxhOyI6IsK4IiwiY2VtcHR5djsiOiLiprIiLCJjZW50OyI6IsKiIixjZW50OiLCoiIsIkNlbnRlckRvdDsiOiLCtyIsImNlbnRlcmRvdDsiOiLCtyIsIkNmcjsiOiLihK0iLCJjZnI7Ijoi8J2UoCIsIkNIY3k7Ijoi0KciLCJjaGN5OyI6ItGHIiwiY2hlY2s7Ijoi4pyTIiwiY2hlY2ttYXJrOyI6IuKckyIsIkNoaTsiOiLOpyIsImNoaTsiOiLPhyIsImNpcjsiOiLil4siLCJjaXJjOyI6IsuGIiwiY2lyY2VxOyI6IuKJlyIsImNpcmNsZWFycm93bGVmdDsiOiLihroiLCJjaXJjbGVhcnJvd3JpZ2h0OyI6IuKGuyIsImNpcmNsZWRhc3Q7Ijoi4oqbIiwiY2lyY2xlZGNpcmM7Ijoi4oqaIiwiY2lyY2xlZGRhc2g7Ijoi4oqdIiwiQ2lyY2xlRG90OyI6IuKKmSIsImNpcmNsZWRSOyI6IsKuIiwiY2lyY2xlZFM7Ijoi4pOIIiwiQ2lyY2xlTWludXM7Ijoi4oqWIiwiQ2lyY2xlUGx1czsiOiLiipUiLCJDaXJjbGVUaW1lczsiOiLiipciLCJjaXJFOyI6IuKngyIsImNpcmU7Ijoi4omXIiwiY2lyZm5pbnQ7Ijoi4qiQIiwiY2lybWlkOyI6IuKrryIsImNpcnNjaXI7Ijoi4qeCIiwiQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyI6IuKIsiIsIkNsb3NlQ3VybHlEb3VibGVRdW90ZTsiOiLigJ0iLCJDbG9zZUN1cmx5UXVvdGU7Ijoi4oCZIiwiY2x1YnM7Ijoi4pmjIiwiY2x1YnN1aXQ7Ijoi4pmjIiwiQ29sb247Ijoi4oi3IiwiY29sb247IjoiOiIsIkNvbG9uZTsiOiLiqbQiLCJjb2xvbmU7Ijoi4omUIiwiY29sb25lcTsiOiLiiZQiLCJjb21tYTsiOiIsIiwiY29tbWF0OyI6IkAiLCJjb21wOyI6IuKIgSIsImNvbXBmbjsiOiLiiJgiLCJjb21wbGVtZW50OyI6IuKIgSIsImNvbXBsZXhlczsiOiLihIIiLCJjb25nOyI6IuKJhSIsImNvbmdkb3Q7Ijoi4qmtIiwiQ29uZ3J1ZW50OyI6IuKJoSIsIkNvbmludDsiOiLiiK8iLCJjb25pbnQ7Ijoi4oiuIiwiQ29udG91ckludGVncmFsOyI6IuKIriIsIkNvcGY7Ijoi4oSCIiwiY29wZjsiOiLwnZWUIiwiY29wcm9kOyI6IuKIkCIsIkNvcHJvZHVjdDsiOiLiiJAiLCJDT1BZOyI6IsKpIixDT1BZOiLCqSIsImNvcHk7IjoiwqkiLGNvcHk6IsKpIiwiY29weXNyOyI6IuKElyIsIkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oizIiwiY3JhcnI7Ijoi4oa1IiwiQ3Jvc3M7Ijoi4qivIiwiY3Jvc3M7Ijoi4pyXIiwiQ3NjcjsiOiLwnZKeIiwiY3NjcjsiOiLwnZK4IiwiY3N1YjsiOiLiq48iLCJjc3ViZTsiOiLiq5EiLCJjc3VwOyI6IuKrkCIsImNzdXBlOyI6IuKrkiIsImN0ZG90OyI6IuKLryIsImN1ZGFycmw7Ijoi4qS4IiwiY3VkYXJycjsiOiLipLUiLCJjdWVwcjsiOiLii54iLCJjdWVzYzsiOiLii58iLCJjdWxhcnI7Ijoi4oa2IiwiY3VsYXJycDsiOiLipL0iLCJDdXA7Ijoi4ouTIiwiY3VwOyI6IuKIqiIsImN1cGJyY2FwOyI6IuKpiCIsIkN1cENhcDsiOiLiiY0iLCJjdXBjYXA7Ijoi4qmGIiwiY3VwY3VwOyI6IuKpiiIsImN1cGRvdDsiOiLiio0iLCJjdXBvcjsiOiLiqYUiLCJjdXBzOyI6IuKIqu+4gCIsImN1cmFycjsiOiLihrciLCJjdXJhcnJtOyI6IuKkvCIsImN1cmx5ZXFwcmVjOyI6IuKLniIsImN1cmx5ZXFzdWNjOyI6IuKLnyIsImN1cmx5dmVlOyI6IuKLjiIsImN1cmx5d2VkZ2U7Ijoi4ouPIiwiY3VycmVuOyI6IsKkIixjdXJyZW46IsKkIiwiY3VydmVhcnJvd2xlZnQ7Ijoi4oa2IiwiY3VydmVhcnJvd3JpZ2h0OyI6IuKGtyIsImN1dmVlOyI6IuKLjiIsImN1d2VkOyI6IuKLjyIsImN3Y29uaW50OyI6IuKIsiIsImN3aW50OyI6IuKIsSIsImN5bGN0eTsiOiLijK0iLCJEYWdnZXI7Ijoi4oChIiwiZGFnZ2VyOyI6IuKAoCIsImRhbGV0aDsiOiLihLgiLCJEYXJyOyI6IuKGoSIsImRBcnI7Ijoi4oeTIiwiZGFycjsiOiLihpMiLCJkYXNoOyI6IuKAkCIsIkRhc2h2OyI6IuKrpCIsImRhc2h2OyI6IuKKoyIsImRia2Fyb3c7Ijoi4qSPIiwiZGJsYWM7Ijoiy50iLCJEY2Fyb247IjoixI4iLCJkY2Fyb247IjoixI8iLCJEY3k7Ijoi0JQiLCJkY3k7Ijoi0LQiLCJERDsiOiLihYUiLCJkZDsiOiLihYYiLCJkZGFnZ2VyOyI6IuKAoSIsImRkYXJyOyI6IuKHiiIsIkREb3RyYWhkOyI6IuKkkSIsImRkb3RzZXE7Ijoi4qm3IiwiZGVnOyI6IsKwIixkZWc6IsKwIiwiRGVsOyI6IuKIhyIsIkRlbHRhOyI6Is6UIiwiZGVsdGE7IjoizrQiLCJkZW1wdHl2OyI6IuKmsSIsImRmaXNodDsiOiLipb8iLCJEZnI7Ijoi8J2UhyIsImRmcjsiOiLwnZShIiwiZEhhcjsiOiLipaUiLCJkaGFybDsiOiLih4MiLCJkaGFycjsiOiLih4IiLCJEaWFjcml0aWNhbEFjdXRlOyI6IsK0IiwiRGlhY3JpdGljYWxEb3Q7Ijoiy5kiLCJEaWFjcml0aWNhbERvdWJsZUFjdXRlOyI6IsudIiwiRGlhY3JpdGljYWxHcmF2ZTsiOiJgIiwiRGlhY3JpdGljYWxUaWxkZTsiOiLLnCIsImRpYW07Ijoi4ouEIiwiRGlhbW9uZDsiOiLii4QiLCJkaWFtb25kOyI6IuKLhCIsImRpYW1vbmRzdWl0OyI6IuKZpiIsImRpYW1zOyI6IuKZpiIsImRpZTsiOiLCqCIsIkRpZmZlcmVudGlhbEQ7Ijoi4oWGIiwiZGlnYW1tYTsiOiLPnSIsImRpc2luOyI6IuKLsiIsImRpdjsiOiLDtyIsImRpdmlkZTsiOiLDtyIsZGl2aWRlOiLDtyIsImRpdmlkZW9udGltZXM7Ijoi4ouHIiwiZGl2b254OyI6IuKLhyIsIkRKY3k7Ijoi0IIiLCJkamN5OyI6ItGSIiwiZGxjb3JuOyI6IuKMniIsImRsY3JvcDsiOiLijI0iLCJkb2xsYXI7IjoiJCIsIkRvcGY7Ijoi8J2UuyIsImRvcGY7Ijoi8J2VlSIsIkRvdDsiOiLCqCIsImRvdDsiOiLLmSIsIkRvdERvdDsiOiLig5wiLCJkb3RlcTsiOiLiiZAiLCJkb3RlcWRvdDsiOiLiiZEiLCJEb3RFcXVhbDsiOiLiiZAiLCJkb3RtaW51czsiOiLiiLgiLCJkb3RwbHVzOyI6IuKIlCIsImRvdHNxdWFyZTsiOiLiiqEiLCJkb3VibGViYXJ3ZWRnZTsiOiLijIYiLCJEb3VibGVDb250b3VySW50ZWdyYWw7Ijoi4oivIiwiRG91YmxlRG90OyI6IsKoIiwiRG91YmxlRG93bkFycm93OyI6IuKHkyIsIkRvdWJsZUxlZnRBcnJvdzsiOiLih5AiLCJEb3VibGVMZWZ0UmlnaHRBcnJvdzsiOiLih5QiLCJEb3VibGVMZWZ0VGVlOyI6IuKrpCIsIkRvdWJsZUxvbmdMZWZ0QXJyb3c7Ijoi4p+4IiwiRG91YmxlTG9uZ0xlZnRSaWdodEFycm93OyI6IuKfuiIsIkRvdWJsZUxvbmdSaWdodEFycm93OyI6IuKfuSIsIkRvdWJsZVJpZ2h0QXJyb3c7Ijoi4oeSIiwiRG91YmxlUmlnaHRUZWU7Ijoi4oqoIiwiRG91YmxlVXBBcnJvdzsiOiLih5EiLCJEb3VibGVVcERvd25BcnJvdzsiOiLih5UiLCJEb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKUiLCJEb3duQXJyb3c7Ijoi4oaTIiwiRG93bmFycm93OyI6IuKHkyIsImRvd25hcnJvdzsiOiLihpMiLCJEb3duQXJyb3dCYXI7Ijoi4qSTIiwiRG93bkFycm93VXBBcnJvdzsiOiLih7UiLCJEb3duQnJldmU7IjoizJEiLCJkb3duZG93bmFycm93czsiOiLih4oiLCJkb3duaGFycG9vbmxlZnQ7Ijoi4oeDIiwiZG93bmhhcnBvb25yaWdodDsiOiLih4IiLCJEb3duTGVmdFJpZ2h0VmVjdG9yOyI6IuKlkCIsIkRvd25MZWZ0VGVlVmVjdG9yOyI6IuKlniIsIkRvd25MZWZ0VmVjdG9yOyI6IuKGvSIsIkRvd25MZWZ0VmVjdG9yQmFyOyI6IuKlliIsIkRvd25SaWdodFRlZVZlY3RvcjsiOiLipZ8iLCJEb3duUmlnaHRWZWN0b3I7Ijoi4oeBIiwiRG93blJpZ2h0VmVjdG9yQmFyOyI6IuKllyIsIkRvd25UZWU7Ijoi4oqkIiwiRG93blRlZUFycm93OyI6IuKGpyIsImRyYmthcm93OyI6IuKkkCIsImRyY29ybjsiOiLijJ8iLCJkcmNyb3A7Ijoi4oyMIiwiRHNjcjsiOiLwnZKfIiwiZHNjcjsiOiLwnZK5IiwiRFNjeTsiOiLQhSIsImRzY3k7Ijoi0ZUiLCJkc29sOyI6IuKntiIsIkRzdHJvazsiOiLEkCIsImRzdHJvazsiOiLEkSIsImR0ZG90OyI6IuKLsSIsImR0cmk7Ijoi4pa/IiwiZHRyaWY7Ijoi4pa+IiwiZHVhcnI7Ijoi4oe1IiwiZHVoYXI7Ijoi4qWvIiwiZHdhbmdsZTsiOiLipqYiLCJEWmN5OyI6ItCPIiwiZHpjeTsiOiLRnyIsImR6aWdyYXJyOyI6IuKfvyIsIkVhY3V0ZTsiOiLDiSIsRWFjdXRlOiLDiSIsImVhY3V0ZTsiOiLDqSIsZWFjdXRlOiLDqSIsImVhc3RlcjsiOiLiqa4iLCJFY2Fyb247IjoixJoiLCJlY2Fyb247IjoixJsiLCJlY2lyOyI6IuKJliIsIkVjaXJjOyI6IsOKIixFY2lyYzoiw4oiLCJlY2lyYzsiOiLDqiIsZWNpcmM6IsOqIiwiZWNvbG9uOyI6IuKJlSIsIkVjeTsiOiLQrSIsImVjeTsiOiLRjSIsImVERG90OyI6IuKptyIsIkVkb3Q7IjoixJYiLCJlRG90OyI6IuKJkSIsImVkb3Q7IjoixJciLCJlZTsiOiLihYciLCJlZkRvdDsiOiLiiZIiLCJFZnI7Ijoi8J2UiCIsImVmcjsiOiLwnZSiIiwiZWc7Ijoi4qqaIiwiRWdyYXZlOyI6IsOIIixFZ3JhdmU6IsOIIiwiZWdyYXZlOyI6IsOoIixlZ3JhdmU6IsOoIiwiZWdzOyI6IuKqliIsImVnc2RvdDsiOiLiqpgiLCJlbDsiOiLiqpkiLCJFbGVtZW50OyI6IuKIiCIsImVsaW50ZXJzOyI6IuKPpyIsImVsbDsiOiLihJMiLCJlbHM7Ijoi4qqVIiwiZWxzZG90OyI6IuKqlyIsIkVtYWNyOyI6IsSSIiwiZW1hY3I7IjoixJMiLCJlbXB0eTsiOiLiiIUiLCJlbXB0eXNldDsiOiLiiIUiLCJFbXB0eVNtYWxsU3F1YXJlOyI6IuKXuyIsImVtcHR5djsiOiLiiIUiLCJFbXB0eVZlcnlTbWFsbFNxdWFyZTsiOiLilqsiLCJlbXNwOyI6IuKAgyIsImVtc3AxMzsiOiLigIQiLCJlbXNwMTQ7Ijoi4oCFIiwiRU5HOyI6IsWKIiwiZW5nOyI6IsWLIiwiZW5zcDsiOiLigIIiLCJFb2dvbjsiOiLEmCIsImVvZ29uOyI6IsSZIiwiRW9wZjsiOiLwnZS8IiwiZW9wZjsiOiLwnZWWIiwiZXBhcjsiOiLii5UiLCJlcGFyc2w7Ijoi4qejIiwiZXBsdXM7Ijoi4qmxIiwiZXBzaTsiOiLOtSIsIkVwc2lsb247IjoizpUiLCJlcHNpbG9uOyI6Is61IiwiZXBzaXY7Ijoiz7UiLCJlcWNpcmM7Ijoi4omWIiwiZXFjb2xvbjsiOiLiiZUiLCJlcXNpbTsiOiLiiYIiLCJlcXNsYW50Z3RyOyI6IuKqliIsImVxc2xhbnRsZXNzOyI6IuKqlSIsIkVxdWFsOyI6IuKptSIsImVxdWFsczsiOiI9IiwiRXF1YWxUaWxkZTsiOiLiiYIiLCJlcXVlc3Q7Ijoi4omfIiwiRXF1aWxpYnJpdW07Ijoi4oeMIiwiZXF1aXY7Ijoi4omhIiwiZXF1aXZERDsiOiLiqbgiLCJlcXZwYXJzbDsiOiLip6UiLCJlcmFycjsiOiLipbEiLCJlckRvdDsiOiLiiZMiLCJFc2NyOyI6IuKEsCIsImVzY3I7Ijoi4oSvIiwiZXNkb3Q7Ijoi4omQIiwiRXNpbTsiOiLiqbMiLCJlc2ltOyI6IuKJgiIsIkV0YTsiOiLOlyIsImV0YTsiOiLOtyIsIkVUSDsiOiLDkCIsRVRIOiLDkCIsImV0aDsiOiLDsCIsZXRoOiLDsCIsIkV1bWw7Ijoiw4siLEV1bWw6IsOLIiwiZXVtbDsiOiLDqyIsZXVtbDoiw6siLCJldXJvOyI6IuKCrCIsImV4Y2w7IjoiISIsImV4aXN0OyI6IuKIgyIsIkV4aXN0czsiOiLiiIMiLCJleHBlY3RhdGlvbjsiOiLihLAiLCJFeHBvbmVudGlhbEU7Ijoi4oWHIiwiZXhwb25lbnRpYWxlOyI6IuKFhyIsImZhbGxpbmdkb3RzZXE7Ijoi4omSIiwiRmN5OyI6ItCkIiwiZmN5OyI6ItGEIiwiZmVtYWxlOyI6IuKZgCIsImZmaWxpZzsiOiLvrIMiLCJmZmxpZzsiOiLvrIAiLCJmZmxsaWc7Ijoi76yEIiwiRmZyOyI6IvCdlIkiLCJmZnI7Ijoi8J2UoyIsImZpbGlnOyI6Iu+sgSIsIkZpbGxlZFNtYWxsU3F1YXJlOyI6IuKXvCIsIkZpbGxlZFZlcnlTbWFsbFNxdWFyZTsiOiLilqoiLCJmamxpZzsiOiJmaiIsImZsYXQ7Ijoi4pmtIiwiZmxsaWc7Ijoi76yCIiwiZmx0bnM7Ijoi4paxIiwiZm5vZjsiOiLGkiIsIkZvcGY7Ijoi8J2UvSIsImZvcGY7Ijoi8J2VlyIsIkZvckFsbDsiOiLiiIAiLCJmb3JhbGw7Ijoi4oiAIiwiZm9yazsiOiLii5QiLCJmb3JrdjsiOiLiq5kiLCJGb3VyaWVydHJmOyI6IuKEsSIsImZwYXJ0aW50OyI6IuKojSIsImZyYWMxMjsiOiLCvSIsZnJhYzEyOiLCvSIsImZyYWMxMzsiOiLihZMiLCJmcmFjMTQ7IjoiwrwiLGZyYWMxNDoiwrwiLCJmcmFjMTU7Ijoi4oWVIiwiZnJhYzE2OyI6IuKFmSIsImZyYWMxODsiOiLihZsiLCJmcmFjMjM7Ijoi4oWUIiwiZnJhYzI1OyI6IuKFliIsImZyYWMzNDsiOiLCviIsZnJhYzM0OiLCviIsImZyYWMzNTsiOiLihZciLCJmcmFjMzg7Ijoi4oWcIiwiZnJhYzQ1OyI6IuKFmCIsImZyYWM1NjsiOiLihZoiLCJmcmFjNTg7Ijoi4oWdIiwiZnJhYzc4OyI6IuKFniIsImZyYXNsOyI6IuKBhCIsImZyb3duOyI6IuKMoiIsIkZzY3I7Ijoi4oSxIiwiZnNjcjsiOiLwnZK7IiwiZ2FjdXRlOyI6Ise1IiwiR2FtbWE7IjoizpMiLCJnYW1tYTsiOiLOsyIsIkdhbW1hZDsiOiLPnCIsImdhbW1hZDsiOiLPnSIsImdhcDsiOiLiqoYiLCJHYnJldmU7IjoixJ4iLCJnYnJldmU7IjoixJ8iLCJHY2VkaWw7IjoixKIiLCJHY2lyYzsiOiLEnCIsImdjaXJjOyI6IsSdIiwiR2N5OyI6ItCTIiwiZ2N5OyI6ItCzIiwiR2RvdDsiOiLEoCIsImdkb3Q7IjoixKEiLCJnRTsiOiLiiaciLCJnZTsiOiLiiaUiLCJnRWw7Ijoi4qqMIiwiZ2VsOyI6IuKLmyIsImdlcTsiOiLiiaUiLCJnZXFxOyI6IuKJpyIsImdlcXNsYW50OyI6IuKpviIsImdlczsiOiLiqb4iLCJnZXNjYzsiOiLiqqkiLCJnZXNkb3Q7Ijoi4qqAIiwiZ2VzZG90bzsiOiLiqoIiLCJnZXNkb3RvbDsiOiLiqoQiLCJnZXNsOyI6IuKLm++4gCIsImdlc2xlczsiOiLiqpQiLCJHZnI7Ijoi8J2UiiIsImdmcjsiOiLwnZSkIiwiR2c7Ijoi4ouZIiwiZ2c7Ijoi4omrIiwiZ2dnOyI6IuKLmSIsImdpbWVsOyI6IuKEtyIsIkdKY3k7Ijoi0IMiLCJnamN5OyI6ItGTIiwiZ2w7Ijoi4om3IiwiZ2xhOyI6IuKqpSIsImdsRTsiOiLiqpIiLCJnbGo7Ijoi4qqkIiwiZ25hcDsiOiLiqooiLCJnbmFwcHJveDsiOiLiqooiLCJnbkU7Ijoi4ompIiwiZ25lOyI6IuKqiCIsImduZXE7Ijoi4qqIIiwiZ25lcXE7Ijoi4ompIiwiZ25zaW07Ijoi4ounIiwiR29wZjsiOiLwnZS+IiwiZ29wZjsiOiLwnZWYIiwiZ3JhdmU7IjoiYCIsIkdyZWF0ZXJFcXVhbDsiOiLiiaUiLCJHcmVhdGVyRXF1YWxMZXNzOyI6IuKLmyIsIkdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnIiwiR3JlYXRlckdyZWF0ZXI7Ijoi4qqiIiwiR3JlYXRlckxlc3M7Ijoi4om3IiwiR3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+IiwiR3JlYXRlclRpbGRlOyI6IuKJsyIsIkdzY3I7Ijoi8J2SoiIsImdzY3I7Ijoi4oSKIiwiZ3NpbTsiOiLiibMiLCJnc2ltZTsiOiLiqo4iLCJnc2ltbDsiOiLiqpAiLCJHVDsiOiI+IixHVDoiPiIsIkd0OyI6IuKJqyIsImd0OyI6Ij4iLGd0OiI+IiwiZ3RjYzsiOiLiqqciLCJndGNpcjsiOiLiqboiLCJndGRvdDsiOiLii5ciLCJndGxQYXI7Ijoi4qaVIiwiZ3RxdWVzdDsiOiLiqbwiLCJndHJhcHByb3g7Ijoi4qqGIiwiZ3RyYXJyOyI6IuKluCIsImd0cmRvdDsiOiLii5ciLCJndHJlcWxlc3M7Ijoi4oubIiwiZ3RyZXFxbGVzczsiOiLiqowiLCJndHJsZXNzOyI6IuKJtyIsImd0cnNpbTsiOiLiibMiLCJndmVydG5lcXE7Ijoi4omp77iAIiwiZ3ZuRTsiOiLiianvuIAiLCJIYWNlazsiOiLLhyIsImhhaXJzcDsiOiLigIoiLCJoYWxmOyI6IsK9IiwiaGFtaWx0OyI6IuKEiyIsIkhBUkRjeTsiOiLQqiIsImhhcmRjeTsiOiLRiiIsImhBcnI7Ijoi4oeUIiwiaGFycjsiOiLihpQiLCJoYXJyY2lyOyI6IuKliCIsImhhcnJ3OyI6IuKGrSIsIkhhdDsiOiJeIiwiaGJhcjsiOiLihI8iLCJIY2lyYzsiOiLEpCIsImhjaXJjOyI6IsSlIiwiaGVhcnRzOyI6IuKZpSIsImhlYXJ0c3VpdDsiOiLimaUiLCJoZWxsaXA7Ijoi4oCmIiwiaGVyY29uOyI6IuKKuSIsIkhmcjsiOiLihIwiLCJoZnI7Ijoi8J2UpSIsIkhpbGJlcnRTcGFjZTsiOiLihIsiLCJoa3NlYXJvdzsiOiLipKUiLCJoa3N3YXJvdzsiOiLipKYiLCJob2FycjsiOiLih78iLCJob210aHQ7Ijoi4oi7IiwiaG9va2xlZnRhcnJvdzsiOiLihqkiLCJob29rcmlnaHRhcnJvdzsiOiLihqoiLCJIb3BmOyI6IuKEjSIsImhvcGY7Ijoi8J2VmSIsImhvcmJhcjsiOiLigJUiLCJIb3Jpem9udGFsTGluZTsiOiLilIAiLCJIc2NyOyI6IuKEiyIsImhzY3I7Ijoi8J2SvSIsImhzbGFzaDsiOiLihI8iLCJIc3Ryb2s7IjoixKYiLCJoc3Ryb2s7IjoixKciLCJIdW1wRG93bkh1bXA7Ijoi4omOIiwiSHVtcEVxdWFsOyI6IuKJjyIsImh5YnVsbDsiOiLigYMiLCJoeXBoZW47Ijoi4oCQIiwiSWFjdXRlOyI6IsONIixJYWN1dGU6IsONIiwiaWFjdXRlOyI6IsOtIixpYWN1dGU6IsOtIiwiaWM7Ijoi4oGjIiwiSWNpcmM7Ijoiw44iLEljaXJjOiLDjiIsImljaXJjOyI6IsOuIixpY2lyYzoiw64iLCJJY3k7Ijoi0JgiLCJpY3k7Ijoi0LgiLCJJZG90OyI6IsSwIiwiSUVjeTsiOiLQlSIsImllY3k7Ijoi0LUiLCJpZXhjbDsiOiLCoSIsaWV4Y2w6IsKhIiwiaWZmOyI6IuKHlCIsIklmcjsiOiLihJEiLCJpZnI7Ijoi8J2UpiIsIklncmF2ZTsiOiLDjCIsSWdyYXZlOiLDjCIsImlncmF2ZTsiOiLDrCIsaWdyYXZlOiLDrCIsImlpOyI6IuKFiCIsImlpaWludDsiOiLiqIwiLCJpaWludDsiOiLiiK0iLCJpaW5maW47Ijoi4qecIiwiaWlvdGE7Ijoi4oSpIiwiSUpsaWc7IjoixLIiLCJpamxpZzsiOiLEsyIsIkltOyI6IuKEkSIsIkltYWNyOyI6IsSqIiwiaW1hY3I7IjoixKsiLCJpbWFnZTsiOiLihJEiLCJJbWFnaW5hcnlJOyI6IuKFiCIsImltYWdsaW5lOyI6IuKEkCIsImltYWdwYXJ0OyI6IuKEkSIsImltYXRoOyI6IsSxIiwiaW1vZjsiOiLiirciLCJpbXBlZDsiOiLGtSIsIkltcGxpZXM7Ijoi4oeSIiwiaW47Ijoi4oiIIiwiaW5jYXJlOyI6IuKEhSIsImluZmluOyI6IuKIniIsImluZmludGllOyI6IuKnnSIsImlub2RvdDsiOiLEsSIsIkludDsiOiLiiKwiLCJpbnQ7Ijoi4oirIiwiaW50Y2FsOyI6IuKKuiIsImludGVnZXJzOyI6IuKEpCIsIkludGVncmFsOyI6IuKIqyIsImludGVyY2FsOyI6IuKKuiIsIkludGVyc2VjdGlvbjsiOiLii4IiLCJpbnRsYXJoazsiOiLiqJciLCJpbnRwcm9kOyI6IuKovCIsIkludmlzaWJsZUNvbW1hOyI6IuKBoyIsIkludmlzaWJsZVRpbWVzOyI6IuKBoiIsIklPY3k7Ijoi0IEiLCJpb2N5OyI6ItGRIiwiSW9nb247IjoixK4iLCJpb2dvbjsiOiLEryIsIklvcGY7Ijoi8J2VgCIsImlvcGY7Ijoi8J2VmiIsIklvdGE7IjoizpkiLCJpb3RhOyI6Is65IiwiaXByb2Q7Ijoi4qi8IiwiaXF1ZXN0OyI6IsK/IixpcXVlc3Q6IsK/IiwiSXNjcjsiOiLihJAiLCJpc2NyOyI6IvCdkr4iLCJpc2luOyI6IuKIiCIsImlzaW5kb3Q7Ijoi4ou1IiwiaXNpbkU7Ijoi4ou5IiwiaXNpbnM7Ijoi4ou0IiwiaXNpbnN2OyI6IuKLsyIsImlzaW52OyI6IuKIiCIsIml0OyI6IuKBoiIsIkl0aWxkZTsiOiLEqCIsIml0aWxkZTsiOiLEqSIsIkl1a2N5OyI6ItCGIiwiaXVrY3k7Ijoi0ZYiLCJJdW1sOyI6IsOPIixJdW1sOiLDjyIsIml1bWw7Ijoiw68iLGl1bWw6IsOvIiwiSmNpcmM7IjoixLQiLCJqY2lyYzsiOiLEtSIsIkpjeTsiOiLQmSIsImpjeTsiOiLQuSIsIkpmcjsiOiLwnZSNIiwiamZyOyI6IvCdlKciLCJqbWF0aDsiOiLItyIsIkpvcGY7Ijoi8J2VgSIsImpvcGY7Ijoi8J2VmyIsIkpzY3I7Ijoi8J2SpSIsImpzY3I7Ijoi8J2SvyIsIkpzZXJjeTsiOiLQiCIsImpzZXJjeTsiOiLRmCIsIkp1a2N5OyI6ItCEIiwianVrY3k7Ijoi0ZQiLCJLYXBwYTsiOiLOmiIsImthcHBhOyI6Is66Iiwia2FwcGF2OyI6Is+wIiwiS2NlZGlsOyI6IsS2Iiwia2NlZGlsOyI6IsS3IiwiS2N5OyI6ItCaIiwia2N5OyI6ItC6IiwiS2ZyOyI6IvCdlI4iLCJrZnI7Ijoi8J2UqCIsImtncmVlbjsiOiLEuCIsIktIY3k7Ijoi0KUiLCJraGN5OyI6ItGFIiwiS0pjeTsiOiLQjCIsImtqY3k7Ijoi0ZwiLCJLb3BmOyI6IvCdlYIiLCJrb3BmOyI6IvCdlZwiLCJLc2NyOyI6IvCdkqYiLCJrc2NyOyI6IvCdk4AiLCJsQWFycjsiOiLih5oiLCJMYWN1dGU7IjoixLkiLCJsYWN1dGU7IjoixLoiLCJsYWVtcHR5djsiOiLiprQiLCJsYWdyYW47Ijoi4oSSIiwiTGFtYmRhOyI6Is6bIiwibGFtYmRhOyI6Is67IiwiTGFuZzsiOiLin6oiLCJsYW5nOyI6IuKfqCIsImxhbmdkOyI6IuKmkSIsImxhbmdsZTsiOiLin6giLCJsYXA7Ijoi4qqFIiwiTGFwbGFjZXRyZjsiOiLihJIiLCJsYXF1bzsiOiLCqyIsbGFxdW86IsKrIiwiTGFycjsiOiLihp4iLCJsQXJyOyI6IuKHkCIsImxhcnI7Ijoi4oaQIiwibGFycmI7Ijoi4oekIiwibGFycmJmczsiOiLipJ8iLCJsYXJyZnM7Ijoi4qSdIiwibGFycmhrOyI6IuKGqSIsImxhcnJscDsiOiLihqsiLCJsYXJycGw7Ijoi4qS5IiwibGFycnNpbTsiOiLipbMiLCJsYXJydGw7Ijoi4oaiIiwibGF0OyI6IuKqqyIsImxBdGFpbDsiOiLipJsiLCJsYXRhaWw7Ijoi4qSZIiwibGF0ZTsiOiLiqq0iLCJsYXRlczsiOiLiqq3vuIAiLCJsQmFycjsiOiLipI4iLCJsYmFycjsiOiLipIwiLCJsYmJyazsiOiLinbIiLCJsYnJhY2U7IjoieyIsImxicmFjazsiOiJbIiwibGJya2U7Ijoi4qaLIiwibGJya3NsZDsiOiLipo8iLCJsYnJrc2x1OyI6IuKmjSIsIkxjYXJvbjsiOiLEvSIsImxjYXJvbjsiOiLEviIsIkxjZWRpbDsiOiLEuyIsImxjZWRpbDsiOiLEvCIsImxjZWlsOyI6IuKMiCIsImxjdWI7IjoieyIsIkxjeTsiOiLQmyIsImxjeTsiOiLQuyIsImxkY2E7Ijoi4qS2IiwibGRxdW87Ijoi4oCcIiwibGRxdW9yOyI6IuKAniIsImxkcmRoYXI7Ijoi4qWnIiwibGRydXNoYXI7Ijoi4qWLIiwibGRzaDsiOiLihrIiLCJsRTsiOiLiiaYiLCJsZTsiOiLiiaQiLCJMZWZ0QW5nbGVCcmFja2V0OyI6IuKfqCIsIkxlZnRBcnJvdzsiOiLihpAiLCJMZWZ0YXJyb3c7Ijoi4oeQIiwibGVmdGFycm93OyI6IuKGkCIsIkxlZnRBcnJvd0JhcjsiOiLih6QiLCJMZWZ0QXJyb3dSaWdodEFycm93OyI6IuKHhiIsImxlZnRhcnJvd3RhaWw7Ijoi4oaiIiwiTGVmdENlaWxpbmc7Ijoi4oyIIiwiTGVmdERvdWJsZUJyYWNrZXQ7Ijoi4p+mIiwiTGVmdERvd25UZWVWZWN0b3I7Ijoi4qWhIiwiTGVmdERvd25WZWN0b3I7Ijoi4oeDIiwiTGVmdERvd25WZWN0b3JCYXI7Ijoi4qWZIiwiTGVmdEZsb29yOyI6IuKMiiIsImxlZnRoYXJwb29uZG93bjsiOiLihr0iLCJsZWZ0aGFycG9vbnVwOyI6IuKGvCIsImxlZnRsZWZ0YXJyb3dzOyI6IuKHhyIsIkxlZnRSaWdodEFycm93OyI6IuKGlCIsIkxlZnRyaWdodGFycm93OyI6IuKHlCIsImxlZnRyaWdodGFycm93OyI6IuKGlCIsImxlZnRyaWdodGFycm93czsiOiLih4YiLCJsZWZ0cmlnaHRoYXJwb29uczsiOiLih4siLCJsZWZ0cmlnaHRzcXVpZ2Fycm93OyI6IuKGrSIsIkxlZnRSaWdodFZlY3RvcjsiOiLipY4iLCJMZWZ0VGVlOyI6IuKKoyIsIkxlZnRUZWVBcnJvdzsiOiLihqQiLCJMZWZ0VGVlVmVjdG9yOyI6IuKlmiIsImxlZnR0aHJlZXRpbWVzOyI6IuKLiyIsIkxlZnRUcmlhbmdsZTsiOiLiirIiLCJMZWZ0VHJpYW5nbGVCYXI7Ijoi4qePIiwiTGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4oq0IiwiTGVmdFVwRG93blZlY3RvcjsiOiLipZEiLCJMZWZ0VXBUZWVWZWN0b3I7Ijoi4qWgIiwiTGVmdFVwVmVjdG9yOyI6IuKGvyIsIkxlZnRVcFZlY3RvckJhcjsiOiLipZgiLCJMZWZ0VmVjdG9yOyI6IuKGvCIsIkxlZnRWZWN0b3JCYXI7Ijoi4qWSIiwibEVnOyI6IuKqiyIsImxlZzsiOiLii5oiLCJsZXE7Ijoi4omkIiwibGVxcTsiOiLiiaYiLCJsZXFzbGFudDsiOiLiqb0iLCJsZXM7Ijoi4qm9IiwibGVzY2M7Ijoi4qqoIiwibGVzZG90OyI6IuKpvyIsImxlc2RvdG87Ijoi4qqBIiwibGVzZG90b3I7Ijoi4qqDIiwibGVzZzsiOiLii5rvuIAiLCJsZXNnZXM7Ijoi4qqTIiwibGVzc2FwcHJveDsiOiLiqoUiLCJsZXNzZG90OyI6IuKLliIsImxlc3NlcWd0cjsiOiLii5oiLCJsZXNzZXFxZ3RyOyI6IuKqiyIsIkxlc3NFcXVhbEdyZWF0ZXI7Ijoi4ouaIiwiTGVzc0Z1bGxFcXVhbDsiOiLiiaYiLCJMZXNzR3JlYXRlcjsiOiLiibYiLCJsZXNzZ3RyOyI6IuKJtiIsIkxlc3NMZXNzOyI6IuKqoSIsImxlc3NzaW07Ijoi4omyIiwiTGVzc1NsYW50RXF1YWw7Ijoi4qm9IiwiTGVzc1RpbGRlOyI6IuKJsiIsImxmaXNodDsiOiLipbwiLCJsZmxvb3I7Ijoi4oyKIiwiTGZyOyI6IvCdlI8iLCJsZnI7Ijoi8J2UqSIsImxnOyI6IuKJtiIsImxnRTsiOiLiqpEiLCJsSGFyOyI6IuKloiIsImxoYXJkOyI6IuKGvSIsImxoYXJ1OyI6IuKGvCIsImxoYXJ1bDsiOiLipaoiLCJsaGJsazsiOiLiloQiLCJMSmN5OyI6ItCJIiwibGpjeTsiOiLRmSIsIkxsOyI6IuKLmCIsImxsOyI6IuKJqiIsImxsYXJyOyI6IuKHhyIsImxsY29ybmVyOyI6IuKMniIsIkxsZWZ0YXJyb3c7Ijoi4oeaIiwibGxoYXJkOyI6IuKlqyIsImxsdHJpOyI6IuKXuiIsIkxtaWRvdDsiOiLEvyIsImxtaWRvdDsiOiLFgCIsImxtb3VzdDsiOiLijrAiLCJsbW91c3RhY2hlOyI6IuKOsCIsImxuYXA7Ijoi4qqJIiwibG5hcHByb3g7Ijoi4qqJIiwibG5FOyI6IuKJqCIsImxuZTsiOiLiqociLCJsbmVxOyI6IuKqhyIsImxuZXFxOyI6IuKJqCIsImxuc2ltOyI6IuKLpiIsImxvYW5nOyI6IuKfrCIsImxvYXJyOyI6IuKHvSIsImxvYnJrOyI6IuKfpiIsIkxvbmdMZWZ0QXJyb3c7Ijoi4p+1IiwiTG9uZ2xlZnRhcnJvdzsiOiLin7giLCJsb25nbGVmdGFycm93OyI6IuKftSIsIkxvbmdMZWZ0UmlnaHRBcnJvdzsiOiLin7ciLCJMb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+6IiwibG9uZ2xlZnRyaWdodGFycm93OyI6IuKftyIsImxvbmdtYXBzdG87Ijoi4p+8IiwiTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+2IiwiTG9uZ3JpZ2h0YXJyb3c7Ijoi4p+5IiwibG9uZ3JpZ2h0YXJyb3c7Ijoi4p+2IiwibG9vcGFycm93bGVmdDsiOiLihqsiLCJsb29wYXJyb3dyaWdodDsiOiLihqwiLCJsb3BhcjsiOiLipoUiLCJMb3BmOyI6IvCdlYMiLCJsb3BmOyI6IvCdlZ0iLCJsb3BsdXM7Ijoi4qitIiwibG90aW1lczsiOiLiqLQiLCJsb3dhc3Q7Ijoi4oiXIiwibG93YmFyOyI6Il8iLCJMb3dlckxlZnRBcnJvdzsiOiLihpkiLCJMb3dlclJpZ2h0QXJyb3c7Ijoi4oaYIiwibG96OyI6IuKXiiIsImxvemVuZ2U7Ijoi4peKIiwibG96ZjsiOiLip6siLCJscGFyOyI6IigiLCJscGFybHQ7Ijoi4qaTIiwibHJhcnI7Ijoi4oeGIiwibHJjb3JuZXI7Ijoi4oyfIiwibHJoYXI7Ijoi4oeLIiwibHJoYXJkOyI6IuKlrSIsImxybTsiOiLigI4iLCJscnRyaTsiOiLiir8iLCJsc2FxdW87Ijoi4oC5IiwiTHNjcjsiOiLihJIiLCJsc2NyOyI6IvCdk4EiLCJMc2g7Ijoi4oawIiwibHNoOyI6IuKGsCIsImxzaW07Ijoi4omyIiwibHNpbWU7Ijoi4qqNIiwibHNpbWc7Ijoi4qqPIiwibHNxYjsiOiJbIiwibHNxdW87Ijoi4oCYIiwibHNxdW9yOyI6IuKAmiIsIkxzdHJvazsiOiLFgSIsImxzdHJvazsiOiLFgiIsIkxUOyI6IjwiLExUOiI8IiwiTHQ7Ijoi4omqIiwibHQ7IjoiPCIsbHQ6IjwiLCJsdGNjOyI6IuKqpiIsImx0Y2lyOyI6IuKpuSIsImx0ZG90OyI6IuKLliIsImx0aHJlZTsiOiLii4siLCJsdGltZXM7Ijoi4ouJIiwibHRsYXJyOyI6IuKltiIsImx0cXVlc3Q7Ijoi4qm7IiwibHRyaTsiOiLil4MiLCJsdHJpZTsiOiLiirQiLCJsdHJpZjsiOiLil4IiLCJsdHJQYXI7Ijoi4qaWIiwibHVyZHNoYXI7Ijoi4qWKIiwibHVydWhhcjsiOiLipaYiLCJsdmVydG5lcXE7Ijoi4omo77iAIiwibHZuRTsiOiLiiajvuIAiLCJtYWNyOyI6IsKvIixtYWNyOiLCryIsIm1hbGU7Ijoi4pmCIiwibWFsdDsiOiLinKAiLCJtYWx0ZXNlOyI6IuKcoCIsIk1hcDsiOiLipIUiLCJtYXA7Ijoi4oamIiwibWFwc3RvOyI6IuKGpiIsIm1hcHN0b2Rvd247Ijoi4oanIiwibWFwc3RvbGVmdDsiOiLihqQiLCJtYXBzdG91cDsiOiLihqUiLCJtYXJrZXI7Ijoi4pauIiwibWNvbW1hOyI6IuKoqSIsIk1jeTsiOiLQnCIsIm1jeTsiOiLQvCIsIm1kYXNoOyI6IuKAlCIsIm1ERG90OyI6IuKIuiIsIm1lYXN1cmVkYW5nbGU7Ijoi4oihIiwiTWVkaXVtU3BhY2U7Ijoi4oGfIiwiTWVsbGludHJmOyI6IuKEsyIsIk1mcjsiOiLwnZSQIiwibWZyOyI6IvCdlKoiLCJtaG87Ijoi4oSnIiwibWljcm87IjoiwrUiLG1pY3JvOiLCtSIsIm1pZDsiOiLiiKMiLCJtaWRhc3Q7IjoiKiIsIm1pZGNpcjsiOiLiq7AiLCJtaWRkb3Q7IjoiwrciLG1pZGRvdDoiwrciLCJtaW51czsiOiLiiJIiLCJtaW51c2I7Ijoi4oqfIiwibWludXNkOyI6IuKIuCIsIm1pbnVzZHU7Ijoi4qiqIiwiTWludXNQbHVzOyI6IuKIkyIsIm1sY3A7Ijoi4qubIiwibWxkcjsiOiLigKYiLCJtbnBsdXM7Ijoi4oiTIiwibW9kZWxzOyI6IuKKpyIsIk1vcGY7Ijoi8J2VhCIsIm1vcGY7Ijoi8J2VniIsIm1wOyI6IuKIkyIsIk1zY3I7Ijoi4oSzIiwibXNjcjsiOiLwnZOCIiwibXN0cG9zOyI6IuKIviIsIk11OyI6Is6cIiwibXU7IjoizrwiLCJtdWx0aW1hcDsiOiLiirgiLCJtdW1hcDsiOiLiirgiLCJuYWJsYTsiOiLiiIciLCJOYWN1dGU7IjoixYMiLCJuYWN1dGU7IjoixYQiLCJuYW5nOyI6IuKIoOKDkiIsIm5hcDsiOiLiiYkiLCJuYXBFOyI6IuKpsMy4IiwibmFwaWQ7Ijoi4omLzLgiLCJuYXBvczsiOiLFiSIsIm5hcHByb3g7Ijoi4omJIiwibmF0dXI7Ijoi4pmuIiwibmF0dXJhbDsiOiLima4iLCJuYXR1cmFsczsiOiLihJUiLCJuYnNwOyI6IsKgIixuYnNwOiLCoCIsIm5idW1wOyI6IuKJjsy4IiwibmJ1bXBlOyI6IuKJj8y4IiwibmNhcDsiOiLiqYMiLCJOY2Fyb247IjoixYciLCJuY2Fyb247IjoixYgiLCJOY2VkaWw7IjoixYUiLCJuY2VkaWw7IjoixYYiLCJuY29uZzsiOiLiiYciLCJuY29uZ2RvdDsiOiLiqa3MuCIsIm5jdXA7Ijoi4qmCIiwiTmN5OyI6ItCdIiwibmN5OyI6ItC9IiwibmRhc2g7Ijoi4oCTIiwibmU7Ijoi4omgIiwibmVhcmhrOyI6IuKkpCIsIm5lQXJyOyI6IuKHlyIsIm5lYXJyOyI6IuKGlyIsIm5lYXJyb3c7Ijoi4oaXIiwibmVkb3Q7Ijoi4omQzLgiLCJOZWdhdGl2ZU1lZGl1bVNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpY2tTcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVRoaW5TcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVZlcnlUaGluU3BhY2U7Ijoi4oCLIiwibmVxdWl2OyI6IuKJoiIsIm5lc2VhcjsiOiLipKgiLCJuZXNpbTsiOiLiiYLMuCIsIk5lc3RlZEdyZWF0ZXJHcmVhdGVyOyI6IuKJqyIsIk5lc3RlZExlc3NMZXNzOyI6IuKJqiIsIk5ld0xpbmU7IjoiXG4iLCJuZXhpc3Q7Ijoi4oiEIiwibmV4aXN0czsiOiLiiIQiLCJOZnI7Ijoi8J2UkSIsIm5mcjsiOiLwnZSrIiwibmdFOyI6IuKJp8y4IiwibmdlOyI6IuKJsSIsIm5nZXE7Ijoi4omxIiwibmdlcXE7Ijoi4omnzLgiLCJuZ2Vxc2xhbnQ7Ijoi4qm+zLgiLCJuZ2VzOyI6IuKpvsy4IiwibkdnOyI6IuKLmcy4IiwibmdzaW07Ijoi4om1Iiwibkd0OyI6IuKJq+KDkiIsIm5ndDsiOiLiia8iLCJuZ3RyOyI6IuKJryIsIm5HdHY7Ijoi4omrzLgiLCJuaEFycjsiOiLih44iLCJuaGFycjsiOiLihq4iLCJuaHBhcjsiOiLiq7IiLCJuaTsiOiLiiIsiLCJuaXM7Ijoi4ou8IiwibmlzZDsiOiLii7oiLCJuaXY7Ijoi4oiLIiwiTkpjeTsiOiLQiiIsIm5qY3k7Ijoi0ZoiLCJubEFycjsiOiLih40iLCJubGFycjsiOiLihpoiLCJubGRyOyI6IuKApSIsIm5sRTsiOiLiiabMuCIsIm5sZTsiOiLiibAiLCJuTGVmdGFycm93OyI6IuKHjSIsIm5sZWZ0YXJyb3c7Ijoi4oaaIiwibkxlZnRyaWdodGFycm93OyI6IuKHjiIsIm5sZWZ0cmlnaHRhcnJvdzsiOiLihq4iLCJubGVxOyI6IuKJsCIsIm5sZXFxOyI6IuKJpsy4IiwibmxlcXNsYW50OyI6IuKpvcy4IiwibmxlczsiOiLiqb3MuCIsIm5sZXNzOyI6IuKJriIsIm5MbDsiOiLii5jMuCIsIm5sc2ltOyI6IuKJtCIsIm5MdDsiOiLiiarig5IiLCJubHQ7Ijoi4omuIiwibmx0cmk7Ijoi4ouqIiwibmx0cmllOyI6IuKLrCIsIm5MdHY7Ijoi4omqzLgiLCJubWlkOyI6IuKIpCIsIk5vQnJlYWs7Ijoi4oGgIiwiTm9uQnJlYWtpbmdTcGFjZTsiOiLCoCIsIk5vcGY7Ijoi4oSVIiwibm9wZjsiOiLwnZWfIiwiTm90OyI6IuKrrCIsIm5vdDsiOiLCrCIsbm90OiLCrCIsIk5vdENvbmdydWVudDsiOiLiiaIiLCJOb3RDdXBDYXA7Ijoi4omtIiwiTm90RG91YmxlVmVydGljYWxCYXI7Ijoi4oimIiwiTm90RWxlbWVudDsiOiLiiIkiLCJOb3RFcXVhbDsiOiLiiaAiLCJOb3RFcXVhbFRpbGRlOyI6IuKJgsy4IiwiTm90RXhpc3RzOyI6IuKIhCIsIk5vdEdyZWF0ZXI7Ijoi4omvIiwiTm90R3JlYXRlckVxdWFsOyI6IuKJsSIsIk5vdEdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnzLgiLCJOb3RHcmVhdGVyR3JlYXRlcjsiOiLiiavMuCIsIk5vdEdyZWF0ZXJMZXNzOyI6IuKJuSIsIk5vdEdyZWF0ZXJTbGFudEVxdWFsOyI6IuKpvsy4IiwiTm90R3JlYXRlclRpbGRlOyI6IuKJtSIsIk5vdEh1bXBEb3duSHVtcDsiOiLiiY7MuCIsIk5vdEh1bXBFcXVhbDsiOiLiiY/MuCIsIm5vdGluOyI6IuKIiSIsIm5vdGluZG90OyI6IuKLtcy4Iiwibm90aW5FOyI6IuKLucy4Iiwibm90aW52YTsiOiLiiIkiLCJub3RpbnZiOyI6IuKLtyIsIm5vdGludmM7Ijoi4ou2IiwiTm90TGVmdFRyaWFuZ2xlOyI6IuKLqiIsIk5vdExlZnRUcmlhbmdsZUJhcjsiOiLip4/MuCIsIk5vdExlZnRUcmlhbmdsZUVxdWFsOyI6IuKLrCIsIk5vdExlc3M7Ijoi4omuIiwiTm90TGVzc0VxdWFsOyI6IuKJsCIsIk5vdExlc3NHcmVhdGVyOyI6IuKJuCIsIk5vdExlc3NMZXNzOyI6IuKJqsy4IiwiTm90TGVzc1NsYW50RXF1YWw7Ijoi4qm9zLgiLCJOb3RMZXNzVGlsZGU7Ijoi4om0IiwiTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4qqizLgiLCJOb3ROZXN0ZWRMZXNzTGVzczsiOiLiqqHMuCIsIm5vdG5pOyI6IuKIjCIsIm5vdG5pdmE7Ijoi4oiMIiwibm90bml2YjsiOiLii74iLCJub3RuaXZjOyI6IuKLvSIsIk5vdFByZWNlZGVzOyI6IuKKgCIsIk5vdFByZWNlZGVzRXF1YWw7Ijoi4qqvzLgiLCJOb3RQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4ougIiwiTm90UmV2ZXJzZUVsZW1lbnQ7Ijoi4oiMIiwiTm90UmlnaHRUcmlhbmdsZTsiOiLii6siLCJOb3RSaWdodFRyaWFuZ2xlQmFyOyI6IuKnkMy4IiwiTm90UmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKLrSIsIk5vdFNxdWFyZVN1YnNldDsiOiLiio/MuCIsIk5vdFNxdWFyZVN1YnNldEVxdWFsOyI6IuKLoiIsIk5vdFNxdWFyZVN1cGVyc2V0OyI6IuKKkMy4IiwiTm90U3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLii6MiLCJOb3RTdWJzZXQ7Ijoi4oqC4oOSIiwiTm90U3Vic2V0RXF1YWw7Ijoi4oqIIiwiTm90U3VjY2VlZHM7Ijoi4oqBIiwiTm90U3VjY2VlZHNFcXVhbDsiOiLiqrDMuCIsIk5vdFN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLii6EiLCJOb3RTdWNjZWVkc1RpbGRlOyI6IuKJv8y4IiwiTm90U3VwZXJzZXQ7Ijoi4oqD4oOSIiwiTm90U3VwZXJzZXRFcXVhbDsiOiLiiokiLCJOb3RUaWxkZTsiOiLiiYEiLCJOb3RUaWxkZUVxdWFsOyI6IuKJhCIsIk5vdFRpbGRlRnVsbEVxdWFsOyI6IuKJhyIsIk5vdFRpbGRlVGlsZGU7Ijoi4omJIiwiTm90VmVydGljYWxCYXI7Ijoi4oikIiwibnBhcjsiOiLiiKYiLCJucGFyYWxsZWw7Ijoi4oimIiwibnBhcnNsOyI6IuKrveKDpSIsIm5wYXJ0OyI6IuKIgsy4IiwibnBvbGludDsiOiLiqJQiLCJucHI7Ijoi4oqAIiwibnByY3VlOyI6IuKLoCIsIm5wcmU7Ijoi4qqvzLgiLCJucHJlYzsiOiLiioAiLCJucHJlY2VxOyI6IuKqr8y4IiwibnJBcnI7Ijoi4oePIiwibnJhcnI7Ijoi4oabIiwibnJhcnJjOyI6IuKks8y4IiwibnJhcnJ3OyI6IuKGncy4IiwiblJpZ2h0YXJyb3c7Ijoi4oePIiwibnJpZ2h0YXJyb3c7Ijoi4oabIiwibnJ0cmk7Ijoi4ourIiwibnJ0cmllOyI6IuKLrSIsIm5zYzsiOiLiioEiLCJuc2NjdWU7Ijoi4ouhIiwibnNjZTsiOiLiqrDMuCIsIk5zY3I7Ijoi8J2SqSIsIm5zY3I7Ijoi8J2TgyIsIm5zaG9ydG1pZDsiOiLiiKQiLCJuc2hvcnRwYXJhbGxlbDsiOiLiiKYiLCJuc2ltOyI6IuKJgSIsIm5zaW1lOyI6IuKJhCIsIm5zaW1lcTsiOiLiiYQiLCJuc21pZDsiOiLiiKQiLCJuc3BhcjsiOiLiiKYiLCJuc3FzdWJlOyI6IuKLoiIsIm5zcXN1cGU7Ijoi4oujIiwibnN1YjsiOiLiioQiLCJuc3ViRTsiOiLiq4XMuCIsIm5zdWJlOyI6IuKKiCIsIm5zdWJzZXQ7Ijoi4oqC4oOSIiwibnN1YnNldGVxOyI6IuKKiCIsIm5zdWJzZXRlcXE7Ijoi4quFzLgiLCJuc3VjYzsiOiLiioEiLCJuc3VjY2VxOyI6IuKqsMy4IiwibnN1cDsiOiLiioUiLCJuc3VwRTsiOiLiq4bMuCIsIm5zdXBlOyI6IuKKiSIsIm5zdXBzZXQ7Ijoi4oqD4oOSIiwibnN1cHNldGVxOyI6IuKKiSIsIm5zdXBzZXRlcXE7Ijoi4quGzLgiLCJudGdsOyI6IuKJuSIsIk50aWxkZTsiOiLDkSIsTnRpbGRlOiLDkSIsIm50aWxkZTsiOiLDsSIsbnRpbGRlOiLDsSIsIm50bGc7Ijoi4om4IiwibnRyaWFuZ2xlbGVmdDsiOiLii6oiLCJudHJpYW5nbGVsZWZ0ZXE7Ijoi4ousIiwibnRyaWFuZ2xlcmlnaHQ7Ijoi4ourIiwibnRyaWFuZ2xlcmlnaHRlcTsiOiLii60iLCJOdTsiOiLOnSIsIm51OyI6Is69IiwibnVtOyI6IiMiLCJudW1lcm87Ijoi4oSWIiwibnVtc3A7Ijoi4oCHIiwibnZhcDsiOiLiiY3ig5IiLCJuVkRhc2g7Ijoi4oqvIiwiblZkYXNoOyI6IuKKriIsIm52RGFzaDsiOiLiiq0iLCJudmRhc2g7Ijoi4oqsIiwibnZnZTsiOiLiiaXig5IiLCJudmd0OyI6Ij7ig5IiLCJudkhhcnI7Ijoi4qSEIiwibnZpbmZpbjsiOiLip54iLCJudmxBcnI7Ijoi4qSCIiwibnZsZTsiOiLiiaTig5IiLCJudmx0OyI6Ijzig5IiLCJudmx0cmllOyI6IuKKtOKDkiIsIm52ckFycjsiOiLipIMiLCJudnJ0cmllOyI6IuKKteKDkiIsIm52c2ltOyI6IuKIvOKDkiIsIm53YXJoazsiOiLipKMiLCJud0FycjsiOiLih5YiLCJud2FycjsiOiLihpYiLCJud2Fycm93OyI6IuKGliIsIm53bmVhcjsiOiLipKciLCJPYWN1dGU7Ijoiw5MiLE9hY3V0ZToiw5MiLCJvYWN1dGU7Ijoiw7MiLG9hY3V0ZToiw7MiLCJvYXN0OyI6IuKKmyIsIm9jaXI7Ijoi4oqaIiwiT2NpcmM7Ijoiw5QiLE9jaXJjOiLDlCIsIm9jaXJjOyI6IsO0IixvY2lyYzoiw7QiLCJPY3k7Ijoi0J4iLCJvY3k7Ijoi0L4iLCJvZGFzaDsiOiLiip0iLCJPZGJsYWM7IjoixZAiLCJvZGJsYWM7IjoixZEiLCJvZGl2OyI6IuKouCIsIm9kb3Q7Ijoi4oqZIiwib2Rzb2xkOyI6IuKmvCIsIk9FbGlnOyI6IsWSIiwib2VsaWc7IjoixZMiLCJvZmNpcjsiOiLipr8iLCJPZnI7Ijoi8J2UkiIsIm9mcjsiOiLwnZSsIiwib2dvbjsiOiLLmyIsIk9ncmF2ZTsiOiLDkiIsT2dyYXZlOiLDkiIsIm9ncmF2ZTsiOiLDsiIsb2dyYXZlOiLDsiIsIm9ndDsiOiLip4EiLCJvaGJhcjsiOiLiprUiLCJvaG07IjoizqkiLCJvaW50OyI6IuKIriIsIm9sYXJyOyI6IuKGuiIsIm9sY2lyOyI6IuKmviIsIm9sY3Jvc3M7Ijoi4qa7Iiwib2xpbmU7Ijoi4oC+Iiwib2x0OyI6IuKngCIsIk9tYWNyOyI6IsWMIiwib21hY3I7IjoixY0iLCJPbWVnYTsiOiLOqSIsIm9tZWdhOyI6Is+JIiwiT21pY3JvbjsiOiLOnyIsIm9taWNyb247Ijoizr8iLCJvbWlkOyI6IuKmtiIsIm9taW51czsiOiLiipYiLCJPb3BmOyI6IvCdlYYiLCJvb3BmOyI6IvCdlaAiLCJvcGFyOyI6IuKmtyIsIk9wZW5DdXJseURvdWJsZVF1b3RlOyI6IuKAnCIsIk9wZW5DdXJseVF1b3RlOyI6IuKAmCIsIm9wZXJwOyI6IuKmuSIsIm9wbHVzOyI6IuKKlSIsIk9yOyI6IuKplCIsIm9yOyI6IuKIqCIsIm9yYXJyOyI6IuKGuyIsIm9yZDsiOiLiqZ0iLCJvcmRlcjsiOiLihLQiLCJvcmRlcm9mOyI6IuKEtCIsIm9yZGY7IjoiwqoiLG9yZGY6IsKqIiwib3JkbTsiOiLCuiIsb3JkbToiwroiLCJvcmlnb2Y7Ijoi4oq2Iiwib3JvcjsiOiLiqZYiLCJvcnNsb3BlOyI6IuKplyIsIm9ydjsiOiLiqZsiLCJvUzsiOiLik4giLCJPc2NyOyI6IvCdkqoiLCJvc2NyOyI6IuKEtCIsIk9zbGFzaDsiOiLDmCIsT3NsYXNoOiLDmCIsIm9zbGFzaDsiOiLDuCIsb3NsYXNoOiLDuCIsIm9zb2w7Ijoi4oqYIiwiT3RpbGRlOyI6IsOVIixPdGlsZGU6IsOVIiwib3RpbGRlOyI6IsO1IixvdGlsZGU6IsO1IiwiT3RpbWVzOyI6IuKotyIsIm90aW1lczsiOiLiipciLCJvdGltZXNhczsiOiLiqLYiLCJPdW1sOyI6IsOWIixPdW1sOiLDliIsIm91bWw7Ijoiw7YiLG91bWw6IsO2Iiwib3ZiYXI7Ijoi4oy9IiwiT3ZlckJhcjsiOiLigL4iLCJPdmVyQnJhY2U7Ijoi4o+eIiwiT3ZlckJyYWNrZXQ7Ijoi4o60IiwiT3ZlclBhcmVudGhlc2lzOyI6IuKPnCIsInBhcjsiOiLiiKUiLCJwYXJhOyI6IsK2IixwYXJhOiLCtiIsInBhcmFsbGVsOyI6IuKIpSIsInBhcnNpbTsiOiLiq7MiLCJwYXJzbDsiOiLiq70iLCJwYXJ0OyI6IuKIgiIsIlBhcnRpYWxEOyI6IuKIgiIsIlBjeTsiOiLQnyIsInBjeTsiOiLQvyIsInBlcmNudDsiOiIlIiwicGVyaW9kOyI6Ii4iLCJwZXJtaWw7Ijoi4oCwIiwicGVycDsiOiLiiqUiLCJwZXJ0ZW5rOyI6IuKAsSIsIlBmcjsiOiLwnZSTIiwicGZyOyI6IvCdlK0iLCJQaGk7IjoizqYiLCJwaGk7Ijoiz4YiLCJwaGl2OyI6Is+VIiwicGhtbWF0OyI6IuKEsyIsInBob25lOyI6IuKYjiIsIlBpOyI6Is6gIiwicGk7Ijoiz4AiLCJwaXRjaGZvcms7Ijoi4ouUIiwicGl2OyI6Is+WIiwicGxhbmNrOyI6IuKEjyIsInBsYW5ja2g7Ijoi4oSOIiwicGxhbmt2OyI6IuKEjyIsInBsdXM7IjoiKyIsInBsdXNhY2lyOyI6IuKooyIsInBsdXNiOyI6IuKKniIsInBsdXNjaXI7Ijoi4qiiIiwicGx1c2RvOyI6IuKIlCIsInBsdXNkdTsiOiLiqKUiLCJwbHVzZTsiOiLiqbIiLCJQbHVzTWludXM7IjoiwrEiLCJwbHVzbW47IjoiwrEiLHBsdXNtbjoiwrEiLCJwbHVzc2ltOyI6IuKopiIsInBsdXN0d287Ijoi4qinIiwicG07IjoiwrEiLCJQb2luY2FyZXBsYW5lOyI6IuKEjCIsInBvaW50aW50OyI6IuKolSIsIlBvcGY7Ijoi4oSZIiwicG9wZjsiOiLwnZWhIiwicG91bmQ7IjoiwqMiLHBvdW5kOiLCoyIsIlByOyI6IuKquyIsInByOyI6IuKJuiIsInByYXA7Ijoi4qq3IiwicHJjdWU7Ijoi4om8IiwicHJFOyI6IuKqsyIsInByZTsiOiLiqq8iLCJwcmVjOyI6IuKJuiIsInByZWNhcHByb3g7Ijoi4qq3IiwicHJlY2N1cmx5ZXE7Ijoi4om8IiwiUHJlY2VkZXM7Ijoi4om6IiwiUHJlY2VkZXNFcXVhbDsiOiLiqq8iLCJQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4om8IiwiUHJlY2VkZXNUaWxkZTsiOiLiib4iLCJwcmVjZXE7Ijoi4qqvIiwicHJlY25hcHByb3g7Ijoi4qq5IiwicHJlY25lcXE7Ijoi4qq1IiwicHJlY25zaW07Ijoi4ouoIiwicHJlY3NpbTsiOiLiib4iLCJQcmltZTsiOiLigLMiLCJwcmltZTsiOiLigLIiLCJwcmltZXM7Ijoi4oSZIiwicHJuYXA7Ijoi4qq5IiwicHJuRTsiOiLiqrUiLCJwcm5zaW07Ijoi4ouoIiwicHJvZDsiOiLiiI8iLCJQcm9kdWN0OyI6IuKIjyIsInByb2ZhbGFyOyI6IuKMriIsInByb2ZsaW5lOyI6IuKMkiIsInByb2ZzdXJmOyI6IuKMkyIsInByb3A7Ijoi4oidIiwiUHJvcG9ydGlvbjsiOiLiiLciLCJQcm9wb3J0aW9uYWw7Ijoi4oidIiwicHJvcHRvOyI6IuKInSIsInByc2ltOyI6IuKJviIsInBydXJlbDsiOiLiirAiLCJQc2NyOyI6IvCdkqsiLCJwc2NyOyI6IvCdk4UiLCJQc2k7IjoizqgiLCJwc2k7Ijoiz4giLCJwdW5jc3A7Ijoi4oCIIiwiUWZyOyI6IvCdlJQiLCJxZnI7Ijoi8J2UriIsInFpbnQ7Ijoi4qiMIiwiUW9wZjsiOiLihJoiLCJxb3BmOyI6IvCdlaIiLCJxcHJpbWU7Ijoi4oGXIiwiUXNjcjsiOiLwnZKsIiwicXNjcjsiOiLwnZOGIiwicXVhdGVybmlvbnM7Ijoi4oSNIiwicXVhdGludDsiOiLiqJYiLCJxdWVzdDsiOiI/IiwicXVlc3RlcTsiOiLiiZ8iLCJRVU9UOyI6JyInLFFVT1Q6JyInLCJxdW90OyI6JyInLHF1b3Q6JyInLCJyQWFycjsiOiLih5siLCJyYWNlOyI6IuKIvcyxIiwiUmFjdXRlOyI6IsWUIiwicmFjdXRlOyI6IsWVIiwicmFkaWM7Ijoi4oiaIiwicmFlbXB0eXY7Ijoi4qazIiwiUmFuZzsiOiLin6siLCJyYW5nOyI6IuKfqSIsInJhbmdkOyI6IuKmkiIsInJhbmdlOyI6IuKmpSIsInJhbmdsZTsiOiLin6kiLCJyYXF1bzsiOiLCuyIscmFxdW86IsK7IiwiUmFycjsiOiLihqAiLCJyQXJyOyI6IuKHkiIsInJhcnI7Ijoi4oaSIiwicmFycmFwOyI6IuKltSIsInJhcnJiOyI6IuKHpSIsInJhcnJiZnM7Ijoi4qSgIiwicmFycmM7Ijoi4qSzIiwicmFycmZzOyI6IuKkniIsInJhcnJoazsiOiLihqoiLCJyYXJybHA7Ijoi4oasIiwicmFycnBsOyI6IuKlhSIsInJhcnJzaW07Ijoi4qW0IiwiUmFycnRsOyI6IuKkliIsInJhcnJ0bDsiOiLihqMiLCJyYXJydzsiOiLihp0iLCJyQXRhaWw7Ijoi4qScIiwicmF0YWlsOyI6IuKkmiIsInJhdGlvOyI6IuKItiIsInJhdGlvbmFsczsiOiLihJoiLCJSQmFycjsiOiLipJAiLCJyQmFycjsiOiLipI8iLCJyYmFycjsiOiLipI0iLCJyYmJyazsiOiLinbMiLCJyYnJhY2U7IjoifSIsInJicmFjazsiOiJdIiwicmJya2U7Ijoi4qaMIiwicmJya3NsZDsiOiLipo4iLCJyYnJrc2x1OyI6IuKmkCIsIlJjYXJvbjsiOiLFmCIsInJjYXJvbjsiOiLFmSIsIlJjZWRpbDsiOiLFliIsInJjZWRpbDsiOiLFlyIsInJjZWlsOyI6IuKMiSIsInJjdWI7IjoifSIsIlJjeTsiOiLQoCIsInJjeTsiOiLRgCIsInJkY2E7Ijoi4qS3IiwicmRsZGhhcjsiOiLipakiLCJyZHF1bzsiOiLigJ0iLCJyZHF1b3I7Ijoi4oCdIiwicmRzaDsiOiLihrMiLCJSZTsiOiLihJwiLCJyZWFsOyI6IuKEnCIsInJlYWxpbmU7Ijoi4oSbIiwicmVhbHBhcnQ7Ijoi4oScIiwicmVhbHM7Ijoi4oSdIiwicmVjdDsiOiLilq0iLCJSRUc7Ijoiwq4iLFJFRzoiwq4iLCJyZWc7Ijoiwq4iLHJlZzoiwq4iLCJSZXZlcnNlRWxlbWVudDsiOiLiiIsiLCJSZXZlcnNlRXF1aWxpYnJpdW07Ijoi4oeLIiwiUmV2ZXJzZVVwRXF1aWxpYnJpdW07Ijoi4qWvIiwicmZpc2h0OyI6IuKlvSIsInJmbG9vcjsiOiLijIsiLCJSZnI7Ijoi4oScIiwicmZyOyI6IvCdlK8iLCJySGFyOyI6IuKlpCIsInJoYXJkOyI6IuKHgSIsInJoYXJ1OyI6IuKHgCIsInJoYXJ1bDsiOiLipawiLCJSaG87IjoizqEiLCJyaG87Ijoiz4EiLCJyaG92OyI6Is+xIiwiUmlnaHRBbmdsZUJyYWNrZXQ7Ijoi4p+pIiwiUmlnaHRBcnJvdzsiOiLihpIiLCJSaWdodGFycm93OyI6IuKHkiIsInJpZ2h0YXJyb3c7Ijoi4oaSIiwiUmlnaHRBcnJvd0JhcjsiOiLih6UiLCJSaWdodEFycm93TGVmdEFycm93OyI6IuKHhCIsInJpZ2h0YXJyb3d0YWlsOyI6IuKGoyIsIlJpZ2h0Q2VpbGluZzsiOiLijIkiLCJSaWdodERvdWJsZUJyYWNrZXQ7Ijoi4p+nIiwiUmlnaHREb3duVGVlVmVjdG9yOyI6IuKlnSIsIlJpZ2h0RG93blZlY3RvcjsiOiLih4IiLCJSaWdodERvd25WZWN0b3JCYXI7Ijoi4qWVIiwiUmlnaHRGbG9vcjsiOiLijIsiLCJyaWdodGhhcnBvb25kb3duOyI6IuKHgSIsInJpZ2h0aGFycG9vbnVwOyI6IuKHgCIsInJpZ2h0bGVmdGFycm93czsiOiLih4QiLCJyaWdodGxlZnRoYXJwb29uczsiOiLih4wiLCJyaWdodHJpZ2h0YXJyb3dzOyI6IuKHiSIsInJpZ2h0c3F1aWdhcnJvdzsiOiLihp0iLCJSaWdodFRlZTsiOiLiiqIiLCJSaWdodFRlZUFycm93OyI6IuKGpiIsIlJpZ2h0VGVlVmVjdG9yOyI6IuKlmyIsInJpZ2h0dGhyZWV0aW1lczsiOiLii4wiLCJSaWdodFRyaWFuZ2xlOyI6IuKKsyIsIlJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQIiwiUmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKKtSIsIlJpZ2h0VXBEb3duVmVjdG9yOyI6IuKljyIsIlJpZ2h0VXBUZWVWZWN0b3I7Ijoi4qWcIiwiUmlnaHRVcFZlY3RvcjsiOiLihr4iLCJSaWdodFVwVmVjdG9yQmFyOyI6IuKllCIsIlJpZ2h0VmVjdG9yOyI6IuKHgCIsIlJpZ2h0VmVjdG9yQmFyOyI6IuKlkyIsInJpbmc7Ijoiy5oiLCJyaXNpbmdkb3RzZXE7Ijoi4omTIiwicmxhcnI7Ijoi4oeEIiwicmxoYXI7Ijoi4oeMIiwicmxtOyI6IuKAjyIsInJtb3VzdDsiOiLijrEiLCJybW91c3RhY2hlOyI6IuKOsSIsInJubWlkOyI6IuKrriIsInJvYW5nOyI6IuKfrSIsInJvYXJyOyI6IuKHviIsInJvYnJrOyI6IuKfpyIsInJvcGFyOyI6IuKmhiIsIlJvcGY7Ijoi4oSdIiwicm9wZjsiOiLwnZWjIiwicm9wbHVzOyI6IuKoriIsInJvdGltZXM7Ijoi4qi1IiwiUm91bmRJbXBsaWVzOyI6IuKlsCIsInJwYXI7IjoiKSIsInJwYXJndDsiOiLippQiLCJycHBvbGludDsiOiLiqJIiLCJycmFycjsiOiLih4kiLCJScmlnaHRhcnJvdzsiOiLih5siLCJyc2FxdW87Ijoi4oC6IiwiUnNjcjsiOiLihJsiLCJyc2NyOyI6IvCdk4ciLCJSc2g7Ijoi4oaxIiwicnNoOyI6IuKGsSIsInJzcWI7IjoiXSIsInJzcXVvOyI6IuKAmSIsInJzcXVvcjsiOiLigJkiLCJydGhyZWU7Ijoi4ouMIiwicnRpbWVzOyI6IuKLiiIsInJ0cmk7Ijoi4pa5IiwicnRyaWU7Ijoi4oq1IiwicnRyaWY7Ijoi4pa4IiwicnRyaWx0cmk7Ijoi4qeOIiwiUnVsZURlbGF5ZWQ7Ijoi4qe0IiwicnVsdWhhcjsiOiLipagiLCJyeDsiOiLihJ4iLCJTYWN1dGU7IjoixZoiLCJzYWN1dGU7IjoixZsiLCJzYnF1bzsiOiLigJoiLCJTYzsiOiLiqrwiLCJzYzsiOiLiibsiLCJzY2FwOyI6IuKquCIsIlNjYXJvbjsiOiLFoCIsInNjYXJvbjsiOiLFoSIsInNjY3VlOyI6IuKJvSIsInNjRTsiOiLiqrQiLCJzY2U7Ijoi4qqwIiwiU2NlZGlsOyI6IsWeIiwic2NlZGlsOyI6IsWfIiwiU2NpcmM7IjoixZwiLCJzY2lyYzsiOiLFnSIsInNjbmFwOyI6IuKquiIsInNjbkU7Ijoi4qq2Iiwic2Nuc2ltOyI6IuKLqSIsInNjcG9saW50OyI6IuKokyIsInNjc2ltOyI6IuKJvyIsIlNjeTsiOiLQoSIsInNjeTsiOiLRgSIsInNkb3Q7Ijoi4ouFIiwic2RvdGI7Ijoi4oqhIiwic2RvdGU7Ijoi4qmmIiwic2VhcmhrOyI6IuKkpSIsInNlQXJyOyI6IuKHmCIsInNlYXJyOyI6IuKGmCIsInNlYXJyb3c7Ijoi4oaYIiwic2VjdDsiOiLCpyIsc2VjdDoiwqciLCJzZW1pOyI6IjsiLCJzZXN3YXI7Ijoi4qSpIiwic2V0bWludXM7Ijoi4oiWIiwic2V0bW47Ijoi4oiWIiwic2V4dDsiOiLinLYiLCJTZnI7Ijoi8J2UliIsInNmcjsiOiLwnZSwIiwic2Zyb3duOyI6IuKMoiIsInNoYXJwOyI6IuKZryIsIlNIQ0hjeTsiOiLQqSIsInNoY2hjeTsiOiLRiSIsIlNIY3k7Ijoi0KgiLCJzaGN5OyI6ItGIIiwiU2hvcnREb3duQXJyb3c7Ijoi4oaTIiwiU2hvcnRMZWZ0QXJyb3c7Ijoi4oaQIiwic2hvcnRtaWQ7Ijoi4oijIiwic2hvcnRwYXJhbGxlbDsiOiLiiKUiLCJTaG9ydFJpZ2h0QXJyb3c7Ijoi4oaSIiwiU2hvcnRVcEFycm93OyI6IuKGkSIsInNoeTsiOiLCrSIsc2h5OiLCrSIsIlNpZ21hOyI6Is6jIiwic2lnbWE7Ijoiz4MiLCJzaWdtYWY7Ijoiz4IiLCJzaWdtYXY7Ijoiz4IiLCJzaW07Ijoi4oi8Iiwic2ltZG90OyI6IuKpqiIsInNpbWU7Ijoi4omDIiwic2ltZXE7Ijoi4omDIiwic2ltZzsiOiLiqp4iLCJzaW1nRTsiOiLiqqAiLCJzaW1sOyI6IuKqnSIsInNpbWxFOyI6IuKqnyIsInNpbW5lOyI6IuKJhiIsInNpbXBsdXM7Ijoi4qikIiwic2ltcmFycjsiOiLipbIiLCJzbGFycjsiOiLihpAiLCJTbWFsbENpcmNsZTsiOiLiiJgiLCJzbWFsbHNldG1pbnVzOyI6IuKIliIsInNtYXNocDsiOiLiqLMiLCJzbWVwYXJzbDsiOiLip6QiLCJzbWlkOyI6IuKIoyIsInNtaWxlOyI6IuKMoyIsInNtdDsiOiLiqqoiLCJzbXRlOyI6IuKqrCIsInNtdGVzOyI6IuKqrO+4gCIsIlNPRlRjeTsiOiLQrCIsInNvZnRjeTsiOiLRjCIsInNvbDsiOiIvIiwic29sYjsiOiLip4QiLCJzb2xiYXI7Ijoi4oy/IiwiU29wZjsiOiLwnZWKIiwic29wZjsiOiLwnZWkIiwic3BhZGVzOyI6IuKZoCIsInNwYWRlc3VpdDsiOiLimaAiLCJzcGFyOyI6IuKIpSIsInNxY2FwOyI6IuKKkyIsInNxY2FwczsiOiLiipPvuIAiLCJzcWN1cDsiOiLiipQiLCJzcWN1cHM7Ijoi4oqU77iAIiwiU3FydDsiOiLiiJoiLCJzcXN1YjsiOiLiio8iLCJzcXN1YmU7Ijoi4oqRIiwic3FzdWJzZXQ7Ijoi4oqPIiwic3FzdWJzZXRlcTsiOiLiipEiLCJzcXN1cDsiOiLiipAiLCJzcXN1cGU7Ijoi4oqSIiwic3FzdXBzZXQ7Ijoi4oqQIiwic3FzdXBzZXRlcTsiOiLiipIiLCJzcXU7Ijoi4pahIiwiU3F1YXJlOyI6IuKWoSIsInNxdWFyZTsiOiLilqEiLCJTcXVhcmVJbnRlcnNlY3Rpb247Ijoi4oqTIiwiU3F1YXJlU3Vic2V0OyI6IuKKjyIsIlNxdWFyZVN1YnNldEVxdWFsOyI6IuKKkSIsIlNxdWFyZVN1cGVyc2V0OyI6IuKKkCIsIlNxdWFyZVN1cGVyc2V0RXF1YWw7Ijoi4oqSIiwiU3F1YXJlVW5pb247Ijoi4oqUIiwic3F1YXJmOyI6IuKWqiIsInNxdWY7Ijoi4paqIiwic3JhcnI7Ijoi4oaSIiwiU3NjcjsiOiLwnZKuIiwic3NjcjsiOiLwnZOIIiwic3NldG1uOyI6IuKIliIsInNzbWlsZTsiOiLijKMiLCJzc3RhcmY7Ijoi4ouGIiwiU3RhcjsiOiLii4YiLCJzdGFyOyI6IuKYhiIsInN0YXJmOyI6IuKYhSIsInN0cmFpZ2h0ZXBzaWxvbjsiOiLPtSIsInN0cmFpZ2h0cGhpOyI6Is+VIiwic3RybnM7Ijoiwq8iLCJTdWI7Ijoi4ouQIiwic3ViOyI6IuKKgiIsInN1YmRvdDsiOiLiqr0iLCJzdWJFOyI6IuKrhSIsInN1YmU7Ijoi4oqGIiwic3ViZWRvdDsiOiLiq4MiLCJzdWJtdWx0OyI6IuKrgSIsInN1Ym5FOyI6IuKriyIsInN1Ym5lOyI6IuKKiiIsInN1YnBsdXM7Ijoi4qq/Iiwic3VicmFycjsiOiLipbkiLCJTdWJzZXQ7Ijoi4ouQIiwic3Vic2V0OyI6IuKKgiIsInN1YnNldGVxOyI6IuKKhiIsInN1YnNldGVxcTsiOiLiq4UiLCJTdWJzZXRFcXVhbDsiOiLiioYiLCJzdWJzZXRuZXE7Ijoi4oqKIiwic3Vic2V0bmVxcTsiOiLiq4siLCJzdWJzaW07Ijoi4quHIiwic3Vic3ViOyI6IuKrlSIsInN1YnN1cDsiOiLiq5MiLCJzdWNjOyI6IuKJuyIsInN1Y2NhcHByb3g7Ijoi4qq4Iiwic3VjY2N1cmx5ZXE7Ijoi4om9IiwiU3VjY2VlZHM7Ijoi4om7IiwiU3VjY2VlZHNFcXVhbDsiOiLiqrAiLCJTdWNjZWVkc1NsYW50RXF1YWw7Ijoi4om9IiwiU3VjY2VlZHNUaWxkZTsiOiLiib8iLCJzdWNjZXE7Ijoi4qqwIiwic3VjY25hcHByb3g7Ijoi4qq6Iiwic3VjY25lcXE7Ijoi4qq2Iiwic3VjY25zaW07Ijoi4oupIiwic3VjY3NpbTsiOiLiib8iLCJTdWNoVGhhdDsiOiLiiIsiLCJTdW07Ijoi4oiRIiwic3VtOyI6IuKIkSIsInN1bmc7Ijoi4pmqIiwiU3VwOyI6IuKLkSIsInN1cDsiOiLiioMiLCJzdXAxOyI6IsK5IixzdXAxOiLCuSIsInN1cDI7IjoiwrIiLHN1cDI6IsKyIiwic3VwMzsiOiLCsyIsc3VwMzoiwrMiLCJzdXBkb3Q7Ijoi4qq+Iiwic3VwZHN1YjsiOiLiq5giLCJzdXBFOyI6IuKrhiIsInN1cGU7Ijoi4oqHIiwic3VwZWRvdDsiOiLiq4QiLCJTdXBlcnNldDsiOiLiioMiLCJTdXBlcnNldEVxdWFsOyI6IuKKhyIsInN1cGhzb2w7Ijoi4p+JIiwic3VwaHN1YjsiOiLiq5ciLCJzdXBsYXJyOyI6IuKluyIsInN1cG11bHQ7Ijoi4quCIiwic3VwbkU7Ijoi4quMIiwic3VwbmU7Ijoi4oqLIiwic3VwcGx1czsiOiLiq4AiLCJTdXBzZXQ7Ijoi4ouRIiwic3Vwc2V0OyI6IuKKgyIsInN1cHNldGVxOyI6IuKKhyIsInN1cHNldGVxcTsiOiLiq4YiLCJzdXBzZXRuZXE7Ijoi4oqLIiwic3Vwc2V0bmVxcTsiOiLiq4wiLCJzdXBzaW07Ijoi4quIIiwic3Vwc3ViOyI6IuKrlCIsInN1cHN1cDsiOiLiq5YiLCJzd2FyaGs7Ijoi4qSmIiwic3dBcnI7Ijoi4oeZIiwic3dhcnI7Ijoi4oaZIiwic3dhcnJvdzsiOiLihpkiLCJzd253YXI7Ijoi4qSqIiwic3psaWc7Ijoiw58iLHN6bGlnOiLDnyIsIlRhYjsiOiJcdCIsInRhcmdldDsiOiLijJYiLCJUYXU7IjoizqQiLCJ0YXU7Ijoiz4QiLCJ0YnJrOyI6IuKOtCIsIlRjYXJvbjsiOiLFpCIsInRjYXJvbjsiOiLFpSIsIlRjZWRpbDsiOiLFoiIsInRjZWRpbDsiOiLFoyIsIlRjeTsiOiLQoiIsInRjeTsiOiLRgiIsInRkb3Q7Ijoi4oObIiwidGVscmVjOyI6IuKMlSIsIlRmcjsiOiLwnZSXIiwidGZyOyI6IvCdlLEiLCJ0aGVyZTQ7Ijoi4oi0IiwiVGhlcmVmb3JlOyI6IuKItCIsInRoZXJlZm9yZTsiOiLiiLQiLCJUaGV0YTsiOiLOmCIsInRoZXRhOyI6Is64IiwidGhldGFzeW07Ijoiz5EiLCJ0aGV0YXY7Ijoiz5EiLCJ0aGlja2FwcHJveDsiOiLiiYgiLCJ0aGlja3NpbTsiOiLiiLwiLCJUaGlja1NwYWNlOyI6IuKBn+KAiiIsInRoaW5zcDsiOiLigIkiLCJUaGluU3BhY2U7Ijoi4oCJIiwidGhrYXA7Ijoi4omIIiwidGhrc2ltOyI6IuKIvCIsIlRIT1JOOyI6IsOeIixUSE9STjoiw54iLCJ0aG9ybjsiOiLDviIsdGhvcm46IsO+IiwiVGlsZGU7Ijoi4oi8IiwidGlsZGU7Ijoiy5wiLCJUaWxkZUVxdWFsOyI6IuKJgyIsIlRpbGRlRnVsbEVxdWFsOyI6IuKJhSIsIlRpbGRlVGlsZGU7Ijoi4omIIiwidGltZXM7Ijoiw5ciLHRpbWVzOiLDlyIsInRpbWVzYjsiOiLiiqAiLCJ0aW1lc2JhcjsiOiLiqLEiLCJ0aW1lc2Q7Ijoi4qiwIiwidGludDsiOiLiiK0iLCJ0b2VhOyI6IuKkqCIsInRvcDsiOiLiiqQiLCJ0b3Bib3Q7Ijoi4oy2IiwidG9wY2lyOyI6IuKrsSIsIlRvcGY7Ijoi8J2ViyIsInRvcGY7Ijoi8J2VpSIsInRvcGZvcms7Ijoi4quaIiwidG9zYTsiOiLipKkiLCJ0cHJpbWU7Ijoi4oC0IiwiVFJBREU7Ijoi4oSiIiwidHJhZGU7Ijoi4oSiIiwidHJpYW5nbGU7Ijoi4pa1IiwidHJpYW5nbGVkb3duOyI6IuKWvyIsInRyaWFuZ2xlbGVmdDsiOiLil4MiLCJ0cmlhbmdsZWxlZnRlcTsiOiLiirQiLCJ0cmlhbmdsZXE7Ijoi4omcIiwidHJpYW5nbGVyaWdodDsiOiLilrkiLCJ0cmlhbmdsZXJpZ2h0ZXE7Ijoi4oq1IiwidHJpZG90OyI6IuKXrCIsInRyaWU7Ijoi4omcIiwidHJpbWludXM7Ijoi4qi6IiwiVHJpcGxlRG90OyI6IuKDmyIsInRyaXBsdXM7Ijoi4qi5IiwidHJpc2I7Ijoi4qeNIiwidHJpdGltZTsiOiLiqLsiLCJ0cnBleml1bTsiOiLij6IiLCJUc2NyOyI6IvCdkq8iLCJ0c2NyOyI6IvCdk4kiLCJUU2N5OyI6ItCmIiwidHNjeTsiOiLRhiIsIlRTSGN5OyI6ItCLIiwidHNoY3k7Ijoi0ZsiLCJUc3Ryb2s7IjoixaYiLCJ0c3Ryb2s7IjoixaciLCJ0d2l4dDsiOiLiiawiLCJ0d29oZWFkbGVmdGFycm93OyI6IuKGniIsInR3b2hlYWRyaWdodGFycm93OyI6IuKGoCIsIlVhY3V0ZTsiOiLDmiIsVWFjdXRlOiLDmiIsInVhY3V0ZTsiOiLDuiIsdWFjdXRlOiLDuiIsIlVhcnI7Ijoi4oafIiwidUFycjsiOiLih5EiLCJ1YXJyOyI6IuKGkSIsIlVhcnJvY2lyOyI6IuKliSIsIlVicmN5OyI6ItCOIiwidWJyY3k7Ijoi0Z4iLCJVYnJldmU7IjoixawiLCJ1YnJldmU7Ijoixa0iLCJVY2lyYzsiOiLDmyIsVWNpcmM6IsObIiwidWNpcmM7Ijoiw7siLHVjaXJjOiLDuyIsIlVjeTsiOiLQoyIsInVjeTsiOiLRgyIsInVkYXJyOyI6IuKHhSIsIlVkYmxhYzsiOiLFsCIsInVkYmxhYzsiOiLFsSIsInVkaGFyOyI6IuKlriIsInVmaXNodDsiOiLipb4iLCJVZnI7Ijoi8J2UmCIsInVmcjsiOiLwnZSyIiwiVWdyYXZlOyI6IsOZIixVZ3JhdmU6IsOZIiwidWdyYXZlOyI6IsO5Iix1Z3JhdmU6IsO5IiwidUhhcjsiOiLipaMiLCJ1aGFybDsiOiLihr8iLCJ1aGFycjsiOiLihr4iLCJ1aGJsazsiOiLiloAiLCJ1bGNvcm47Ijoi4oycIiwidWxjb3JuZXI7Ijoi4oycIiwidWxjcm9wOyI6IuKMjyIsInVsdHJpOyI6IuKXuCIsIlVtYWNyOyI6IsWqIiwidW1hY3I7IjoixasiLCJ1bWw7IjoiwqgiLHVtbDoiwqgiLCJVbmRlckJhcjsiOiJfIiwiVW5kZXJCcmFjZTsiOiLij58iLCJVbmRlckJyYWNrZXQ7Ijoi4o61IiwiVW5kZXJQYXJlbnRoZXNpczsiOiLij50iLCJVbmlvbjsiOiLii4MiLCJVbmlvblBsdXM7Ijoi4oqOIiwiVW9nb247IjoixbIiLCJ1b2dvbjsiOiLFsyIsIlVvcGY7Ijoi8J2VjCIsInVvcGY7Ijoi8J2VpiIsIlVwQXJyb3c7Ijoi4oaRIiwiVXBhcnJvdzsiOiLih5EiLCJ1cGFycm93OyI6IuKGkSIsIlVwQXJyb3dCYXI7Ijoi4qSSIiwiVXBBcnJvd0Rvd25BcnJvdzsiOiLih4UiLCJVcERvd25BcnJvdzsiOiLihpUiLCJVcGRvd25hcnJvdzsiOiLih5UiLCJ1cGRvd25hcnJvdzsiOiLihpUiLCJVcEVxdWlsaWJyaXVtOyI6IuKlriIsInVwaGFycG9vbmxlZnQ7Ijoi4oa/IiwidXBoYXJwb29ucmlnaHQ7Ijoi4oa+IiwidXBsdXM7Ijoi4oqOIiwiVXBwZXJMZWZ0QXJyb3c7Ijoi4oaWIiwiVXBwZXJSaWdodEFycm93OyI6IuKGlyIsIlVwc2k7Ijoiz5IiLCJ1cHNpOyI6Is+FIiwidXBzaWg7Ijoiz5IiLCJVcHNpbG9uOyI6Is6lIiwidXBzaWxvbjsiOiLPhSIsIlVwVGVlOyI6IuKKpSIsIlVwVGVlQXJyb3c7Ijoi4oalIiwidXB1cGFycm93czsiOiLih4giLCJ1cmNvcm47Ijoi4oydIiwidXJjb3JuZXI7Ijoi4oydIiwidXJjcm9wOyI6IuKMjiIsIlVyaW5nOyI6IsWuIiwidXJpbmc7Ijoixa8iLCJ1cnRyaTsiOiLil7kiLCJVc2NyOyI6IvCdkrAiLCJ1c2NyOyI6IvCdk4oiLCJ1dGRvdDsiOiLii7AiLCJVdGlsZGU7IjoixagiLCJ1dGlsZGU7IjoixakiLCJ1dHJpOyI6IuKWtSIsInV0cmlmOyI6IuKWtCIsInV1YXJyOyI6IuKHiCIsIlV1bWw7Ijoiw5wiLFV1bWw6IsOcIiwidXVtbDsiOiLDvCIsdXVtbDoiw7wiLCJ1d2FuZ2xlOyI6IuKmpyIsInZhbmdydDsiOiLippwiLCJ2YXJlcHNpbG9uOyI6Is+1IiwidmFya2FwcGE7Ijoiz7AiLCJ2YXJub3RoaW5nOyI6IuKIhSIsInZhcnBoaTsiOiLPlSIsInZhcnBpOyI6Is+WIiwidmFycHJvcHRvOyI6IuKInSIsInZBcnI7Ijoi4oeVIiwidmFycjsiOiLihpUiLCJ2YXJyaG87Ijoiz7EiLCJ2YXJzaWdtYTsiOiLPgiIsInZhcnN1YnNldG5lcTsiOiLiiorvuIAiLCJ2YXJzdWJzZXRuZXFxOyI6IuKri++4gCIsInZhcnN1cHNldG5lcTsiOiLiiovvuIAiLCJ2YXJzdXBzZXRuZXFxOyI6IuKrjO+4gCIsInZhcnRoZXRhOyI6Is+RIiwidmFydHJpYW5nbGVsZWZ0OyI6IuKKsiIsInZhcnRyaWFuZ2xlcmlnaHQ7Ijoi4oqzIiwiVmJhcjsiOiLiq6siLCJ2QmFyOyI6IuKrqCIsInZCYXJ2OyI6IuKrqSIsIlZjeTsiOiLQkiIsInZjeTsiOiLQsiIsIlZEYXNoOyI6IuKKqyIsIlZkYXNoOyI6IuKKqSIsInZEYXNoOyI6IuKKqCIsInZkYXNoOyI6IuKKoiIsIlZkYXNobDsiOiLiq6YiLCJWZWU7Ijoi4ouBIiwidmVlOyI6IuKIqCIsInZlZWJhcjsiOiLiirsiLCJ2ZWVlcTsiOiLiiZoiLCJ2ZWxsaXA7Ijoi4ouuIiwiVmVyYmFyOyI6IuKAliIsInZlcmJhcjsiOiJ8IiwiVmVydDsiOiLigJYiLCJ2ZXJ0OyI6InwiLCJWZXJ0aWNhbEJhcjsiOiLiiKMiLCJWZXJ0aWNhbExpbmU7IjoifCIsIlZlcnRpY2FsU2VwYXJhdG9yOyI6IuKdmCIsIlZlcnRpY2FsVGlsZGU7Ijoi4omAIiwiVmVyeVRoaW5TcGFjZTsiOiLigIoiLCJWZnI7Ijoi8J2UmSIsInZmcjsiOiLwnZSzIiwidmx0cmk7Ijoi4oqyIiwidm5zdWI7Ijoi4oqC4oOSIiwidm5zdXA7Ijoi4oqD4oOSIiwiVm9wZjsiOiLwnZWNIiwidm9wZjsiOiLwnZWnIiwidnByb3A7Ijoi4oidIiwidnJ0cmk7Ijoi4oqzIiwiVnNjcjsiOiLwnZKxIiwidnNjcjsiOiLwnZOLIiwidnN1Ym5FOyI6IuKri++4gCIsInZzdWJuZTsiOiLiiorvuIAiLCJ2c3VwbkU7Ijoi4quM77iAIiwidnN1cG5lOyI6IuKKi++4gCIsIlZ2ZGFzaDsiOiLiiqoiLCJ2emlnemFnOyI6IuKmmiIsIldjaXJjOyI6IsW0Iiwid2NpcmM7IjoixbUiLCJ3ZWRiYXI7Ijoi4qmfIiwiV2VkZ2U7Ijoi4ouAIiwid2VkZ2U7Ijoi4oinIiwid2VkZ2VxOyI6IuKJmSIsIndlaWVycDsiOiLihJgiLCJXZnI7Ijoi8J2UmiIsIndmcjsiOiLwnZS0IiwiV29wZjsiOiLwnZWOIiwid29wZjsiOiLwnZWoIiwid3A7Ijoi4oSYIiwid3I7Ijoi4omAIiwid3JlYXRoOyI6IuKJgCIsIldzY3I7Ijoi8J2SsiIsIndzY3I7Ijoi8J2TjCIsInhjYXA7Ijoi4ouCIiwieGNpcmM7Ijoi4pevIiwieGN1cDsiOiLii4MiLCJ4ZHRyaTsiOiLilr0iLCJYZnI7Ijoi8J2UmyIsInhmcjsiOiLwnZS1IiwieGhBcnI7Ijoi4p+6IiwieGhhcnI7Ijoi4p+3IiwiWGk7Ijoizp4iLCJ4aTsiOiLOviIsInhsQXJyOyI6IuKfuCIsInhsYXJyOyI6IuKftSIsInhtYXA7Ijoi4p+8IiwieG5pczsiOiLii7siLCJ4b2RvdDsiOiLiqIAiLCJYb3BmOyI6IvCdlY8iLCJ4b3BmOyI6IvCdlakiLCJ4b3BsdXM7Ijoi4qiBIiwieG90aW1lOyI6IuKogiIsInhyQXJyOyI6IuKfuSIsInhyYXJyOyI6IuKftiIsIlhzY3I7Ijoi8J2SsyIsInhzY3I7Ijoi8J2TjSIsInhzcWN1cDsiOiLiqIYiLCJ4dXBsdXM7Ijoi4qiEIiwieHV0cmk7Ijoi4pazIiwieHZlZTsiOiLii4EiLCJ4d2VkZ2U7Ijoi4ouAIiwiWWFjdXRlOyI6IsOdIixZYWN1dGU6IsOdIiwieWFjdXRlOyI6IsO9Iix5YWN1dGU6IsO9IiwiWUFjeTsiOiLQryIsInlhY3k7Ijoi0Y8iLCJZY2lyYzsiOiLFtiIsInljaXJjOyI6IsW3IiwiWWN5OyI6ItCrIiwieWN5OyI6ItGLIiwieWVuOyI6IsKlIix5ZW46IsKlIiwiWWZyOyI6IvCdlJwiLCJ5ZnI7Ijoi8J2UtiIsIllJY3k7Ijoi0IciLCJ5aWN5OyI6ItGXIiwiWW9wZjsiOiLwnZWQIiwieW9wZjsiOiLwnZWqIiwiWXNjcjsiOiLwnZK0IiwieXNjcjsiOiLwnZOOIiwiWVVjeTsiOiLQriIsInl1Y3k7Ijoi0Y4iLCJZdW1sOyI6IsW4IiwieXVtbDsiOiLDvyIseXVtbDoiw78iLCJaYWN1dGU7IjoixbkiLCJ6YWN1dGU7IjoixboiLCJaY2Fyb247Ijoixb0iLCJ6Y2Fyb247Ijoixb4iLCJaY3k7Ijoi0JciLCJ6Y3k7Ijoi0LciLCJaZG90OyI6IsW7IiwiemRvdDsiOiLFvCIsInplZXRyZjsiOiLihKgiLCJaZXJvV2lkdGhTcGFjZTsiOiLigIsiLCJaZXRhOyI6Is6WIiwiemV0YTsiOiLOtiIsIlpmcjsiOiLihKgiLCJ6ZnI7Ijoi8J2UtyIsIlpIY3k7Ijoi0JYiLCJ6aGN5OyI6ItC2IiwiemlncmFycjsiOiLih50iLCJab3BmOyI6IuKEpCIsInpvcGY7Ijoi8J2VqyIsIlpzY3I7Ijoi8J2StSIsInpzY3I7Ijoi8J2TjyIsInp3ajsiOiLigI0iLCJ6d25qOyI6IuKAjCJ9O2Z1bmN0aW9uIFhyKGUsdCl7aWYoIShlLmxlbmd0aDx0Lmxlbmd0aCkpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybjtyZXR1cm4gMX19ZnVuY3Rpb24gWXIoZSx0KXtmb3IodmFyIG49IiI7MDx0OykxPT0oMSZ0KSYmKG4rPWUpLGUrPWUsdD4+Pj0xO3JldHVybiBufXZhciBRcj0iYSIuY2hhckNvZGVBdCgwKSxacj0ieiIuY2hhckNvZGVBdCgwKSxlaT0iQSIuY2hhckNvZGVBdCgwKSx0aT0iWiIuY2hhckNvZGVBdCgwKSxuaT0iMCIuY2hhckNvZGVBdCgwKSxyaT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBpaShlLHQpe2U9ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBRcjw9ZSYmZTw9WnJ8fGVpPD1lJiZlPD10aXx8bmk8PWUmJmU8PXJpfWZ1bmN0aW9uIGFpKGUpe3JldHVybiB2b2lkIDAhPT1lfXNpLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sc2kucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9LHNpLnByb3RvdHlwZS5wcm92aWRlVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90YWdzfSxzaS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtuLnB1c2goZSl9dmFyIG49W10sZT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gZSYmZS5hdHRyaWJ1dGVzLmZvckVhY2godCksdGhpcy5fZ2xvYmFsQXR0cmlidXRlcy5mb3JFYWNoKHQpLG59LHNpLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSksZS52YWx1ZVNldCYmci5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0mJnIuX3ZhbHVlU2V0TWFwW2UudmFsdWVTZXRdLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSkpfSl9dmFyIHI9dGhpcyxpPVtdLGU9KHQ9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX3RhZ01hcFtlLnRvTG93ZXJDYXNlKCldKTtyZXR1cm4gZSYmbihlLmF0dHJpYnV0ZXMpLG4odGhpcy5fZ2xvYmFsQXR0cmlidXRlcyksaX07dmFyIG9pPXNpO2Z1bmN0aW9uIHNpKGUsdCl7dmFyIG49dGhpczt0aGlzLmlkPWUsdGhpcy5fdGFncz1bXSx0aGlzLl90YWdNYXA9e30sdGhpcy5fdmFsdWVTZXRNYXA9e30sdGhpcy5fdGFncz10LnRhZ3N8fFtdLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXM9dC5nbG9iYWxBdHRyaWJ1dGVzfHxbXSx0aGlzLl90YWdzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSksdC52YWx1ZVNldHMmJnQudmFsdWVTZXRzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdmFsdWVTZXRNYXBbZS5uYW1lXT1lLnZhbHVlc30pfWZ1bmN0aW9uIGxpKGUsdCxuKXt2b2lkIDA9PT10JiYodD17fSk7dmFyIHIsaT17a2luZDpuPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9O2lmKCFlLmRlc2NyaXB0aW9ufHwhMT09PXQuZG9jdW1lbnRhdGlvbnx8KHI9ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplfTp7a2luZDoibWFya2Rvd24iLHZhbHVlOmUudmFsdWV9fShlLmRlc2NyaXB0aW9uKSkmJihpLnZhbHVlKz1yLnZhbHVlKSxlLnJlZmVyZW5jZXMmJjA8ZS5yZWZlcmVuY2VzLmxlbmd0aCYmITEhPT10LnJlZmVyZW5jZXMmJihpLnZhbHVlLmxlbmd0aCYmKGkudmFsdWUrPSJcblxuIiksaS52YWx1ZSs9bj9lLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiJbIitlLm5hbWUrIl0oIitlLnVybCsiKSJ9KS5qb2luKCIgfCAiKTplLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWUrIjogIitlLnVybH0pLmpvaW4oIlxuIikpLCIiIT09aS52YWx1ZSlyZXR1cm4gaX1mdW5jdGlvbiBoaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIGNpKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fXVpLnByb3RvdHlwZS5vbkh0bWxBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigic3JjIj09PXR8fCJocmVmIj09PXQpcmV0dXJuITA7ZT1iaVtlXTtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9lPT09dDotMSE9PWUuaW5kZXhPZih0KTtyZXR1cm4hMX0oZS50YWcsZS5hdHRyaWJ1dGUpfHx0aGlzLmF0cmlidXRlQ29tcGxldGlvbnMucHVzaChlKX0sdWkucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihkLHUpe3JldHVybiBoaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixyLGksYSxvLHMsbCxoLGM7cmV0dXJuIGNpKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucyxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiByPGkubGVuZ3RoPyhhPWlbcl0sdD1kLmdldFRleHQoYS5yYW5nZSksZnVuY3Rpb24oZSl7aWYoWHIoZSwiaHR0cCIpfHxYcihlLCJodHRwcyIpfHxYcihlLCIvLyIpKXJldHVybiExO3JldHVybiEwfShvPVhyKHQsIiciKXx8WHIodCwnIicpP3Quc2xpY2UoMSwtMSk6dCk/Ii4iIT09byYmIi4uIiE9PW8/WzMsMl06KG4uaXNJbmNvbXBsZXRlPSEwLFszLDRdKTpbMyw0XSk6WzMsNV07Y2FzZSAyOnJldHVybiBzPWZ1bmN0aW9uKGUsdCxuKXtlPWUubGFzdEluZGV4T2YoIi8iKTt7dmFyIHI7dD0tMT09PWU/ZnVuY3Rpb24oZSx0LG4pe3Q9bWkoZS5zdGFydCx0KSxlPW1pKGUuZW5kLG4pO3JldHVybiB2bi5jcmVhdGUodCxlKX0obiwxLC0xKToodD10LnNsaWNlKGUrMSksZT1taShuLmVuZCwtMS10Lmxlbmd0aCksdD10LmluZGV4T2YoIiAiKSxyPXZvaWQgMCxyPS0xIT09dD9taShlLHQpOm1pKG4uZW5kLC0xKSx2bi5jcmVhdGUoZSxyKSl9cmV0dXJuIHR9KGEudmFsdWUsbyxhLnJhbmdlKSxbNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMoYS52YWx1ZSxzLGQsdSldO2Nhc2UgMzpmb3Iocz1lLnNlbnQoKSxsPTAsaD1zO2w8aC5sZW5ndGg7bCsrKWM9aFtsXSxuLml0ZW1zLnB1c2goYyk7ZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gcisrLFszLDFdO2Nhc2UgNTpyZXR1cm5bMixuXX12YXIgdH0pfSl9LHVpLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGQsdSxwLG0pe3JldHVybiBoaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaSxhLG8scyxsLGgsYztyZXR1cm4gY2kodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKGk9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksIShpPW0ucmVzb2x2ZVJlZmVyZW5jZShpfHwiLiIscC51cmkpKSlyZXR1cm5bMyw0XTtlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwzLCw0XSksYT1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkoaSldO2Nhc2UgMjpmb3Iobz1lLnNlbnQoKSxzPTAsbD1vO3M8bC5sZW5ndGg7cysrKWM9bFtzXSxoPWNbMF0sYz1jWzFdLGguY2hhckNvZGVBdCgwKSE9PXBpJiZhLnB1c2goKHQ9aCxuPWM9PT12ci5EaXJlY3Rvcnkscj11LG4/e2xhYmVsOnQrPSIvIixraW5kOkduLkZvbGRlcix0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsdCksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX06e2xhYmVsOnQsa2luZDpHbi5GaWxlLHRleHRFZGl0OlNuLnJlcGxhY2Uocix0KX0pKTtyZXR1cm5bMixhXTtjYXNlIDM6cmV0dXJuIGUuc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19dmFyIHQsbixyfSl9KX07dmFyIGRpPXVpO2Z1bmN0aW9uIHVpKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucz1bXX12YXIgcGk9Ii4iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gbWkoZSx0KXtyZXR1cm4gd24uY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX1mdW5jdGlvbiBmaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIGdpKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fXZhciBiaT17YToiaHJlZiIsYXJlYToiaHJlZiIsYm9keToiYmFja2dyb3VuZCIsZGVsOiJjaXRlIixmb3JtOiJhY3Rpb24iLGZyYW1lOlsic3JjIiwibG9uZ2Rlc2MiXSxpbWc6WyJzcmMiLCJsb25nZGVzYyJdLGluczoiY2l0ZSIsbGluazoiaHJlZiIsb2JqZWN0OiJkYXRhIixxOiJjaXRlIixzY3JpcHQ6InNyYyIsYXVkaW86InNyYyIsYnV0dG9uOiJmb3JtYWN0aW9uIixjb21tYW5kOiJpY29uIixlbWJlZDoic3JjIixodG1sOiJtYW5pZmVzdCIsaW5wdXQ6WyJzcmMiLCJmb3JtYWN0aW9uIl0sc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLHZpZGVvOlsic3JjIiwicG9zdGVyIl19LF9pPVBuLHdpPSh2aS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LHZpLnByb3RvdHlwZS5kb0NvbXBsZXRlMj1mdW5jdGlvbihhLG8scyxsLGgpe3JldHVybiBmaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdCxuLHIsaTtyZXR1cm4gZ2kodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoYSxvLHMsaCldO3Q9bmV3IGRpKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxuPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W3RdLmNvbmNhdChuKSxyPXRoaXMuZG9Db21wbGV0ZShhLG8scyxoKSxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwsMyw0XSksWzQsdC5jb21wdXRlQ29tcGxldGlvbnMoYSxsKV07Y2FzZSAyOnJldHVybiBpPWUuc2VudCgpLFsyLHtpc0luY29tcGxldGU6ci5pc0luY29tcGxldGV8fGkuaXNJbmNvbXBsZXRlLGl0ZW1zOmkuaXRlbXMuY29uY2F0KHIuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9bixbN107Y2FzZSA0OnJldHVyblsyXX19KX0pfSx2aS5wcm90b3R5cGUuZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXtlPXRoaXMuX2RvQ29tcGxldGUoZSx0LG4scik7cmV0dXJuIHRoaXMuY29udmVydENvbXBsZXRpb25MaXN0KGUpfSx2aS5wcm90b3R5cGUuX2RvQ29tcGxldGU9ZnVuY3Rpb24ocCxtLHYsdSl7dmFyIGY9e2lzSW5jb21wbGV0ZTohMSxpdGVtczpbXX0seT10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMsVD10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNBcHBsaWNhYmxlKHAubGFuZ3VhZ2VJZCkmJighdXx8ITEhPT11W2UuZ2V0SWQoKV0pfSksaz10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxnPXAuZ2V0VGV4dCgpLGI9cC5vZmZzZXRBdChtKSxTPXYuZmluZE5vZGVCZWZvcmUoYik7aWYoIVMpcmV0dXJuIGY7dmFyIEMsdD1GcihnLFMuc3RhcnQpLF89IiI7ZnVuY3Rpb24gdyhlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iKSx7c3RhcnQ6cC5wb3NpdGlvbkF0KGU9YjxlP2I6ZSksZW5kOnAucG9zaXRpb25BdCh0KX19ZnVuY3Rpb24gbihlLHQpe3ZhciBuPXcoZSx0KTtyZXR1cm4gVC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2YuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6R24uUHJvcGVydHksZG9jdW1lbnRhdGlvbjpsaShlLHZvaWQgMCxrKSx0ZXh0RWRpdDpTbi5yZXBsYWNlKG4sZS5uYW1lKSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGMoZSl7Zm9yKHZhciB0PWU7MDx0Oyl7dmFyIG49Zy5jaGFyQXQodC0xKTtpZigwPD0iXG5cciIuaW5kZXhPZihuKSlyZXR1cm4gZy5zdWJzdHJpbmcodCxlKTtpZigheWkobikpcmV0dXJuIG51bGw7dC0tfXJldHVybiBnLnN1YnN0cmluZygwLGUpfWZ1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXcoZSxuPXZvaWQgMD09PW4/YjpuKSxpPVRpKGcsbixSLldpdGhpbkVuZFRhZyxNLkVuZFRhZ0Nsb3NlKT8iIjoiPiIsYT1TO2Zvcih0JiYoYT1hLnBhcmVudCk7YTspe3ZhciBvLHMsbCxoPWEudGFnO2lmKGgmJighYS5jbG9zZWR8fGEuZW5kVGFnU3RhcnQmJmEuZW5kVGFnU3RhcnQ+YikpcmV0dXJuIG89e2xhYmVsOiIvIitoLGtpbmQ6R24uUHJvcGVydHksZmlsdGVyVGV4dDoiLyIraCx0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsIi8iK2graSksaW5zZXJ0VGV4dEZvcm1hdDpKbi5QbGFpblRleHR9LGw9YyhhLnN0YXJ0KSxzPWMoZS0xKSxudWxsIT09bCYmbnVsbCE9PXMmJmwhPT1zJiYobD1sKyI8LyIraCtpLG8udGV4dEVkaXQ9U24ucmVwbGFjZSh3KGUtMS1zLmxlbmd0aCksbCksby5maWx0ZXJUZXh0PXMrIjwvIitoKSxmLml0ZW1zLnB1c2gobyksZjthPWEucGFyZW50fXJldHVybiB0fHxULmZvckVhY2goZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goZnVuY3Rpb24oZSl7Zi5pdGVtcy5wdXNoKHtsYWJlbDoiLyIrZS5uYW1lLGtpbmQ6R24uUHJvcGVydHksZG9jdW1lbnRhdGlvbjpsaShlLHZvaWQgMCxrKSxmaWx0ZXJUZXh0OiIvIitlLm5hbWUraSx0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsIi8iK2UubmFtZStpKSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gbihlLHQpLHIoZSwhMCx0KSxmfWZ1bmN0aW9uIGEoZSx0KXt2b2lkIDA9PT10JiYodD1iKTtmb3IodmFyIG49YjtuPHQmJiI8IiE9PWdbbl07KW4rKzt2YXIgcixpPWcuc3Vic3RyaW5nKGUsdCksYT13KGUsbiksbz0iIixzPShUaShnLHQsUi5BZnRlckF0dHJpYnV0ZU5hbWUsTS5EZWxpbWl0ZXJBc3NpZ24pfHwoZT1udWxsIT09KGU9bnVsbD09dT92b2lkIDA6dS5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1lP2U6ImRvdWJsZXF1b3RlcyIsbz0iZW1wdHkiPT09ZT8iPSQxIjoic2luZ2xlcXVvdGVzIj09PWU/Ij0nJDEnIjonPSIkMSInKSxyPU9iamVjdC5jcmVhdGUobnVsbCksUy5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ITB9KSxyKSxjPShzW2ldPSExLFQuZm9yRWFjaChmdW5jdGlvbihlKXtlLnByb3ZpZGVBdHRyaWJ1dGVzKF8pLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbjtzW2UubmFtZV18fChzW2UubmFtZV09ITAsdD1lLm5hbWUsInYiIT09ZS52YWx1ZVNldCYmby5sZW5ndGgmJih0Kz1vLCFlLnZhbHVlU2V0JiYic3R5bGUiIT09ZS5uYW1lfHwobj17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSkpLGYuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6ImhhbmRsZXIiPT09ZS52YWx1ZVNldD9Hbi5GdW5jdGlvbjpHbi5WYWx1ZSxkb2N1bWVudGF0aW9uOmxpKGUsdm9pZCAwLGspLHRleHRFZGl0OlNuLnJlcGxhY2UoYSx0KSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlNuaXBwZXQsY29tbWFuZDpufSkpfSl9KSxhKSxkPXMsbD0iZGF0YS0iLGg9e307cmV0dXJuIGhbbF09bCsnJDE9IiQyIicsdiYmdi5yb290cy5mb3JFYWNoKGZ1bmN0aW9uIGUodCl7dC5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyFYcihlLGwpfHxoW2VdfHxkW2VdfHwoaFtlXT1lKyc9IiQxIicpfSksdC5jaGlsZHJlbi5mb3JFYWNoKGUpfSksT2JqZWN0LmtleXMoaCkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZi5pdGVtcy5wdXNoKHtsYWJlbDplLGtpbmQ6R24uVmFsdWUsdGV4dEVkaXQ6U24ucmVwbGFjZShjLGhbZV0pLGluc2VydFRleHRGb3JtYXQ6Sm4uU25pcHBldH0pfSksZn1mdW5jdGlvbiBvKGUsdCl7dmFyIG4scixpLGEsbztpZih2b2lkIDA9PT10JiYodD1iKSxvPWU8YiYmYjw9dCYmL15bIiddKiQvLnRlc3QoZ1tlXSk/KGU8KHI9dCkmJmdbdC0xXT09PWdbZV0mJnItLSxpPXcoZnVuY3Rpb24oZSx0LG4pe2Zvcig7bjx0JiYheWkoZVt0LTFdKTspdC0tO3JldHVybiB0fShnLGIsbj1lKzEpLGZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIXlpKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGcsYixyKSksYT1uPD1iJiZiPD1yP2cuc3Vic3RyaW5nKG4sYik6IiIsITEpOihpPXcoZSx0KSxhPWcuc3Vic3RyaW5nKGUsYiksITApLDA8eS5sZW5ndGgpZm9yKHZhciBjPV8udG9Mb3dlckNhc2UoKSxkPUMudG9Mb3dlckNhc2UoKSx1PXcoZSx0KSxzPTAsbD15O3M8bC5sZW5ndGg7cysrKXt2YXIgaD1sW3NdO2gub25IdG1sQXR0cmlidXRlVmFsdWUmJmgub25IdG1sQXR0cmlidXRlVmFsdWUoe2RvY3VtZW50OnAscG9zaXRpb246bSx0YWc6YyxhdHRyaWJ1dGU6ZCx2YWx1ZTphLHJhbmdlOnV9KX1yZXR1cm4gVC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhfLEMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bz8nIicrZS5uYW1lKyciJzplLm5hbWU7Zi5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsZmlsdGVyVGV4dDp0LGtpbmQ6R24uVW5pdCxkb2N1bWVudGF0aW9uOmxpKGUsdm9pZCAwLGspLHRleHRFZGl0OlNuLnJlcGxhY2UoaSx0KSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSx4KCksZn1mdW5jdGlvbiBzKGUpe3JldHVybiBiPT09dC5nZXRUb2tlbkVuZCgpJiYoTD10LnNjYW4oKSk9PT1lJiZ0LmdldFRva2VuT2Zmc2V0KCk9PT1iP3QuZ2V0VG9rZW5FbmQoKTpifWZ1bmN0aW9uIGwoKXtmb3IodmFyIGU9MCx0PXk7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07bi5vbkh0bWxDb250ZW50JiZuLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OnAscG9zaXRpb246bX0pfXJldHVybiB4KCl9ZnVuY3Rpb24geCgpe2Zvcih2YXIgZSx0LG49Yi0xLHI9bS5jaGFyYWN0ZXI7MDw9biYmaWkoZyxuKTspbi0tLHItLTtpZigwPD1uJiYiJiI9PT1nW25dKXt2YXIgaSxhLG89dm4uY3JlYXRlKHduLmNyZWF0ZShtLmxpbmUsci0xKSxtKTtmb3IoaSBpbiBKcil0PSI7IixhPXZvaWQgMCwoMDwoYT0oZT1pKS5sZW5ndGgtdC5sZW5ndGgpP2UubGFzdEluZGV4T2YodCk9PT1hOjA9PWEmJmU9PT10KSYmZi5pdGVtcy5wdXNoKHtsYWJlbDphPSImIitpLGtpbmQ6R24uS2V5d29yZCxkb2N1bWVudGF0aW9uOl9pKCJlbnRpdHkucHJvcG9zZSIsIkNoYXJhY3RlciBlbnRpdHkgcmVwcmVzZW50aW5nICciK0pyW2ldKyInIiksdGV4dEVkaXQ6U24ucmVwbGFjZShvLGEpLGluc2VydFRleHRGb3JtYXQ6Sm4uUGxhaW5UZXh0fSl9cmV0dXJuIGZ9Zm9yKHZhciBoLGQsZSxMPXQuc2NhbigpO0whPT1NLkVPUyYmdC5nZXRUb2tlbk9mZnNldCgpPD1iOyl7c3dpdGNoKEwpe2Nhc2UgTS5TdGFydFRhZ09wZW46aWYodC5nZXRUb2tlbkVuZCgpPT09YilyZXR1cm4gaD1zKE0uU3RhcnRUYWcpLDA9PT1tLmxpbmUmJihlPXcoZT1iLGgpLGYuaXRlbXMucHVzaCh7bGFiZWw6IiFET0NUWVBFIixraW5kOkduLlByb3BlcnR5LGRvY3VtZW50YXRpb246IkEgcHJlYW1ibGUgZm9yIGFuIEhUTUwgZG9jdW1lbnQuIix0ZXh0RWRpdDpTbi5yZXBsYWNlKGUsIiFET0NUWVBFIGh0bWw+IiksaW5zZXJ0VGV4dEZvcm1hdDpKbi5QbGFpblRleHR9KSksaShiLGgpO2JyZWFrO2Nhc2UgTS5TdGFydFRhZzppZih0LmdldFRva2VuT2Zmc2V0KCk8PWImJmI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gbih0LmdldFRva2VuT2Zmc2V0KCksdC5nZXRUb2tlbkVuZCgpKTtfPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6aWYodC5nZXRUb2tlbk9mZnNldCgpPD1iJiZiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIGEodC5nZXRUb2tlbk9mZnNldCgpLHQuZ2V0VG9rZW5FbmQoKSk7Qz10LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTS5EZWxpbWl0ZXJBc3NpZ246aWYodC5nZXRUb2tlbkVuZCgpPT09YilyZXR1cm4gaD1zKE0uQXR0cmlidXRlVmFsdWUpLG8oYixoKTticmVhaztjYXNlIE0uQXR0cmlidXRlVmFsdWU6aWYodC5nZXRUb2tlbk9mZnNldCgpPD1iJiZiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIG8odC5nZXRUb2tlbk9mZnNldCgpLHQuZ2V0VG9rZW5FbmQoKSk7YnJlYWs7Y2FzZSBNLldoaXRlc3BhY2U6aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXN3aXRjaCh0LmdldFNjYW5uZXJTdGF0ZSgpKXtjYXNlIFIuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc6cmV0dXJuIGkodC5nZXRUb2tlbk9mZnNldCgpLHMoTS5TdGFydFRhZykpO2Nhc2UgUi5XaXRoaW5UYWc6Y2FzZSBSLkFmdGVyQXR0cmlidXRlTmFtZTpyZXR1cm4gYSh0LmdldFRva2VuRW5kKCkpO2Nhc2UgUi5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTpyZXR1cm4gbyh0LmdldFRva2VuRW5kKCkpO2Nhc2UgUi5BZnRlck9wZW5pbmdFbmRUYWc6cmV0dXJuIHIodC5nZXRUb2tlbk9mZnNldCgpLTEsITEpO2Nhc2UgUi5XaXRoaW5Db250ZW50OnJldHVybiBsKCl9YnJlYWs7Y2FzZSBNLkVuZFRhZ09wZW46aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiByKHQuZ2V0VG9rZW5PZmZzZXQoKSsxLCExLHMoTS5FbmRUYWcpKTticmVhaztjYXNlIE0uRW5kVGFnOmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlmb3IodmFyIEU9dC5nZXRUb2tlbk9mZnNldCgpLTE7MDw9RTspe3ZhciBBPWcuY2hhckF0KEUpO2lmKCIvIj09PUEpcmV0dXJuIHIoRSwhMSx0LmdldFRva2VuRW5kKCkpO2lmKCF5aShBKSlicmVhaztFLS19YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnQ2xvc2U6aWYoYjw9dC5nZXRUb2tlbkVuZCgpJiZfKXJldHVybiBlPXQuZ2V0VG9rZW5FbmQoKSxkPV8sdSYmdS5oaWRlQXV0b0NvbXBsZXRlUHJvcG9zYWxzfHxLcihkKXx8KGU9cC5wb3NpdGlvbkF0KGUpLGYuaXRlbXMucHVzaCh7bGFiZWw6IjwvIitkKyI+IixraW5kOkduLlByb3BlcnR5LGZpbHRlclRleHQ6IjwvIitkKyI+Iix0ZXh0RWRpdDpTbi5pbnNlcnQoZSwiJDA8LyIrZCsiPiIpLGluc2VydFRleHRGb3JtYXQ6Sm4uU25pcHBldH0pKSxmO2JyZWFrO2Nhc2UgTS5Db250ZW50OmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gbCgpO2JyZWFrO2RlZmF1bHQ6aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiBmfUw9dC5zY2FuKCl9cmV0dXJuIGZ9LHZpLnByb3RvdHlwZS5kb1F1b3RlQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5vZmZzZXRBdCh0KTtpZihpPD0wKXJldHVybiBudWxsO3I9bnVsbCE9PSh0PW51bGw9PXI/dm9pZCAwOnIuYXR0cmlidXRlRGVmYXVsdFZhbHVlKSYmdm9pZCAwIT09dD90OiJkb3VibGVxdW90ZXMiO2lmKCJlbXB0eSI9PT1yKXJldHVybiBudWxsO2lmKCI9IiE9PWUuZ2V0VGV4dCgpLmNoYXJBdChpLTEpKXJldHVybiBudWxsO3ZhciBhPSJkb3VibGVxdW90ZXMiPT09cj8nIiQxIic6IickMSciLHQ9bi5maW5kTm9kZUJlZm9yZShpKTtpZih0JiZ0LmF0dHJpYnV0ZXMmJnQuc3RhcnQ8aSYmKCF0LmVuZFRhZ1N0YXJ0fHx0LmVuZFRhZ1N0YXJ0PmkpKWZvcih2YXIgbz1GcihlLmdldFRleHQoKSx0LnN0YXJ0KSxzPW8uc2NhbigpO3MhPT1NLkVPUyYmby5nZXRUb2tlbkVuZCgpPD1pOyl7aWYocz09PU0uQXR0cmlidXRlTmFtZSYmby5nZXRUb2tlbkVuZCgpPT09aS0xKXJldHVybihzPW8uc2NhbigpKSE9PU0uRGVsaW1pdGVyQXNzaWdufHwocz1vLnNjYW4oKSk9PT1NLlVua25vd258fHM9PT1NLkF0dHJpYnV0ZVZhbHVlP251bGw6YTtzPW8uc2NhbigpfXJldHVybiBudWxsfSx2aS5wcm90b3R5cGUuZG9UYWdDb21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KTtpZihyPD0wKXJldHVybiBudWxsO3Q9ZS5nZXRUZXh0KCkuY2hhckF0KHItMSk7aWYoIj4iPT09dCl7aWYoKGE9bi5maW5kTm9kZUJlZm9yZShyKSkmJmEudGFnJiYhS3IoYS50YWcpJiZhLnN0YXJ0PHImJighYS5lbmRUYWdTdGFydHx8YS5lbmRUYWdTdGFydD5yKSlmb3IodmFyIGk9KG89RnIoZS5nZXRUZXh0KCksYS5zdGFydCkpLnNjYW4oKTtpIT09TS5FT1MmJm8uZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGk9PT1NLlN0YXJ0VGFnQ2xvc2UmJm8uZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIiQwPC8iK2EudGFnKyI+IjtpPW8uc2NhbigpfX1lbHNlIGlmKCIvIj09PXQpe2Zvcih2YXIgYT1uLmZpbmROb2RlQmVmb3JlKHIpO2EmJmEuY2xvc2VkJiYhKGEuZW5kVGFnU3RhcnQmJmEuZW5kVGFnU3RhcnQ+cik7KWE9YS5wYXJlbnQ7aWYoYSYmYS50YWcpZm9yKHZhciBvLGk9KG89RnIoZS5nZXRUZXh0KCksYS5zdGFydCkpLnNjYW4oKTtpIT09TS5FT1MmJm8uZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGk9PT1NLkVuZFRhZ09wZW4mJm8uZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIGEudGFnKyI+IjtpPW8uc2NhbigpfX1yZXR1cm4gbnVsbH0sdmkucHJvdG90eXBlLmNvbnZlcnRDb21wbGV0aW9uTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fGUuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRvY3VtZW50YXRpb24mJiJzdHJpbmciIT10eXBlb2YgZS5kb2N1bWVudGF0aW9uJiYoZS5kb2N1bWVudGF0aW9uPXtraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUuZG9jdW1lbnRhdGlvbi52YWx1ZX0pfSksZX0sdmkucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXtpZighYWkodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIWFpKHRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247dmFyIGU9bnVsbD09PShlPW51bGw9PT0oZT1udWxsPT09KGU9dGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGlvbkl0ZW0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmRvY3VtZW50YXRpb25Gb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkoZSkmJi0xIT09ZS5pbmRleE9mKFZuLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSx2aSk7ZnVuY3Rpb24gdmkoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dCx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W119ZnVuY3Rpb24geWkoZSl7cmV0dXJuL15ccyokLy50ZXN0KGUpfWZ1bmN0aW9uIFRpKGUsdCxuLHIpe2Zvcih2YXIgaT1GcihlLHQsbiksYT1pLnNjYW4oKTthPT09TS5XaGl0ZXNwYWNlOylhPWkuc2NhbigpO3JldHVybiBhPT09cn12YXIga2ksU2ksQ2k9UG4seGk9KExpLnByb3RvdHlwZS5kb0hvdmVyPWZ1bmN0aW9uKGEsaSxlLHMpe3ZhciBoPXRoaXMuY29udmVydENvbnRlbnRzLmJpbmQodGhpcyksbD10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxjPWEub2Zmc2V0QXQoaSksZT1lLmZpbmROb2RlQXQoYyksbz1hLmdldFRleHQoKTtpZighZXx8IWUudGFnKXJldHVybiBudWxsO3ZhciBkPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YVByb3ZpZGVycygpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pc0FwcGxpY2FibGUoYS5sYW5ndWFnZUlkKX0pO2Z1bmN0aW9uIHIobixyKXtmb3IodmFyIGU9MCx0PWQ7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYoZS5wcm92aWRlVGFncygpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT1uLnRvTG93ZXJDYXNlKCkmJihlPWxpKGUscyxsKSx0PXtjb250ZW50czplPWV8fHtraW5kOmw/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn0scmFuZ2U6cn0pfSksdClyZXR1cm4gdC5jb250ZW50cz1oKHQuY29udGVudHMpLHt2YWx1ZTp0fX0odFtlXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBpKXJldHVybiBpLnZhbHVlfXJldHVybiBudWxsfWZ1bmN0aW9uIHUobixyLGkpe2Zvcih2YXIgZT0wLHQ9ZDtlPHQubGVuZ3RoO2UrKyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlLnByb3ZpZGVBdHRyaWJ1dGVzKG4pLmZvckVhY2goZnVuY3Rpb24oZSl7cj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbiYmKGU9bGkoZSxzLGwpLHQ9ZT97Y29udGVudHM6ZSxyYW5nZTppfTpudWxsKX0pLHQpcmV0dXJuIHQuY29udGVudHM9aCh0LmNvbnRlbnRzKSx7dmFsdWU6dH19KHRbZV0pO2lmKCJvYmplY3QiPT10eXBlb2YgYSlyZXR1cm4gYS52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBwKG4scixpLGEpe2Zvcih2YXIgZT0wLHQ9ZDtlPHQubGVuZ3RoO2UrKyl7dmFyIG89ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlLnByb3ZpZGVWYWx1ZXMobixyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2k9PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24mJihlPWxpKGUscyxsKSx0PWU/e2NvbnRlbnRzOmUscmFuZ2U6YX06bnVsbCl9KSx0KXJldHVybiB0LmNvbnRlbnRzPWgodC5jb250ZW50cykse3ZhbHVlOnR9fSh0W2VdKTtpZigib2JqZWN0Ij09dHlwZW9mIG8pcmV0dXJuIG8udmFsdWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbShlLHQpe3ZhciBuLHI9ZnVuY3Rpb24oZSl7dmFyIHQ9Yy0xLG49IiYiO2Zvcig7MDw9dCYmaWkoZSx0KTspdC0tO3QrPTE7Zm9yKDtpaShlLHQpOyluKz1lW3RdLHQrPTE7cmV0dXJuIG4rPSI7In0oZSk7Zm9yKG4gaW4gSnIpe3ZhciBpPW51bGw7aWYocj09PSImIituKXt2YXIgYT1KcltuXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLG89IlUrIjtpZihhLmxlbmd0aDw0KWZvcih2YXIgcz00LWEubGVuZ3RoLGw9MDtsPHM7KW8rPSIwIixsKz0xO28rPWE7YT1DaSgiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIitKcltuXSsiJywgdW5pY29kZSBlcXVpdmFsZW50ICciK28rIiciKSxpPWE/e2NvbnRlbnRzOmEscmFuZ2U6dH06bnVsbH1pZihpKXJldHVybiBpLmNvbnRlbnRzPWgoaS5jb250ZW50cyksaX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciBuPUZyKGEuZ2V0VGV4dCgpLHQpLHI9bi5zY2FuKCk7ciE9PU0uRU9TJiYobi5nZXRUb2tlbkVuZCgpPGN8fG4uZ2V0VG9rZW5FbmQoKT09PWMmJnIhPT1lKTspcj1uLnNjYW4oKTtyZXR1cm4gcj09PWUmJmM8PW4uZ2V0VG9rZW5FbmQoKT97c3RhcnQ6YS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSksZW5kOmEucG9zaXRpb25BdChuLmdldFRva2VuRW5kKCkpfTpudWxsfWlmKGUuZW5kVGFnU3RhcnQmJmM+PWUuZW5kVGFnU3RhcnQpcmV0dXJuKG49dChNLkVuZFRhZyxlLmVuZFRhZ1N0YXJ0KSk/cihlLnRhZyxuKTpudWxsO3ZhciBuPXQoTS5TdGFydFRhZyxlLnN0YXJ0KTtpZihuKXJldHVybiByKGUudGFnLG4pO249dChNLkF0dHJpYnV0ZU5hbWUsZS5zdGFydCk7aWYobilyZXR1cm4gdShmPWUudGFnLGEuZ2V0VGV4dChuKSxuKTtuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWMtMSx0PWkuY2hhcmFjdGVyOzA8PWUmJmlpKG8sZSk7KWUtLSx0LS07Zm9yKHZhciBuPWUrMSxyPXQ7aWkobyxuKTspbisrLHIrKztyZXR1cm4gMDw9ZSYmIiYiPT09b1tlXT8iOyI9PT1vW25dP3ZuLmNyZWF0ZSh3bi5jcmVhdGUoaS5saW5lLHQpLHduLmNyZWF0ZShpLmxpbmUscisxKSk6dm4uY3JlYXRlKHduLmNyZWF0ZShpLmxpbmUsdCksd24uY3JlYXRlKGkubGluZSxyKSk6bnVsbH0oKTtpZihuKXJldHVybiBtKG8sbik7bj10KE0uQXR0cmlidXRlVmFsdWUsZS5zdGFydCk7aWYobil7dmFyIGY9ZS50YWcsZz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGEuZ2V0VGV4dChuKSksZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1GcihhLmdldFRleHQoKSxlKSxyPW4uc2NhbigpLGk9dm9pZCAwO3IhPT1NLkVPUyYmbi5nZXRUb2tlbkVuZCgpPD10Oykocj1uLnNjYW4oKSk9PT1NLkF0dHJpYnV0ZU5hbWUmJihpPW4uZ2V0VG9rZW5UZXh0KCkpO3JldHVybiBpfShlLnN0YXJ0LGEub2Zmc2V0QXQobi5zdGFydCkpO2lmKGUpcmV0dXJuIHAoZixlLGcsbil9cmV0dXJuIG51bGx9LExpLnByb3RvdHlwZS5jb252ZXJ0Q29udGVudHM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoImtpbmQiaW4gZSlyZXR1cm57a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLnZhbHVlfTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS52YWx1ZTtlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSl9cmV0dXJuIGV9LExpLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7aWYoIWFpKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFhaSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciBlPW51bGw9PT0oZT1udWxsPT09KGU9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcyl8fHZvaWQgMD09PWU/dm9pZCAwOmUudGV4dERvY3VtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ob3Zlcil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29udGVudEZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShlKSYmLTEhPT1lLmluZGV4T2YoVm4uTWFya2Rvd24pfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LExpKTtmdW5jdGlvbiBMaShlLHQpe3RoaXMubHNPcHRpb25zPWUsdGhpcy5kYXRhTWFuYWdlcj10fWZ1bmN0aW9uIEVpKGUsdCl7cmV0dXJuIGV9a2k9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLDA8ZS5pbmRlbnRfbGV2ZWwmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiB0KGUsdCl7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHQpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyBpKHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX1pLnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyBpKHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSxpLnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSxpLnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTswPD10O3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LGkucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LGkucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LGkucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0saS5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hIXRoaXMuX3Nob3VsZF93cmFwKCkmJih0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpLChlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lKS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLC0tZS5fX2NoYXJhY3Rlcl9jb3VudCksITApfSxpLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0saS5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0saS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LGkucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSxpLnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX2luZGVudF9jb3VudCYmKC0tdGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0saS5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50JiYtLXRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudH0saS5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSwtLXRoaXMuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT90aGlzLl9fcGFyZW50LmluZGVudF9lbXB0eV9saW5lcyYmKGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50KSk6KGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLGUrPXRoaXMuX19pdGVtcy5qb2luKCIiKSksZX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aDtyZXR1cm4gbj0obj1lPDA/MDpuKStlKnRoaXMuX19pbmRlbnRfc2l6ZSsodD10fHwwKX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmc7cmV0dXJuIHQ9dHx8MCxlPDAmJihlPTAsbj0iIiksdCs9ZSp0aGlzLl9faW5kZW50X3NpemUsdGhpcy5fX2Vuc3VyZV9jYWNoZSh0KSxuKz10aGlzLl9fY2FjaGVbdF19LG4ucHJvdG90eXBlLl9fZW5zdXJlX2NhY2hlPWZ1bmN0aW9uKGUpe2Zvcig7ZT49dGhpcy5fX2NhY2hlLmxlbmd0aDspdGhpcy5fX2FkZF9jb2x1bW4oKX0sbi5wcm90b3R5cGUuX19hZGRfY29sdW1uPWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fY2FjaGUubGVuZ3RoLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZ0Pj10aGlzLl9faW5kZW50X3NpemUmJih0LT0oZT1NYXRoLmZsb29yKHQvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KGUrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHQmJihuKz1uZXcgQXJyYXkodCsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSx0LnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSx0LnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSx0LnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sdC5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHQucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCksdD0odCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpLHRoaXMuX19saW5lcy5qb2luKCJcbiIpKTtyZXR1cm4gdD0iXG4iIT09ZT90LnJlcGxhY2UoL1tcbl0vZyxlKTp0fSx0LnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZT1lfHwwLHQ9dHx8MCksMTx0aGlzLl9fbGluZXMubGVuZ3RoPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KGUsdCksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSx0LnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5uZXdsaW5lczt0KyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUudGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSx0LnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSx0LnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LHQucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19saW5lcy5sZW5ndGg7ZTx0Oyl0aGlzLl9fbGluZXNbZV0uX3JlbW92ZV9pbmRlbnQoKSxlKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSx0LnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKGUpe2ZvcihlPXZvaWQgMCE9PWUmJmUsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2UmJjE8dGhpcy5fX2xpbmVzLmxlbmd0aCYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9MTx0aGlzLl9fbGluZXMubGVuZ3RoP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9fbGluZXMubGVuZ3RoLTI7MDw9bjspe3ZhciByPXRoaXMuX19saW5lc1tuXTtpZihyLmlzX2VtcHR5KCkpYnJlYWs7aWYoMCE9PXIuaXRlbSgwKS5pbmRleE9mKGUpJiZyLml0ZW0oLTEpIT09dCl7dGhpcy5fX2xpbmVzLnNwbGljZShuKzEsMCxuZXcgaSh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfW4tLX19LGUuZXhwb3J0cy5PdXRwdXQ9dH0sLCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMucmF3X29wdGlvbnM9bihlLHQpLHRoaXMuZGlzYWJsZWQ9dGhpcy5fZ2V0X2Jvb2xlYW4oImRpc2FibGVkIiksdGhpcy5lb2w9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImVvbCIsImF1dG8iKSx0aGlzLmVuZF93aXRoX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oImVuZF93aXRoX25ld2xpbmUiKSx0aGlzLmluZGVudF9zaXplPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9zaXplIiw0KSx0aGlzLmluZGVudF9jaGFyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJpbmRlbnRfY2hhciIsIiAiKSx0aGlzLmluZGVudF9sZXZlbD10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfbGV2ZWwiKSx0aGlzLnByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJwcmVzZXJ2ZV9uZXdsaW5lcyIsITApLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9udW1iZXIoIm1heF9wcmVzZXJ2ZV9uZXdsaW5lcyIsMzI3ODYpLHRoaXMucHJlc2VydmVfbmV3bGluZXN8fCh0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz0wKSx0aGlzLmluZGVudF93aXRoX3RhYnM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF93aXRoX3RhYnMiLCJcdCI9PT10aGlzLmluZGVudF9jaGFyKSx0aGlzLmluZGVudF93aXRoX3RhYnMmJih0aGlzLmluZGVudF9jaGFyPSJcdCIsMT09PXRoaXMuaW5kZW50X3NpemUmJih0aGlzLmluZGVudF9zaXplPTQpKSx0aGlzLndyYXBfbGluZV9sZW5ndGg9dGhpcy5fZ2V0X251bWJlcigid3JhcF9saW5lX2xlbmd0aCIsdGhpcy5fZ2V0X251bWJlcigibWF4X2NoYXIiKSksdGhpcy5pbmRlbnRfZW1wdHlfbGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9lbXB0eV9saW5lcyIpLHRoaXMudGVtcGxhdGluZz10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoInRlbXBsYXRpbmciLFsiYXV0byIsIm5vbmUiLCJkamFuZ28iLCJlcmIiLCJoYW5kbGViYXJzIiwicGhwIiwic21hcnR5Il0sWyJhdXRvIl0pfWZ1bmN0aW9uIG4oZSx0KXt2YXIgbixyPXt9O2ZvcihuIGluIGU9aShlKSluIT09dCYmKHJbbl09ZVtuXSk7aWYodCYmZVt0XSlmb3IobiBpbiBlW3RdKXJbbl09ZVt0XVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBpKGUpe3ZhciB0LG49e307Zm9yKHQgaW4gZSluW3QucmVwbGFjZSgvLS9nLCJfIildPWVbdF07cmV0dXJuIG59dC5wcm90b3R5cGUuX2dldF9hcnJheT1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uY2F0JiYodD1lLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIGUmJih0PWUuc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSx0fSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PWU/ISF0OiEhZX0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9dHx8IiI7cmV0dXJuIHQ9InN0cmluZyI9PXR5cGVvZiBlP2UucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0Iik6dH0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD1wYXJzZUludCh0LDEwKSxpc05hTih0KSYmKHQ9MCksZT1wYXJzZUludChlLDEwKTtyZXR1cm4gZT1pc05hTihlKT90OmV9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXtuPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiBuWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTtuPXRoaXMuX2dldF9hcnJheShlLG4pO2lmKCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIG59LHQucHJvdG90eXBlLl9pc192YWxpZF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGgmJnQubGVuZ3RoJiYhZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9aSxlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgcj1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiB0KGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9dC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7MDx0aGlzLl9fcG9zaXRpb24mJi0tdGhpcy5fX3Bvc2l0aW9ufSx0LnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLHQ9MDw9KGUrPXRoaXMuX19wb3NpdGlvbikmJmU8dGhpcy5fX2lucHV0X2xlbmd0aD90aGlzLl9faW5wdXQuY2hhckF0KGUpOnR9LHQucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSx0KXtlLmxhc3RJbmRleD10O3ZhciBuPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFufHxyJiZlLnN0aWNreXx8bi5pbmRleCE9PXQmJihuPW51bGwpLG59LHQucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLDA8PSh0Kz10aGlzLl9fcG9zaXRpb24pJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LHQucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnBlZWsodCk7cmV0dXJuIGUubGFzdEluZGV4PTAsbnVsbCE9PXQmJmUudGVzdCh0KX0sdC5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oZSl7ZT10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiBlP3RoaXMuX19wb3NpdGlvbis9ZVswXS5sZW5ndGg6ZT1udWxsLGV9LHQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sdC5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX3Bvc2l0aW9uLGU9KGUubGFzdEluZGV4PXRoaXMuX19wb3NpdGlvbixlLmV4ZWModGhpcy5fX2lucHV0KSk7cmV0dXJuIGU/KG49ZS5pbmRleCx0JiYobis9ZVswXS5sZW5ndGgpKTpuPXRoaXMuX19pbnB1dF9sZW5ndGgsdD10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixuKSx0aGlzLl9fcG9zaXRpb249bix0fSx0LnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LHQucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHQ9dCYmcj8ieSI6ImciO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP249bmV3IFJlZ0V4cChlLHQpOmUmJihuPW5ldyBSZWdFeHAoZS5zb3VyY2UsdCkpLG59LHQucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LHQucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixlPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LGV9LHQucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPXR9LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO2Zvcih2YXIgdD17fSxuPSh0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTAsdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSkpO247KXRbblsxXV09blsyXSxuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO3JldHVybiB0fSx0LnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxlLmV4cG9ydHMuRGlyZWN0aXZlcz10fSwsZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTYpLkJlYXV0aWZpZXIsaT1uKDE3KS5PcHRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLHQpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsaSx0KXt2YXIgbj10KDE3KS5PcHRpb25zLG09dCgyKS5PdXRwdXQsZj10KDgpLklucHV0U2Nhbm5lcixnPW5ldyh0KDEzKS5EaXJlY3RpdmVzKSgvXC9cKi8sL1wqXC8vKSxiPS9cclxufFtcclxuXS8sXz0vXHJcbnxbXHJcbl0vZyx3PS9ccy8sdj0vKD86XHN8XG4pKy9nLHk9L1wvXCooPzpbXHNcU10qPykoKD86XCpcLyl8JCkvZyxUPS9cL1wvKD86W15cblxyXHUyMDI4XHUyMDI5XSopL2c7ZnVuY3Rpb24gcihlLHQpe3RoaXMuX3NvdXJjZV90ZXh0PWV8fCIiLHRoaXMuX29wdGlvbnM9bmV3IG4odCksdGhpcy5fY2g9bnVsbCx0aGlzLl9pbnB1dD1udWxsLHRoaXMuTkVTVEVEX0FUX1JVTEU9eyJAcGFnZSI6ITAsIkBmb250LWZhY2UiOiEwLCJAa2V5ZnJhbWVzIjohMCwiQG1lZGlhIjohMCwiQHN1cHBvcnRzIjohMCwiQGRvY3VtZW50IjohMH0sdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFPXsiQG1lZGlhIjohMCwiQHN1cHBvcnRzIjohMCwiQGRvY3VtZW50IjohMH19ci5wcm90b3R5cGUuZWF0U3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCk7dGhpcy5fY2g7KXtpZih0Kz10aGlzLl9jaCwiXFwiPT09dGhpcy5fY2gpdCs9dGhpcy5faW5wdXQubmV4dCgpO2Vsc2UgaWYoLTEhPT1lLmluZGV4T2YodGhpcy5fY2gpfHwiXG4iPT09dGhpcy5fY2gpYnJlYWs7dGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpfXJldHVybiB0fSxyLnByb3RvdHlwZS5lYXRXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD13LnRlc3QodGhpcy5faW5wdXQucGVlaygpKSxuPTA7dy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSk7KXRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSxlJiYiXG4iPT09dGhpcy5fY2gmJigwPT09bnx8bjx0aGlzLl9vcHRpb25zLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcykmJihuKyssdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpO3JldHVybiB0fSxyLnByb3RvdHlwZS5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0xLG49dGhpcy5faW5wdXQucGVlayh0KTtuOyl7aWYoInsiPT09bilyZXR1cm4hMDtpZigiKCI9PT1uKWUrPTE7ZWxzZSBpZigiKSI9PT1uKXtpZigwPT09ZSlyZXR1cm4hMTstLWV9ZWxzZSBpZigiOyI9PT1ufHwifSI9PT1uKXJldHVybiExO3QrKyxuPXRoaXMuX2lucHV0LnBlZWsodCl9cmV0dXJuITF9LHIucHJvdG90eXBlLnByaW50X3N0cmluZz1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCksdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT0hMCx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKGUpfSxyLnByb3RvdHlwZS5wcmVzZXJ2ZVNpbmdsZVNwYWNlPWZ1bmN0aW9uKGUpe2UmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKX0sci5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWwrK30sci5wcm90b3R5cGUub3V0ZGVudD1mdW5jdGlvbigpezA8dGhpcy5faW5kZW50TGV2ZWwmJnRoaXMuX2luZGVudExldmVsLS19LHIucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7Zm9yKHZhciBlLGMsdCxuLHI9dGhpcy5fc291cmNlX3RleHQsaT10aGlzLl9vcHRpb25zLmVvbCxkPSgiYXV0byI9PT1pJiYoaT0iXG4iLHImJmIudGVzdChyfHwiIikmJihpPXIubWF0Y2goYilbMF0pKSwocj1yLnJlcGxhY2UoXywiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXSksYT0odGhpcy5fb3V0cHV0PW5ldyBtKHRoaXMuX29wdGlvbnMsZCksdGhpcy5faW5wdXQ9bmV3IGYociksdGhpcy5faW5kZW50TGV2ZWw9MCx0aGlzLl9uZXN0ZWRMZXZlbD0wLHRoaXMuX2NoPW51bGwsMCksbz0hMSxzPSExLGw9ITEsaD0hMSx1PSExLHA9dGhpcy5fY2g7ZT0iIiE9PXRoaXMuX2lucHV0LnJlYWQodiksYz1wLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiXFwiPT09dGhpcy5fY2gmJnRoaXMuX2lucHV0Lmhhc05leHQoKSYmKHRoaXMuX2NoKz10aGlzLl9pbnB1dC5uZXh0KCkpLHA9dGhpcy5fY2gsdGhpcy5fY2g7KSIvIj09PXRoaXMuX2NoJiYiKiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9pbnB1dC5iYWNrKCksdD10aGlzLl9pbnB1dC5yZWFkKHkpLChuPWcuZ2V0X2RpcmVjdGl2ZXModCkpJiYic3RhcnQiPT09bi5pZ25vcmUmJih0Kz1nLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcodCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiIvIj09PXRoaXMuX2NoJiYiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQoVCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiJAIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksInsiPT09dGhpcy5faW5wdXQucGVlaygpP3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksKG49dGhpcy5faW5wdXQucGVla1VudGlsQWZ0ZXIoL1s6ICw7e30oKVtcXVwvPSciXS9nKSkubWF0Y2goL1sgOl0kLykmJihuPXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKG4pLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLCJleHRlbmQiPT09KG49bi5yZXBsYWNlKC9ccyQvLCIiKSk/aD0hMDoiaW1wb3J0Ij09PW4mJih1PSEwKSxuIGluIHRoaXMuTkVTVEVEX0FUX1JVTEU/KHRoaXMuX25lc3RlZExldmVsKz0xLG4gaW4gdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFJiYobD0hMCkpOm98fDAhPT1hfHwtMT09PW4uaW5kZXhPZigiOiIpfHwocz0hMCx0aGlzLmluZGVudCgpKSkpOiIjIj09PXRoaXMuX2NoJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKSk6InsiPT09dGhpcy5fY2g/KHMmJihzPSExLHRoaXMub3V0ZGVudCgpKSxvPWw/KGw9ITEsdGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsKTp0aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmbyYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09YyYmdGhpcy5fb3V0cHV0LnRyaW0oITApLGg9dT0hMSxzJiYodGhpcy5vdXRkZW50KCkscz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLG89ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IW8mJiFsfHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8aHx8MCE9PWE/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6Iiksc3x8KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49cz0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1hPyhzJiYodGhpcy5vdXRkZW50KCkscz0hMSksdT1oPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksYSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksYSYmKGEtLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGUpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxhKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KGEmJihhLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxzfHwwIT09YXx8dXx8aD90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8c3x8MCE9PWE/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSx3LnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKTooIiEiIT09dGhpcy5fY2h8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCJcXCIpP3RoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKTp0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmdy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZShpKX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciBlPXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIiksdD0odGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8ZSx0aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSkpO3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKykiZXhwYW5kIiE9PXRbbl0/dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiOnRoaXMuYnJhY2Vfc3R5bGU9dFtuXX1pLnByb3RvdHlwZT1uZXcgcixlLmV4cG9ydHMuT3B0aW9ucz1pfV0sU2k9e307dmFyIEFpLE1pLFJpLElpLE5pLFVpLHppPWZ1bmN0aW9uIGUodCl7dmFyIG49U2lbdF07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO249U2lbdF09e2V4cG9ydHM6e319O3JldHVybiBraVt0XShuLG4uZXhwb3J0cyxlKSxuLmV4cG9ydHN9KDE1KTtmdW5jdGlvbiBIaShlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksYz0hMCxpPTAsZD1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBhPWUub2Zmc2V0QXQodC5zdGFydCksbz1hOzA8byYmT2kocixvLTEpOylvLS07MD09PW98fFBpKHIsby0xKT9hPW86bzxhJiYoYT1vKzEpO2Zvcih2YXIgcz1lLm9mZnNldEF0KHQuZW5kKSxsPXM7bDxyLmxlbmd0aCYmT2kocixsKTspbCsrO2whPT1yLmxlbmd0aCYmIVBpKHIsbCl8fChzPWwpLHQ9dm4uY3JlYXRlKGUucG9zaXRpb25BdChhKSxlLnBvc2l0aW9uQXQocykpO3ZhciBoPXIuc3Vic3RyaW5nKDAsYSk7aWYobmV3IFJlZ0V4cCgvLipbPF1bXj5dKiQvKS50ZXN0KGgpKXJldHVyblt7cmFuZ2U6dCxuZXdUZXh0OnI9ci5zdWJzdHJpbmcoYSxzKX1dO2M9cz09PXIubGVuZ3RoLHI9ci5zdWJzdHJpbmcoYSxzKSwwIT09YSYmKGg9ZS5vZmZzZXRBdCh3bi5jcmVhdGUodC5zdGFydC5saW5lLDApKSxpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LGk9MCxhPW4udGFiU2l6ZXx8NDtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgbz1lLmNoYXJBdChyKTtpZigiICI9PT1vKWkrKztlbHNle2lmKCJcdCIhPT1vKWJyZWFrO2krPWF9cisrfXJldHVybiBNYXRoLmZsb29yKGkvYSl9KGUuZ2V0VGV4dCgpLGgsbikpfWVsc2UgdD12bi5jcmVhdGUod24uY3JlYXRlKDAsMCksZS5wb3NpdGlvbkF0KHIubGVuZ3RoKSk7cz17aW5kZW50X3NpemU6ZCxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6Ilx0IixpbmRlbnRfZW1wdHlfbGluZXM6RGkobiwiaW5kZW50RW1wdHlMaW5lcyIsITEpLHdyYXBfbGluZV9sZW5ndGg6RGkobiwid3JhcExpbmVMZW5ndGgiLDEyMCksdW5mb3JtYXR0ZWQ6V2kobiwidW5mb3JtYXR0ZWQiLHZvaWQgMCksY29udGVudF91bmZvcm1hdHRlZDpXaShuLCJjb250ZW50VW5mb3JtYXR0ZWQiLHZvaWQgMCksaW5kZW50X2lubmVyX2h0bWw6RGkobiwiaW5kZW50SW5uZXJIdG1sIiwhMSkscHJlc2VydmVfbmV3bGluZXM6RGkobiwicHJlc2VydmVOZXdMaW5lcyIsITApLG1heF9wcmVzZXJ2ZV9uZXdsaW5lczpEaShuLCJtYXhQcmVzZXJ2ZU5ld0xpbmVzIiwzMjc4NiksaW5kZW50X2hhbmRsZWJhcnM6RGkobiwiaW5kZW50SGFuZGxlYmFycyIsITEpLGVuZF93aXRoX25ld2xpbmU6YyYmRGkobiwiZW5kV2l0aE5ld2xpbmUiLCExKSxleHRyYV9saW5lcnM6V2kobiwiZXh0cmFMaW5lcnMiLHZvaWQgMCksd3JhcF9hdHRyaWJ1dGVzOkRpKG4sIndyYXBBdHRyaWJ1dGVzIiwiYXV0byIpLHdyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZTpEaShuLCJ3cmFwQXR0cmlidXRlc0luZGVudFNpemUiLHZvaWQgMCksZW9sOiJcbiIsaW5kZW50X3NjcmlwdHM6RGkobiwiaW5kZW50U2NyaXB0cyIsIm5vcm1hbCIpLHRlbXBsYXRpbmc6ITAhPT1EaShuLCJ0ZW1wbGF0aW5nIiwiYWxsIik/WyJub25lIl06WyJhdXRvIl0sdW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI6RGkobiwidW5mb3JtYXR0ZWRDb250ZW50RGVsaW1pdGVyIiwiIil9LGE9ci5yZXBsYWNlKC9eXHMrLywiIiksaD1BaShhLHMsRWksemkpO3JldHVybiAwPGkmJihlPW4uaW5zZXJ0U3BhY2VzP1lyKCIgIixkKmkpOllyKCJcdCIsaSksaD1oLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitlKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihoPWUraCkpLFt7cmFuZ2U6dCxuZXdUZXh0Omh9XX1mdW5jdGlvbiBEaShlLHQsbil7aWYoZSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSl7ZT1lW3RdO2lmKG51bGwhPT1lKXJldHVybiBlfXJldHVybiBufWZ1bmN0aW9uIFdpKGUsdCxuKXtlPURpKGUsdCxudWxsKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/MDxlLmxlbmd0aD9lLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpfSk6W106bn1mdW5jdGlvbiBQaShlLHQpe3JldHVybi0xIT09IlxyXG4iLmluZGV4T2YoZS5jaGFyQXQodCkpfWZ1bmN0aW9uIE9pKGUsdCl7cmV0dXJuLTEhPT0iIFx0Ii5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBxaShlKXtpZihVaVtlXSlyZXR1cm4gVWlbZV0uZXhwb3J0czt2YXIgdD1VaVtlXT17ZXhwb3J0czp7fX07cmV0dXJuIE5pW2VdKHQsdC5leHBvcnRzLHFpKSx0LmV4cG9ydHN9TWk9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLDA8ZS5pbmRlbnRfbGV2ZWwmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiB0KGUsdCl7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHQpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyBpKHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX1pLnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyBpKHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSxpLnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSxpLnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTswPD10O3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LGkucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LGkucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LGkucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0saS5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hIXRoaXMuX3Nob3VsZF93cmFwKCkmJih0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpLChlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lKS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLC0tZS5fX2NoYXJhY3Rlcl9jb3VudCksITApfSxpLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0saS5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0saS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LGkucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSxpLnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX2luZGVudF9jb3VudCYmKC0tdGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0saS5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50JiYtLXRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudH0saS5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSwtLXRoaXMuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT90aGlzLl9fcGFyZW50LmluZGVudF9lbXB0eV9saW5lcyYmKGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50KSk6KGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLGUrPXRoaXMuX19pdGVtcy5qb2luKCIiKSksZX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aDtyZXR1cm4gbj0obj1lPDA/MDpuKStlKnRoaXMuX19pbmRlbnRfc2l6ZSsodD10fHwwKX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmc7cmV0dXJuIHQ9dHx8MCxlPDAmJihlPTAsbj0iIiksdCs9ZSp0aGlzLl9faW5kZW50X3NpemUsdGhpcy5fX2Vuc3VyZV9jYWNoZSh0KSxuKz10aGlzLl9fY2FjaGVbdF19LG4ucHJvdG90eXBlLl9fZW5zdXJlX2NhY2hlPWZ1bmN0aW9uKGUpe2Zvcig7ZT49dGhpcy5fX2NhY2hlLmxlbmd0aDspdGhpcy5fX2FkZF9jb2x1bW4oKX0sbi5wcm90b3R5cGUuX19hZGRfY29sdW1uPWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fY2FjaGUubGVuZ3RoLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZ0Pj10aGlzLl9faW5kZW50X3NpemUmJih0LT0oZT1NYXRoLmZsb29yKHQvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KGUrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHQmJihuKz1uZXcgQXJyYXkodCsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSx0LnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSx0LnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSx0LnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sdC5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHQucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCksdD0odCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpLHRoaXMuX19saW5lcy5qb2luKCJcbiIpKTtyZXR1cm4gdD0iXG4iIT09ZT90LnJlcGxhY2UoL1tcbl0vZyxlKTp0fSx0LnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZT1lfHwwLHQ9dHx8MCksMTx0aGlzLl9fbGluZXMubGVuZ3RoPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KGUsdCksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSx0LnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5uZXdsaW5lczt0KyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUudGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSx0LnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSx0LnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LHQucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19saW5lcy5sZW5ndGg7ZTx0Oyl0aGlzLl9fbGluZXNbZV0uX3JlbW92ZV9pbmRlbnQoKSxlKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSx0LnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKGUpe2ZvcihlPXZvaWQgMCE9PWUmJmUsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2UmJjE8dGhpcy5fX2xpbmVzLmxlbmd0aCYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9MTx0aGlzLl9fbGluZXMubGVuZ3RoP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9fbGluZXMubGVuZ3RoLTI7MDw9bjspe3ZhciByPXRoaXMuX19saW5lc1tuXTtpZihyLmlzX2VtcHR5KCkpYnJlYWs7aWYoMCE9PXIuaXRlbSgwKS5pbmRleE9mKGUpJiZyLml0ZW0oLTEpIT09dCl7dGhpcy5fX2xpbmVzLnNwbGljZShuKzEsMCxuZXcgaSh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfW4tLX19LGUuZXhwb3J0cy5PdXRwdXQ9dH0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzLlRva2VuPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMudHlwZT1lLHRoaXMudGV4dD10LHRoaXMuY29tbWVudHNfYmVmb3JlPW51bGwsdGhpcy5uZXdsaW5lcz1ufHwwLHRoaXMud2hpdGVzcGFjZV9iZWZvcmU9cnx8IiIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5vcGVuZWQ9bnVsbCx0aGlzLmNsb3NlZD1udWxsLHRoaXMuZGlyZWN0aXZlcz1udWxsfX0sLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5yYXdfb3B0aW9ucz1uKGUsdCksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsIlx0Ij09PXRoaXMuaW5kZW50X2NoYXIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9Ilx0IiwxPT09dGhpcy5pbmRlbnRfc2l6ZSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiLCJzbWFydHkiXSxbImF1dG8iXSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBuLHI9e307Zm9yKG4gaW4gZT1pKGUpKW4hPT10JiYocltuXT1lW25dKTtpZih0JiZlW3RdKWZvcihuIGluIGVbdF0pcltuXT1lW3RdW25dO3JldHVybiByfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKW5bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XTtyZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25jYXQmJih0PWUuY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgZSYmKHQ9ZS5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHR9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXTtyZXR1cm4gdm9pZCAwPT09ZT8hIXQ6ISFlfSx0LnByb3RvdHlwZS5fZ2V0X2NoYXJhY3RlcnM9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD10fHwiIjtyZXR1cm4gdD0ic3RyaW5nIj09dHlwZW9mIGU/ZS5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKTp0fSx0LnByb3RvdHlwZS5fZ2V0X251bWJlcj1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKSxlPXBhcnNlSW50KGUsMTApO3JldHVybiBlPWlzTmFOKGUpP3Q6ZX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe249dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KGUsdCxuKTtpZigxIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIG5bMF19LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uX2xpc3Q9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0fHwwPT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJTZWxlY3Rpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHkuIik7aWYobj1ufHxbdFswXV0sIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihuLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBEZWZhdWx0IFZhbHVlISIpO249dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihuLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KX0sZS5leHBvcnRzLk9wdGlvbnM9dCxlLmV4cG9ydHMubm9ybWFsaXplT3B0cz1pLGUuZXhwb3J0cy5tZXJnZU9wdHM9bn0sLGZ1bmN0aW9uKGUpe3ZhciByPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO2Z1bmN0aW9uIHQoZSl7dGhpcy5fX2lucHV0PWV8fCIiLHRoaXMuX19pbnB1dF9sZW5ndGg9dGhpcy5fX2lucHV0Lmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MH10LnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXswPHRoaXMuX19wb3NpdGlvbiYmLS10aGlzLl9fcG9zaXRpb259LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX19pbnB1dF9sZW5ndGh9LHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGU9dGhpcy5fX2lucHV0LmNoYXJBdCh0aGlzLl9fcG9zaXRpb24pLHRoaXMuX19wb3NpdGlvbis9MSksZX0sdC5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlPWV8fDAsdD0wPD0oZSs9dGhpcy5fX3Bvc2l0aW9uKSYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoP3RoaXMuX19pbnB1dC5jaGFyQXQoZSk6dH0sdC5wcm90b3R5cGUuX19tYXRjaD1mdW5jdGlvbihlLHQpe2UubGFzdEluZGV4PXQ7dmFyIG49ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIW58fHImJmUuc3RpY2t5fHxuLmluZGV4IT09dCYmKG49bnVsbCksbn0sdC5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsMDw9KHQrPXRoaXMuX19wb3NpdGlvbikmJnQ8dGhpcy5fX2lucHV0X2xlbmd0aCYmISF0aGlzLl9fbWF0Y2goZSx0KX0sdC5wcm90b3R5cGUudGVzdENoYXI9ZnVuY3Rpb24oZSx0KXt0PXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09dCYmZS50ZXN0KHQpfSx0LnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXtlPXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIGU/dGhpcy5fX3Bvc2l0aW9uKz1lWzBdLmxlbmd0aDplPW51bGwsZX0sdC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSx0LnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fcG9zaXRpb24sZT0oZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uLGUuZXhlYyh0aGlzLl9faW5wdXQpKTtyZXR1cm4gZT8obj1lLmluZGV4LHQmJihuKz1lWzBdLmxlbmd0aCkpOm49dGhpcy5fX2lucHV0X2xlbmd0aCx0PXRoaXMuX19pbnB1dC5zdWJzdHJpbmcodGhpcy5fX3Bvc2l0aW9uLG4pLHRoaXMuX19wb3NpdGlvbj1uLHR9LHQucHJvdG90eXBlLnJlYWRVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlYWRVbnRpbChlLCEwKX0sdC5wcm90b3R5cGUuZ2V0X3JlZ2V4cD1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwsdD10JiZyPyJ5IjoiZyI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWU/bj1uZXcgUmVnRXhwKGUsdCk6ZSYmKG49bmV3IFJlZ0V4cChlLnNvdXJjZSx0KSksbn0sdC5wcm90b3R5cGUuZ2V0X2xpdGVyYWxfcmVnZXhwPWZ1bmN0aW9uKGUpe3JldHVybiBSZWdFeHAoZS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpKX0sdC5wcm90b3R5cGUucGVla1VudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLGU9dGhpcy5yZWFkVW50aWxBZnRlcihlKTtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPXQsZX0sdC5wcm90b3R5cGUubG9va0JhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLTE7cmV0dXJuIHQ+PWUubGVuZ3RoJiZ0aGlzLl9faW5wdXQuc3Vic3RyaW5nKHQtZS5sZW5ndGgsdCkudG9Mb3dlckNhc2UoKT09PWV9LGUuZXhwb3J0cy5JbnB1dFNjYW5uZXI9dH0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt0aGlzLl9pbnB1dD1uZXcgaShlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBzKHRoaXMuX2lucHV0KX12YXIgaT1uKDgpLklucHV0U2Nhbm5lcixhPW4oMykuVG9rZW4sbz1uKDEwKS5Ub2tlblN0cmVhbSxzPW4oMTEpLldoaXRlc3BhY2VQYXR0ZXJuLGw9e1NUQVJUOiJUS19TVEFSVCIsUkFXOiJUS19SQVciLEVPRjoiVEtfRU9GIn07ci5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgbyx0aGlzLl9yZXNldCgpO2Zvcih2YXIgZSx0PW5ldyBhKGwuU1RBUlQsIiIpLG49bnVsbCxyPVtdLGk9bmV3IG87dC50eXBlIT09bC5FT0Y7KXtmb3IoZT10aGlzLl9nZXRfbmV4dF90b2tlbih0LG4pO3RoaXMuX2lzX2NvbW1lbnQoZSk7KWkuYWRkKGUpLGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTtpLmlzRW1wdHkoKXx8KGUuY29tbWVudHNfYmVmb3JlPWksaT1uZXcgbyksZS5wYXJlbnQ9bix0aGlzLl9pc19vcGVuaW5nKGUpPyhyLnB1c2gobiksbj1lKTpuJiZ0aGlzLl9pc19jbG9zaW5nKGUsbikmJigoZS5vcGVuZWQ9bikuY2xvc2VkPWUsbj1yLnBvcCgpLGUucGFyZW50PW4pLChlLnByZXZpb3VzPXQpLm5leHQ9ZSx0aGlzLl9fdG9rZW5zLmFkZChlKSx0PWV9cmV0dXJuIHRoaXMuX190b2tlbnN9LHIucHJvdG90eXBlLl9pc19maXJzdF90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fdG9rZW5zLmlzRW1wdHkoKX0sci5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7fSxyLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3ZhciBuPXRoaXMuX2lucHV0LnJlYWQoLy4rL2cpO3JldHVybiBuP3RoaXMuX2NyZWF0ZV90b2tlbihsLlJBVyxuKTp0aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpfSxyLnByb3RvdHlwZS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sci5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LHIucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuITF9LHIucHJvdG90eXBlLl9jcmVhdGVfdG9rZW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGEoZSx0LHRoaXMuX3BhdHRlcm5zLndoaXRlc3BhY2UubmV3bGluZV9jb3VudCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuKX0sci5wcm90b3R5cGUuX3JlYWRXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhdHRlcm5zLndoaXRlc3BhY2UucmVhZCgpfSxlLmV4cG9ydHMuVG9rZW5pemVyPXIsZS5leHBvcnRzLlRPS0VOPWx9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fX3Rva2Vucz1bXSx0aGlzLl9fdG9rZW5zX2xlbmd0aD10aGlzLl9fdG9rZW5zLmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MCx0aGlzLl9fcGFyZW50X3Rva2VuPWV9dC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSx0LnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9fdG9rZW5zX2xlbmd0aH0sdC5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGU9dGhpcy5fX3Rva2Vuc1t0aGlzLl9fcG9zaXRpb25dLHRoaXMuX19wb3NpdGlvbis9MSksZX0sdC5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlPWV8fDAsdD0wPD0oZSs9dGhpcy5fX3Bvc2l0aW9uKSYmZTx0aGlzLl9fdG9rZW5zX2xlbmd0aD90aGlzLl9fdG9rZW5zW2VdOnR9LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLl9fcGFyZW50X3Rva2VuJiYoZS5wYXJlbnQ9dGhpcy5fX3BhcmVudF90b2tlbiksdGhpcy5fX3Rva2Vucy5wdXNoKGUpLHRoaXMuX190b2tlbnNfbGVuZ3RoKz0xfSxlLmV4cG9ydHMuVG9rZW5TdHJlYW09dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm47ZnVuY3Rpb24gaShlLHQpe3IuY2FsbCh0aGlzLGUsdCksdD90aGlzLl9saW5lX3JlZ2V4cD10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX2xpbmVfcmVnZXhwKTp0aGlzLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoIiIsIiIpLHRoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiJ9KGkucHJvdG90eXBlPW5ldyByKS5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zPWZ1bmN0aW9uKGUsdCl7dGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIisoZSs9IlxcdCAiKSsodCs9IlxcblxcciIpKyJdKyIsITApLHRoaXMuX25ld2xpbmVfcmVnZXhwPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIlxcclxcbnxbIit0KyJdIil9LGkucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIiO3ZhciBlLHQ9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtyZXR1cm4iICI9PT10P3RoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiOnQmJihlPXRoaXMuX19zcGxpdCh0aGlzLl9uZXdsaW5lX3JlZ2V4cCx0KSx0aGlzLm5ld2xpbmVfY291bnQ9ZS5sZW5ndGgtMSx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPWVbdGhpcy5uZXdsaW5lX2NvdW50XSksdH0saS5wcm90b3R5cGUubWF0Y2hpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9jcmVhdGUoKTtyZXR1cm4gbi5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKGUsdCksbi5fdXBkYXRlKCksbn0saS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgaSh0aGlzLl9pbnB1dCx0aGlzKX0saS5wcm90b3R5cGUuX19zcGxpdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxhc3RJbmRleD0wLHI9W10saT1lLmV4ZWModCk7aTspci5wdXNoKHQuc3Vic3RyaW5nKG4saS5pbmRleCkpLG49aS5pbmRleCtpWzBdLmxlbmd0aCxpPWUuZXhlYyh0KTtyZXR1cm4gbjx0Lmxlbmd0aD9yLnB1c2godC5zdWJzdHJpbmcobix0Lmxlbmd0aCkpOnIucHVzaCgiIikscn0sZS5leHBvcnRzLldoaXRlc3BhY2VQYXR0ZXJuPWl9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLl9pbnB1dD1lLHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm49bnVsbCx0aGlzLl9tYXRjaF9wYXR0ZXJuPW51bGwsdGhpcy5fdW50aWxfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX2FmdGVyPSExLHQmJih0aGlzLl9zdGFydGluZ19wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fc3RhcnRpbmdfcGF0dGVybiwhMCksdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX21hdGNoX3BhdHRlcm4sITApLHRoaXMuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll91bnRpbF9wYXR0ZXJuKSx0aGlzLl91bnRpbF9hZnRlcj10Ll91bnRpbF9hZnRlcil9dC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fc3RhcnRpbmdfcGF0dGVybik7cmV0dXJuIHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4mJiFlfHwoZSs9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuLHRoaXMuX3VudGlsX3BhdHRlcm4sdGhpcy5fdW50aWxfYWZ0ZXIpKSxlfSx0LnByb3RvdHlwZS5yZWFkX21hdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMuX21hdGNoX3BhdHRlcm4pfSx0LnByb3RvdHlwZS51bnRpbF9hZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITAsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnVudGlsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll91bnRpbF9hZnRlcj0hMSx0Ll91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUuc3RhcnRpbmdfd2l0aD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLm1hdGNoaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll9tYXRjaF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSwhMCksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgdCh0aGlzLl9pbnB1dCx0aGlzKX0sdC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe30sZS5leHBvcnRzLlBhdHRlcm49dH0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2U9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zb3VyY2UsdD0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZSt0LCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGUrL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK3QsImciKX10LnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihlKXtpZighZS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9e30sbj0odGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dD1uZXcgcihlKTt0aGlzLl9fcGF0dGVybnM9e2hhbmRsZWJhcnNfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzX3VuZXNjYXBlZDp0LnN0YXJ0aW5nX3dpdGgoL3t7ey8pLnVudGlsX2FmdGVyKC99fX0vKSxoYW5kbGViYXJzOnQuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxwaHA6dC5zdGFydGluZ193aXRoKC88XD8oPzpbPSBdfHBocCkvKS51bnRpbF9hZnRlcigvXD8+LyksZXJiOnQuc3RhcnRpbmdfd2l0aCgvPCVbXiVdLykudW50aWxfYWZ0ZXIoL1teJV0lPi8pLGRqYW5nbzp0LnN0YXJ0aW5nX3dpdGgoL3slLykudW50aWxfYWZ0ZXIoLyV9LyksZGphbmdvX3ZhbHVlOnQuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxkamFuZ29fY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3sjLykudW50aWxfYWZ0ZXIoLyN9Lyksc21hcnR5OnQuc3RhcnRpbmdfd2l0aCgveyg/PVtefXtcc1xuXSkvKS51bnRpbF9hZnRlcigvW15cc1xuXX0vKSxzbWFydHlfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3tcKi8pLnVudGlsX2FmdGVyKC9cKn0vKSxzbWFydHlfbGl0ZXJhbDp0LnN0YXJ0aW5nX3dpdGgoL3tsaXRlcmFsfS8pLnVudGlsX2FmdGVyKC97XC9saXRlcmFsfS8pfX0oYS5wcm90b3R5cGU9bmV3IHIpLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcy5faW5wdXQsdGhpcyl9LGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuKCl9LGEucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2Rpc2FibGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWRfb3B0aW9ucz1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2NyZWF0ZSgpO2Zvcih0IGluIGkpbi5fZGlzYWJsZWRbdF09LTE9PT1lLnRlbXBsYXRpbmcuaW5kZXhPZih0KTtyZXR1cm4gbi5fdXBkYXRlKCksbn0sYS5wcm90b3R5cGUuZXhjbHVkZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZXhjbHVkZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe2Zvcih2YXIgZT0iIixlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pLHQ9dGhpcy5fcmVhZF90ZW1wbGF0ZSgpO3Q7KXRoaXMuX21hdGNoX3BhdHRlcm4/dCs9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTp0Kz10aGlzLl9pbnB1dC5yZWFkVW50aWwodGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pLGUrPXQsdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7cmV0dXJuIHRoaXMuX3VudGlsX2FmdGVyJiYoZSs9dGhpcy5faW5wdXQucmVhZFVudGlsQWZ0ZXIodGhpcy5fdW50aWxfcGF0dGVybikpLGV9LGEucHJvdG90eXBlLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuPWZ1bmN0aW9uKCl7dmFyIGU9W107dGhpcy5fZGlzYWJsZWQucGhwfHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLnBocC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFycy5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmVyYnx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5lcmIuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl9kaXNhYmxlZC5kamFuZ298fChlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nby5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fY29tbWVudC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuc21hcnR5Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fdW50aWxfcGF0dGVybiYmZS5wdXNoKHRoaXMuX3VudGlsX3BhdHRlcm4uc291cmNlKSx0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCIoPzoiK2Uuam9pbigifCIpKyIpIil9LGEucHJvdG90eXBlLl9yZWFkX3RlbXBsYXRlPWZ1bmN0aW9uKCl7dmFyIGUsdD0iIixuPXRoaXMuX2lucHV0LnBlZWsoKTtyZXR1cm4iPCI9PT1uPyhlPXRoaXMuX2lucHV0LnBlZWsoMSksdGhpcy5fZGlzYWJsZWQucGhwfHx0aGlzLl9leGNsdWRlZC5waHB8fCI/IiE9PWV8fCh0PXR8fHRoaXMuX19wYXR0ZXJucy5waHAucmVhZCgpKSx0aGlzLl9kaXNhYmxlZC5lcmJ8fHRoaXMuX2V4Y2x1ZGVkLmVyYnx8IiUiIT09ZXx8KHQ9dHx8dGhpcy5fX3BhdHRlcm5zLmVyYi5yZWFkKCkpKToieyI9PT1uJiYodGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8dGhpcy5fZXhjbHVkZWQuaGFuZGxlYmFyc3x8KHQ9KHQ9KHQ9dHx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc191bmVzY2FwZWQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnMucmVhZCgpKSx0aGlzLl9kaXNhYmxlZC5kamFuZ298fCh0aGlzLl9leGNsdWRlZC5kamFuZ298fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fCh0PXR8fHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUucmVhZCgpKSx0aGlzLl9leGNsdWRlZC5kamFuZ298fCh0PSh0PXR8fHRoaXMuX19wYXR0ZXJucy5kamFuZ29fY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvLnJlYWQoKSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8dGhpcy5fZGlzYWJsZWQuZGphbmdvJiZ0aGlzLl9kaXNhYmxlZC5oYW5kbGViYXJzJiYodD0odD0odD10fHx0aGlzLl9fcGF0dGVybnMuc21hcnR5X2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9saXRlcmFsLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHkucmVhZCgpKSksdH0sZS5leHBvcnRzLlRlbXBsYXRhYmxlUGF0dGVybj1hfSwsLCxmdW5jdGlvbihlLHQsbil7dmFyIGk9bigxOSkuQmVhdXRpZmllcixyPW4oMjApLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgaShlLHQsbixyKS5iZWF1dGlmeSgpfSxlLmV4cG9ydHMuZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJ9fSxmdW5jdGlvbihlLG4sdCl7ZnVuY3Rpb24gaChlLHQpe3RoaXMuaW5kZW50X2xldmVsPTAsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPWUubWF4X3ByZXNlcnZlX25ld2xpbmVzLHRoaXMucHJlc2VydmVfbmV3bGluZXM9ZS5wcmVzZXJ2ZV9uZXdsaW5lcyx0aGlzLl9vdXRwdXQ9bmV3IHIoZSx0KX1mdW5jdGlvbiBhKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksLTE8KG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW51bGwsbj1lLm5leHQ7bi50eXBlIT09Yy5FT0YmJmUuY2xvc2VkIT09bjspe2lmKG4udHlwZT09PWMuQVRUUklCVVRFJiYidHlwZSI9PT1uLnRleHQpe24ubmV4dCYmbi5uZXh0LnR5cGU9PT1jLkVRVUFMUyYmbi5uZXh0Lm5leHQmJm4ubmV4dC5uZXh0LnR5cGU9PT1jLlZBTFVFJiYodD1uLm5leHQubmV4dC50ZXh0KTticmVha31uPW4ubmV4dH1yZXR1cm4gdH0odCl8fG4pLnNlYXJjaCgidGV4dC9jc3MiKT9yPSJjc3MiOi0xPG4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pP3I9ImphdmFzY3JpcHQiOi0xPG4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT9yPSJodG1sIjotMTxuLnNlYXJjaCgvdGVzdFwvbnVsbC8pJiYocj0ibnVsbCIpLHIpOm51bGx9dmFyIGk9dCgyMCkuT3B0aW9ucyxyPXQoMikuT3V0cHV0LGY9dCgyMSkuVG9rZW5pemVyLGM9dCgyMSkuVE9LRU4sZD0vXHJcbnxbXHJcbl0vLGc9L1xyXG58W1xyXG5dL2c7aC5wcm90b3R5cGUuY3VycmVudF9saW5lX2hhc19tYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb3V0cHV0LmN1cnJlbnRfbGluZS5oYXNfbWF0Y2goZSl9LGgucHJvdG90eXBlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPWUsdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT10fSxoLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5zZXRfd3JhcF9wb2ludCgpfSxoLnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfcmF3X3Rva2VuKGUpfSxoLnByb3RvdHlwZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9MDtlLnR5cGUhPT1jLlRFWFQmJmUucHJldmlvdXMudHlwZSE9PWMuVEVYVCYmKHQ9ZS5uZXdsaW5lcz8xOjApLHRoaXMucHJlc2VydmVfbmV3bGluZXMmJih0PWUubmV3bGluZXM8dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMT9lLm5ld2xpbmVzOnRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzKzEpO2Zvcih2YXIgbj0wO248dDtuKyspdGhpcy5wcmludF9uZXdsaW5lKDA8bik7cmV0dXJuIDAhPT10fSxoLnByb3RvdHlwZS50cmF2ZXJzZV93aGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEoIWUud2hpdGVzcGFjZV9iZWZvcmUmJiFlLm5ld2xpbmVzKSYmKHRoaXMucHJpbnRfcHJlc2VydmVkX25ld2xpbmVzKGUpfHwodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksITApfSxoLnByb3RvdHlwZS5wcmV2aW91c190b2tlbl93cmFwcGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX291dHB1dC5wcmV2aW91c190b2tlbl93cmFwcGVkfSxoLnByb3RvdHlwZS5wcmludF9uZXdsaW5lPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoZSl9LGgucHJvdG90eXBlLnByaW50X3Rva2VuPWZ1bmN0aW9uKGUpe2UudGV4dCYmKHRoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZS50ZXh0KSl9LGgucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuaW5kZW50X2xldmVsKyt9LGgucHJvdG90eXBlLmdldF9mdWxsX2luZGVudD1mdW5jdGlvbihlKXtyZXR1cm4oZT10aGlzLmluZGVudF9sZXZlbCsoZXx8MCkpPDE/IiI6dGhpcy5fb3V0cHV0LmdldF9pbmRlbnRfc3RyaW5nKGUpfTtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuLTEhPT10LmluZGV4T2YoZSl9ZnVuY3Rpb24gcyhlLHQsbil7dGhpcy5wYXJlbnQ9ZXx8bnVsbCx0aGlzLnRhZz10P3QudGFnX25hbWU6IiIsdGhpcy5pbmRlbnRfbGV2ZWw9bnx8MCx0aGlzLnBhcnNlcl90b2tlbj10fHxudWxsfWZ1bmN0aW9uIHUoZSl7dGhpcy5fcHJpbnRlcj1lLHRoaXMuX2N1cnJlbnRfZnJhbWU9bnVsbH1mdW5jdGlvbiBwKGUsdCxuLHIpe3RoaXMuX3NvdXJjZV90ZXh0PWV8fCIiLHQ9dHx8e30sdGhpcy5fanNfYmVhdXRpZnk9bix0aGlzLl9jc3NfYmVhdXRpZnk9cix0aGlzLl90YWdfc3RhY2s9bnVsbDtlPW5ldyBpKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWUsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9dS5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHUucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7ZT1uZXcgcyh0aGlzLl9jdXJyZW50X2ZyYW1lLGUsdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWwpO3RoaXMuX2N1cnJlbnRfZnJhbWU9ZX0sdS5wcm90b3R5cGUuX3RyeV9wb3BfZnJhbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZSYmKHQ9ZS5wYXJzZXJfdG9rZW4sdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWw9ZS5pbmRlbnRfbGV2ZWwsdGhpcy5fY3VycmVudF9mcmFtZT1lLnBhcmVudCksdH0sdS5wcm90b3R5cGUuX2dldF9mcmFtZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9jdXJyZW50X2ZyYW1lO24mJi0xPT09ZS5pbmRleE9mKG4udGFnKTspe2lmKHQmJi0xIT09dC5pbmRleE9mKG4udGFnKSl7bj1udWxsO2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIG59LHUucHJvdG90eXBlLnRyeV9wb3A9ZnVuY3Rpb24oZSx0KXtlPXRoaXMuX2dldF9mcmFtZShbZV0sdCk7cmV0dXJuIHRoaXMuX3RyeV9wb3BfZnJhbWUoZSl9LHUucHJvdG90eXBlLmluZGVudF90b190YWc9ZnVuY3Rpb24oZSl7ZT10aGlzLl9nZXRfZnJhbWUoZSk7ZSYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsKX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDtmb3IodmFyIGU9dGhpcy5fc291cmNlX3RleHQsdD10aGlzLl9vcHRpb25zLmVvbCxuPSgiYXV0byI9PT10aGlzLl9vcHRpb25zLmVvbCYmKHQ9IlxuIixlJiZkLnRlc3QoZSkmJih0PWUubWF0Y2goZClbMF0pKSwoZT1lLnJlcGxhY2UoZywiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXSkscj17dGV4dDoiIix0eXBlOiIifSxpPW5ldyBtLGE9bmV3IGgodGhpcy5fb3B0aW9ucyxuKSxvPW5ldyBmKGUsdGhpcy5fb3B0aW9ucykudG9rZW5pemUoKSxzPSh0aGlzLl90YWdfc3RhY2s9bmV3IHUoYSksbnVsbCksbD1vLm5leHQoKTtsLnR5cGUhPT1jLkVPRjspbC50eXBlPT09Yy5UQUdfT1BFTnx8bC50eXBlPT09Yy5DT01NRU5UP2k9cz10aGlzLl9oYW5kbGVfdGFnX29wZW4oYSxsLGkscik6bC50eXBlPT09Yy5BVFRSSUJVVEV8fGwudHlwZT09PWMuRVFVQUxTfHxsLnR5cGU9PT1jLlZBTFVFfHxsLnR5cGU9PT1jLlRFWFQmJiFpLnRhZ19jb21wbGV0ZT9zPXRoaXMuX2hhbmRsZV9pbnNpZGVfdGFnKGEsbCxpLG8pOmwudHlwZT09PWMuVEFHX0NMT1NFP3M9dGhpcy5faGFuZGxlX3RhZ19jbG9zZShhLGwsaSk6bC50eXBlPT09Yy5URVhUP3M9dGhpcy5faGFuZGxlX3RleHQoYSxsLGkpOmEuYWRkX3Jhd190b2tlbihsKSxyPXMsbD1vLm5leHQoKTtyZXR1cm4gYS5fb3V0cHV0LmdldF9jb2RlKHQpfSxwLnByb3RvdHlwZS5faGFuZGxlX3RhZ19jbG9zZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtyZXR1cm4gZS5hbGlnbm1lbnRfc2l6ZT0wLG4udGFnX2NvbXBsZXRlPSEwLGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbih0Lm5ld2xpbmVzfHwiIiE9PXQud2hpdGVzcGFjZV9iZWZvcmUsITApLG4uaXNfdW5mb3JtYXR0ZWQ/ZS5hZGRfcmF3X3Rva2VuKHQpOigiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCIvIj09PXQudGV4dFswXSwhMCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJm4uaGFzX3dyYXBwZWRfYXR0cnMmJmUucHJpbnRfbmV3bGluZSghMSkpLGUucHJpbnRfdG9rZW4odCkpLCFuLmluZGVudF9jb250ZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChlLmluZGVudCgpLG4uaW5kZW50X2NvbnRlbnQ9ITEpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5zZXRfd3JhcF9wb2ludCgpLHJ9LHAucHJvdG90eXBlLl9oYW5kbGVfaW5zaWRlX3RhZz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1uLmhhc193cmFwcGVkX2F0dHJzLGE9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtpZihlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkKWUuYWRkX3Jhd190b2tlbih0KTtlbHNlIGlmKCJ7Ij09PW4udGFnX3N0YXJ0X2NoYXImJnQudHlwZT09PWMuVEVYVCllLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcyh0KT8odC5uZXdsaW5lcz0wLGUuYWRkX3Jhd190b2tlbih0KSk6ZS5wcmludF90b2tlbih0KTtlbHNle2lmKHQudHlwZT09PWMuQVRUUklCVVRFPyhlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITApLG4uYXR0cl9jb3VudCs9MSk6KHQudHlwZT09PWMuRVFVQUxTfHx0LnR5cGU9PT1jLlZBTFVFJiZ0LnByZXZpb3VzLnR5cGU9PT1jLkVRVUFMUykmJmUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbighMSksdC50eXBlPT09Yy5BVFRSSUJVVEUmJiI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksaT1pfHwwIT09dC5uZXdsaW5lcyksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlKSl7dmFyIG89MTxuLmF0dHJfY291bnQ7aWYodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJjE9PT1uLmF0dHJfY291bnQpe3ZhciBzLGw9ITAsaD0wO2Rve2lmKChzPXIucGVlayhoKSkudHlwZT09PWMuQVRUUklCVVRFKXtsPSExO2JyZWFrfX13aGlsZSgoaCs9MSk8NCYmcy50eXBlIT09Yy5FT0YmJnMudHlwZSE9PWMuVEFHX0NMT1NFKTtvPSFsfW8mJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LHAucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LHAucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiIsbz0oImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBwKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKSxlLmdldF9mdWxsX2luZGVudChvKSk7aWYoYT1hLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLCJodG1sIiE9PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmIjwiPT09YVswXSYmYS5tYXRjaCgvXig8IS0tfDwhXFtDREFUQVxbKS8pKXt2YXIgbj0vXig8IS0tW15cbl0qfDwhXFtDREFUQVxbKShcbj8pKFsgXHRcbl0qKShbXHNcU10qKSgtLT58XV0+KSQvLmV4ZWMoYSk7aWYoIW4pcmV0dXJuIHZvaWQgZS5hZGRfcmF3X3Rva2VuKHQpO3M9bytuWzFdKyJcbiIsYT1uWzRdLG5bNV0mJihsPW8rbls1XSksYT1hLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLChuWzJdfHwtMSE9PW5bM10uaW5kZXhPZigiXG4iKSkmJihuPW5bM10ubWF0Y2goL1sgXHRdKyQvKSkmJih0LndoaXRlc3BhY2VfYmVmb3JlPW5bMF0pfWE9YSYmKGk/KChuPWZ1bmN0aW9uKCl7dGhpcy5lb2w9IlxuIn0pLnByb3RvdHlwZT10aGlzLl9vcHRpb25zLnJhd19vcHRpb25zLGkobythLG5ldyBuKSk6bysoYT0oaT10LndoaXRlc3BhY2VfYmVmb3JlKT9hLnJlcGxhY2UobmV3IFJlZ0V4cCgiXG4oIitpKyIpPyIsImciKSwiXG4iKTphKS5yZXBsYWNlKC9cbi9nLCJcbiIrbykpLHMmJihhPWE/cythKyJcbiIrbDpzK2wpLGUucHJpbnRfbmV3bGluZSghMSksYSYmKHQudGV4dD1hLHQud2hpdGVzcGFjZV9iZWZvcmU9IiIsdC5uZXdsaW5lcz0wLGUuYWRkX3Jhd190b2tlbih0KSxlLnByaW50X25ld2xpbmUoITApKX19LHAucHJvdG90eXBlLl9oYW5kbGVfdGFnX29wZW49ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5fZ2V0X3RhZ19vcGVuX3Rva2VuKHQpO3JldHVybiFuLmlzX3VuZm9ybWF0dGVkJiYhbi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHxuLmlzX2VtcHR5X2VsZW1lbnR8fHQudHlwZSE9PWMuVEFHX09QRU58fDAhPT10LnRleHQuaW5kZXhPZigiPC8iKT8oZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLHRoaXMuX3NldF90YWdfcG9zaXRpb24oZSx0LGksbixyKSxpLmlzX2lubGluZV9lbGVtZW50fHxlLnNldF93cmFwX3BvaW50KCksZS5wcmludF90b2tlbih0KSk6KGUuYWRkX3Jhd190b2tlbih0KSxpLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChpLnRhZ19uYW1lKSksKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9hbGlnbmVkfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfYWxpZ25lZF9tdWx0aXBsZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoaS5hbGlnbm1lbnRfc2l6ZT10LnRleHQubGVuZ3RoKzEpLGkudGFnX2NvbXBsZXRlfHxpLmlzX3VuZm9ybWF0dGVkfHwoZS5hbGlnbm1lbnRfc2l6ZT1pLmFsaWdubWVudF9zaXplKSxpfTt2YXIgbT1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdD8odGhpcy50YWdfc3RhcnRfY2hhcj10LnRleHRbMF0sdGhpcy50ZXh0PXQudGV4dCwiPCI9PT10aGlzLnRhZ19zdGFydF9jaGFyPyhuPXQudGV4dC5tYXRjaCgvXjwoW15ccz5dKikvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIpOihuPXQudGV4dC5tYXRjaCgvXnt7KD86W1xeXXwjXCo/KT8oW15cc31dKykvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIsInt7Iz4iPT09dC50ZXh0JiYiPiI9PT10aGlzLnRhZ19jaGVjayYmbnVsbCE9PXQubmV4dCYmKHRoaXMudGFnX2NoZWNrPXQubmV4dC50ZXh0KSksdGhpcy50YWdfY2hlY2s9dGhpcy50YWdfY2hlY2sudG9Mb3dlckNhc2UoKSx0LnR5cGU9PT1jLkNPTU1FTlQmJih0aGlzLnRhZ19jb21wbGV0ZT0hMCksdGhpcy5pc19zdGFydF90YWc9Ii8iIT09dGhpcy50YWdfY2hlY2suY2hhckF0KDApLHRoaXMudGFnX25hbWU9dGhpcy5pc19zdGFydF90YWc/dGhpcy50YWdfY2hlY2s6dGhpcy50YWdfY2hlY2suc3Vic3RyKDEpLHRoaXMuaXNfZW5kX3RhZz0hdGhpcy5pc19zdGFydF90YWd8fHQuY2xvc2VkJiYiLz4iPT09dC5jbG9zZWQudGV4dCx0aGlzLmlzX2VuZF90YWc9dGhpcy5pc19lbmRfdGFnfHwieyI9PT10aGlzLnRhZ19zdGFydF9jaGFyJiYodGhpcy50ZXh0Lmxlbmd0aDwzfHwvW14jXF5dLy50ZXN0KHRoaXMudGV4dC5jaGFyQXQoMikpKSk6dGhpcy50YWdfY29tcGxldGU9ITB9LGw9KHAucHJvdG90eXBlLl9nZXRfdGFnX29wZW5fdG9rZW49ZnVuY3Rpb24oZSl7ZT1uZXcgbSh0aGlzLl90YWdfc3RhY2suZ2V0X3BhcnNlcl90b2tlbigpLGUpO3JldHVybiBlLmFsaWdubWVudF9zaXplPXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplLGUuaXNfZW5kX3RhZz1lLmlzX2VuZF90YWd8fG8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy52b2lkX2VsZW1lbnRzKSxlLmlzX2VtcHR5X2VsZW1lbnQ9ZS50YWdfY29tcGxldGV8fGUuaXNfc3RhcnRfdGFnJiZlLmlzX2VuZF90YWcsZS5pc191bmZvcm1hdHRlZD0hZS50YWdfY29tcGxldGUmJm8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZCksZS5pc19jb250ZW50X3VuZm9ybWF0dGVkPSFlLmlzX2VtcHR5X2VsZW1lbnQmJm8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkKSxlLmlzX2lubGluZV9lbGVtZW50PW8oZS50YWdfbmFtZSx0aGlzLl9vcHRpb25zLmlubGluZSl8fCJ7Ij09PWUudGFnX3N0YXJ0X2NoYXIsZX0scC5wcm90b3R5cGUuX3NldF90YWdfcG9zaXRpb249ZnVuY3Rpb24oZSx0LG4scixpKXtuLmlzX2VtcHR5X2VsZW1lbnR8fChuLmlzX2VuZF90YWc/bi5zdGFydF90YWdfdG9rZW49dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3Aobi50YWdfbmFtZSk6KHRoaXMuX2RvX29wdGlvbmFsX2VuZF9lbGVtZW50KG4pJiYobi5pc19pbmxpbmVfZWxlbWVudHx8ZS5wcmludF9uZXdsaW5lKCExKSksdGhpcy5fdGFnX3N0YWNrLnJlY29yZF90YWcobiksInNjcmlwdCIhPT1uLnRhZ19uYW1lJiYic3R5bGUiIT09bi50YWdfbmFtZXx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwobi5jdXN0b21fYmVhdXRpZmllcl9uYW1lPWEobi50YWdfY2hlY2ssdCkpKSksbyhuLnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmV4dHJhX2xpbmVycykmJihlLnByaW50X25ld2xpbmUoITEpLGUuX291dHB1dC5qdXN0X2FkZGVkX2JsYW5rbGluZSgpfHxlLnByaW50X25ld2xpbmUoITApKSxuLmlzX2VtcHR5X2VsZW1lbnQ/KCJ7Ij09PW4udGFnX3N0YXJ0X2NoYXImJiJlbHNlIj09PW4udGFnX2NoZWNrJiYodGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSkpLCIhLS0iPT09bi50YWdfbmFtZSYmaS50eXBlPT09Yy5UQUdfQ0xPU0UmJnIuaXNfZW5kX3RhZyYmLTE9PT1uLnRleHQuaW5kZXhPZigiXG4iKXx8KG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKSkpOm4uaXNfZW5kX3RhZz8odD0hMSx0PSh0PW4uc3RhcnRfdGFnX3Rva2VuJiZuLnN0YXJ0X3RhZ190b2tlbi5tdWx0aWxpbmVfY29udGVudCl8fCFuLmlzX2lubGluZV9lbGVtZW50JiYhKHIuaXNfaW5saW5lX2VsZW1lbnR8fHIuaXNfdW5mb3JtYXR0ZWQpJiYhKGkudHlwZT09PWMuVEFHX0NMT1NFJiZuLnN0YXJ0X3RhZ190b2tlbj09PXIpJiYiVEtfQ09OVEVOVCIhPT1pLnR5cGUsKHQ9bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHxuLmlzX3VuZm9ybWF0dGVkPyExOnQpJiZlLnByaW50X25ld2xpbmUoITEpKToobi5pbmRlbnRfY29udGVudD0hbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lLCI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigiaHRtbCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaW5uZXJfaHRtbDoiaGVhZCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaGVhZF9pbm5lcl9odG1sOiJib2R5Ij09PW4udGFnX25hbWUmJihuLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2JvZHlfaW5uZXJfaHRtbCkpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fCJUS19DT05URU5UIj09PWkudHlwZSYmIW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX0scC5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfSxbImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0pLGI9WyJhIiwiYXVkaW8iLCJkZWwiLCJpbnMiLCJtYXAiLCJub3NjcmlwdCIsInZpZGVvIl07cC5wcm90b3R5cGUuX2RvX29wdGlvbmFsX2VuZF9lbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpcmV0dXJuImJvZHkiPT09ZS50YWdfbmFtZT9uPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJoZWFkIik6ImxpIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKToiZGQiPT09ZS50YWdfbmFtZXx8ImR0Ij09PWUudGFnX25hbWU/bj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiZHQiLFsiZGwiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiZGQiLFsiZGwiXSk6InAiPT09ZS5wYXJlbnQudGFnX25hbWUmJi0xIT09bC5pbmRleE9mKGUudGFnX25hbWUpPyh0PWUucGFyZW50LnBhcmVudCkmJi0xIT09Yi5pbmRleE9mKHQudGFnX25hbWUpfHwobj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKToicnAiPT09ZS50YWdfbmFtZXx8InJ0Ij09PWUudGFnX25hbWU/bj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnQiLFsicnVieSIsInJ0YyJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJycCIsWyJydWJ5IiwicnRjIl0pOiJvcHRncm91cCI9PT1lLnRhZ19uYW1lP249bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGdyb3VwIixbInNlbGVjdCJdKToib3B0aW9uIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgib3B0aW9uIixbInNlbGVjdCIsImRhdGFsaXN0Iiwib3B0Z3JvdXAiXSk6ImNvbGdyb3VwIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKToidGhlYWQiPT09ZS50YWdfbmFtZT9uPShuPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pOiJ0Ym9keSI9PT1lLnRhZ19uYW1lfHwidGZvb3QiPT09ZS50YWdfbmFtZT9uPShuPShuPShuPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRoZWFkIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRib2R5IixbInRhYmxlIl0pOiJ0ciI9PT1lLnRhZ19uYW1lP249KG49KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY29sZ3JvdXAiLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidHIiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiXSk6InRoIiE9PWUudGFnX25hbWUmJiJ0ZCIhPT1lLnRhZ19uYW1lfHwobj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGQiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aCIsWyJ0YWJsZSIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIl0pKSxlLnBhcmVudD10aGlzLl90YWdfc3RhY2suZ2V0X3BhcnNlcl90b2tlbigpLG59LGUuZXhwb3J0cy5CZWF1dGlmaWVyPXB9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsYyx0KXtmdW5jdGlvbiBuKGUsdCl7ci5jYWxsKHRoaXMsZSx0KSx0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIiO3ZhciBlPW5ldyBvKHRoaXMuX2lucHV0KS5yZWFkX29wdGlvbnModGhpcy5fb3B0aW9ucyksdD1uZXcgcyh0aGlzLl9pbnB1dCk7dGhpcy5fX3BhdHRlcm5zPXt3b3JkOmUudW50aWwoL1tcblxyXHQgPF0vKSxzaW5nbGVfcXVvdGU6ZS51bnRpbF9hZnRlcigvJy8pLGRvdWJsZV9xdW90ZTplLnVudGlsX2FmdGVyKC8iLyksYXR0cmlidXRlOmUudW50aWwoL1tcblxyXHQgPT5dfFwvPi8pLGVsZW1lbnRfbmFtZTplLnVudGlsKC9bXG5cclx0ID5cL10vKSxoYW5kbGViYXJzX2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyczp0LnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksaGFuZGxlYmFyc19vcGVuOnQudW50aWwoL1tcblxyXHQgfV0vKSxoYW5kbGViYXJzX3Jhd19jbG9zZTp0LnVudGlsKC99fS8pLGNvbW1lbnQ6dC5zdGFydGluZ193aXRoKC88IS0tLykudW50aWxfYWZ0ZXIoLy0tPi8pLGNkYXRhOnQuc3RhcnRpbmdfd2l0aCgvPCFcW0NEQVRBXFsvKS51bnRpbF9hZnRlcigvXV0+LyksY29uZGl0aW9uYWxfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoLzwhXFsvKS51bnRpbF9hZnRlcigvXT4vKSxwcm9jZXNzaW5nOnQuc3RhcnRpbmdfd2l0aCgvPFw/LykudW50aWxfYWZ0ZXIoL1w/Pi8pfSx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYodGhpcy5fX3BhdHRlcm5zLndvcmQ9dGhpcy5fX3BhdHRlcm5zLndvcmQuZXhjbHVkZSgiaGFuZGxlYmFycyIpKSx0aGlzLl91bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1udWxsLHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXImJihlPXRoaXMuX2lucHV0LmdldF9saXRlcmFsX3JlZ2V4cCh0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyKSx0aGlzLl9fcGF0dGVybnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI9dC5tYXRjaGluZyhlKS51bnRpbF9hZnRlcihlKSl9dmFyIHI9dCg5KS5Ub2tlbml6ZXIsaT10KDkpLlRPS0VOLGE9dCgxMykuRGlyZWN0aXZlcyxvPXQoMTQpLlRlbXBsYXRhYmxlUGF0dGVybixzPXQoMTIpLlBhdHRlcm4sbD17VEFHX09QRU46IlRLX1RBR19PUEVOIixUQUdfQ0xPU0U6IlRLX1RBR19DTE9TRSIsQVRUUklCVVRFOiJUS19BVFRSSUJVVEUiLEVRVUFMUzoiVEtfRVFVQUxTIixWQUxVRToiVEtfVkFMVUUiLENPTU1FTlQ6IlRLX0NPTU1FTlQiLFRFWFQ6IlRLX1RFWFQiLFVOS05PV046IlRLX1VOS05PV04iLFNUQVJUOmkuU1RBUlQsUkFXOmkuUkFXLEVPRjppLkVPRn0saD1uZXcgYSgvPFwhLS0vLC8tLT4vKTsobi5wcm90b3R5cGU9bmV3IHIpLl9pc19jb21tZW50PWZ1bmN0aW9uKGUpe3JldHVybiExfSxuLnByb3RvdHlwZS5faXNfb3BlbmluZz1mdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09bC5UQUdfT1BFTn0sbi5wcm90b3R5cGUuX2lzX2Nsb3Npbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50eXBlPT09bC5UQUdfQ0xPU0UmJnQmJigoIj4iPT09ZS50ZXh0fHwiLz4iPT09ZS50ZXh0KSYmIjwiPT09dC50ZXh0WzBdfHwifX0iPT09ZS50ZXh0JiYieyI9PT10LnRleHRbMF0mJiJ7Ij09PXQudGV4dFsxXSl9LG4ucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe3RoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiJ9LG4ucHJvdG90eXBlLl9nZXRfbmV4dF90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIG49dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09bj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOnRoaXMuX3JlYWRfb3Blbl9oYW5kbGViYXJzKG4sdCl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKG4sZSx0KXx8dGhpcy5fcmVhZF9jbG9zZShuLHQpfHx0aGlzLl9yZWFkX3Jhd19jb250ZW50KG4sZSx0KXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQobil8fHRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShuKXx8dGhpcy5fcmVhZF9wcm9jZXNzaW5nKG4pfHx0aGlzLl9yZWFkX29wZW4obix0KXx8dGhpcy5fY3JlYXRlX3Rva2VuKGwuVU5LTk9XTix0aGlzLl9pbnB1dC5uZXh0KCkpfSxuLnByb3RvdHlwZS5fcmVhZF9jb21tZW50X29yX2NkYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1udWxsLHI9bnVsbDtyZXR1cm4iPCI9PT1lJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygxKSYmKChuPXRoaXMuX19wYXR0ZXJucy5jb21tZW50LnJlYWQoKSk/KHI9aC5nZXRfZGlyZWN0aXZlcyhuKSkmJiJzdGFydCI9PT1yLmlnbm9yZSYmKG4rPWgucmVhZElnbm9yZWQodGhpcy5faW5wdXQpKTpuPXRoaXMuX19wYXR0ZXJucy5jZGF0YS5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPXIpKSx0fSxuLnByb3RvdHlwZS5fcmVhZF9wcm9jZXNzaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1udWxsO3JldHVybiI8IiE9PWV8fChuPSIhIiE9PShlPXRoaXMuX2lucHV0LnBlZWsoMSkpJiYiPyIhPT1lP246KG49dGhpcy5fX3BhdHRlcm5zLmNvbmRpdGlvbmFsX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLnByb2Nlc3NpbmcucmVhZCgpKSYmKCh0PXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpLmRpcmVjdGl2ZXM9bnVsbCksdH0sbi5wcm90b3R5cGUuX3JlYWRfb3Blbj1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHwiPCI9PT1lJiYobj10aGlzLl9pbnB1dC5uZXh0KCksIi8iPT09dGhpcy5faW5wdXQucGVlaygpJiYobis9dGhpcy5faW5wdXQubmV4dCgpKSxuKz10aGlzLl9fcGF0dGVybnMuZWxlbWVudF9uYW1lLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLlRBR19PUEVOLG4pKSxyfSxuLnByb3RvdHlwZS5fcmVhZF9vcGVuX2hhbmRsZWJhcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtyZXR1cm4gdHx8dGhpcy5fb3B0aW9ucy5pbmRlbnRfaGFuZGxlYmFycyYmInsiPT09ZSYmInsiPT09dGhpcy5faW5wdXQucGVlaygxKSYmKHI9IiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSx0aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKToobj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19vcGVuLnJlYWQoKSx0aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfT1BFTixuKSkpLHJ9LG4ucHJvdG90eXBlLl9yZWFkX2Nsb3NlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQmJigiPCI9PT10LnRleHRbMF0mJigiPiI9PT1lfHwiLyI9PT1lJiYiPiI9PT10aGlzLl9pbnB1dC5wZWVrKDEpKT8obj10aGlzLl9pbnB1dC5uZXh0KCksIi8iPT09ZSYmKG4rPXRoaXMuX2lucHV0Lm5leHQoKSkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsbikpOiJ7Ij09PXQudGV4dFswXSYmIn0iPT09ZSYmIn0iPT09dGhpcy5faW5wdXQucGVlaygxKSYmKHRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLl9pbnB1dC5uZXh0KCkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsIn19IikpKSxyfSxuLnByb3RvdHlwZS5fcmVhZF9hdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw7cmV0dXJuIG4mJiI8Ij09PW4udGV4dFswXSYmKCI9Ij09PWU/cj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTonIic9PT1lfHwiJyI9PT1lPyhuPXRoaXMuX2lucHV0Lm5leHQoKSxuKz0oJyInPT09ZT90aGlzLl9fcGF0dGVybnMuZG91YmxlX3F1b3RlOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUpLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLlZBTFVFLG4pKTooZT10aGlzLl9fcGF0dGVybnMuYXR0cmlidXRlLnJlYWQoKSkmJihyPXQudHlwZT09PWwuRVFVQUxTP3RoaXMuX2NyZWF0ZV90b2tlbihsLlZBTFVFLGUpOnRoaXMuX2NyZWF0ZV90b2tlbihsLkFUVFJJQlVURSxlKSkpLHJ9LG4ucHJvdG90eXBlLl9pc19jb250ZW50X3VuZm9ybWF0dGVkPWZ1bmN0aW9uKGUpe3JldHVybi0xPT09dGhpcy5fb3B0aW9ucy52b2lkX2VsZW1lbnRzLmluZGV4T2YoZSkmJigtMSE9PXRoaXMuX29wdGlvbnMuY29udGVudF91bmZvcm1hdHRlZC5pbmRleE9mKGUpfHwtMSE9PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWQuaW5kZXhPZihlKSl9LG4ucHJvdG90eXBlLl9yZWFkX3Jhd19jb250ZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIjtpZihuJiYieyI9PT1uLnRleHRbMF0pcj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19yYXdfY2xvc2UucmVhZCgpO2Vsc2UgaWYodC50eXBlPT09bC5UQUdfQ0xPU0UmJiI8Ij09PXQub3BlbmVkLnRleHRbMF0mJiIvIiE9PXQudGV4dFswXSl7bj10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09bnx8InN0eWxlIj09PW4pe3Q9dGhpcy5fcmVhZF9jb21tZW50X29yX2NkYXRhKGUpO2lmKHQpcmV0dXJuIHQudHlwZT1sLlRFWFQsdDtyPXRoaXMuX2lucHV0LnJlYWRVbnRpbChuZXcgUmVnRXhwKCI8LyIrbisiW1xcblxcclxcdCBdKj8+IiwiaWciKSl9ZWxzZSB0aGlzLl9pc19jb250ZW50X3VuZm9ybWF0dGVkKG4pJiYocj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK24rIltcXG5cXHJcXHQgXSo/PiIsImlnIikpKX1yZXR1cm4gcj90aGlzLl9jcmVhdGVfdG9rZW4obC5URVhULHIpOm51bGx9LG4ucHJvdG90eXBlLl9yZWFkX2NvbnRlbnRfd29yZD1mdW5jdGlvbihlKXt2YXIgdD0iIjtpZih0PSh0PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXImJmU9PT10aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyWzBdP3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCk6dCl8fHRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSlyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1uLGUuZXhwb3J0cy5UT0tFTj1sfV0sUmk9e30sSWk9ZnVuY3Rpb24gZSh0KXt2YXIgbj1SaVt0XTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmV4cG9ydHM7bj1SaVt0XT17ZXhwb3J0czp7fX07cmV0dXJuIE1pW3RdKG4sbi5leHBvcnRzLGUpLG4uZXhwb3J0c30oMTgpLEFpPUlpLE5pPXs0NzA6ZT0+e2Z1bmN0aW9uIHUoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeShlKSl9ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgbixyPSIiLGk9MCxhPS0xLG89MCxzPTA7czw9ZS5sZW5ndGg7KytzKXtpZihzPGUubGVuZ3RoKW49ZS5jaGFyQ29kZUF0KHMpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihhIT09cy0xJiYxIT09bylpZihhIT09cy0xJiYyPT09byl7aWYoci5sZW5ndGg8Mnx8MiE9PWl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSlpZigyPHIubGVuZ3RoKXt2YXIgbD1yLmxhc3RJbmRleE9mKCIvIik7aWYobCE9PXIubGVuZ3RoLTEpe2k9LTE9PT1sPyhyPSIiLDApOihyPXIuc2xpY2UoMCxsKSkubGVuZ3RoLTEtci5sYXN0SW5kZXhPZigiLyIpLGE9cyxvPTA7Y29udGludWV9fWVsc2UgaWYoMj09PXIubGVuZ3RofHwxPT09ci5sZW5ndGgpe3I9IiIsYT1zLG89aT0wO2NvbnRpbnVlfXQmJigwPHIubGVuZ3RoP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2UgMDxyLmxlbmd0aD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcD17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PSIiLG49ITEscj1hcmd1bWVudHMubGVuZ3RoLTE7LTE8PXImJiFuO3ItLSl7dmFyIGk9MDw9cj9hcmd1bWVudHNbcl06ZT12b2lkIDA9PT1lP3Byb2Nlc3MuY3dkKCk6ZTt1KGkpLDAhPT1pLmxlbmd0aCYmKHQ9aSsiLyIrdCxuPTQ3PT09aS5jaGFyQ29kZUF0KDApKX1yZXR1cm4gdD1hKHQsIW4pLG4/MDx0Lmxlbmd0aD8iLyIrdDoiLyI6MDx0Lmxlbmd0aD90OiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHUoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxuPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwPChlPTAhPT0oZT1hKGUsIXQpKS5sZW5ndGh8fHQ/ZToiLiIpLmxlbmd0aCYmbiYmKGUrPSIvIiksdD8iLyIrZTplfSxpc0Fic29sdXRlOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLDA8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luOmZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgZSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoOysrdCl7dmFyIG49YXJndW1lbnRzW3RdO3UobiksMDxuLmxlbmd0aCYmKHZvaWQgMD09PWU/ZT1uOmUrPSIvIituKX1yZXR1cm4gdm9pZCAwPT09ZT8iLiI6cC5ub3JtYWxpemUoZSl9LHJlbGF0aXZlOmZ1bmN0aW9uKGUsdCl7aWYodShlKSx1KHQpLGU9PT10KXJldHVybiIiO2lmKChlPXAucmVzb2x2ZShlKSk9PT0odD1wLnJlc29sdmUodCkpKXJldHVybiIiO2Zvcih2YXIgbj0xO248ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KG4pOysrbik7Zm9yKHZhciByPWUubGVuZ3RoLGk9ci1uLGE9MTthPHQubGVuZ3RoJiY0Nz09PXQuY2hhckNvZGVBdChhKTsrK2EpO2Zvcih2YXIgYz10Lmxlbmd0aC1hLG89aTxjP2k6YyxzPS0xLGw9MDtsPD1vOysrbCl7aWYobD09PW8pe2lmKG88Yyl7aWYoNDc9PT10LmNoYXJDb2RlQXQoYStsKSlyZXR1cm4gdC5zbGljZShhK2wrMSk7aWYoMD09PWwpcmV0dXJuIHQuc2xpY2UoYStsKX1lbHNlIG88aSYmKDQ3PT09ZS5jaGFyQ29kZUF0KG4rbCk/cz1sOjA9PT1sJiYocz0wKSk7YnJlYWt9dmFyIGQ9ZS5jaGFyQ29kZUF0KG4rbCk7aWYoZCE9PXQuY2hhckNvZGVBdChhK2wpKWJyZWFrOzQ3PT09ZCYmKHM9bCl9Zm9yKHZhciBoPSIiLGw9bitzKzE7bDw9cjsrK2wpbCE9PXImJjQ3IT09ZS5jaGFyQ29kZUF0KGwpfHwoMD09PWgubGVuZ3RoP2grPSIuLiI6aCs9Ii8uLiIpO3JldHVybiAwPGgubGVuZ3RoP2grdC5zbGljZShhK3MpOig0Nz09PXQuY2hhckNvZGVBdChhKz1zKSYmKythLHQuc2xpY2UoYSkpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodShlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxuPS0xLHI9ITAsaT1lLmxlbmd0aC0xOzE8PWk7LS1pKWlmKDQ3PT09ZS5jaGFyQ29kZUF0KGkpKXtpZighcil7bj1pO2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP3Q/Ii8iOiIuIjp0JiYxPT09bj8iLy8iOmUuc2xpY2UoMCxuKX0sYmFzZW5hbWU6ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignImV4dCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO3UoZSk7dmFyIG49MCxyPS0xLGk9ITA7aWYodm9pZCAwIT09dCYmMDx0Lmxlbmd0aCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0PT09ZSlyZXR1cm4iIjtmb3IodmFyIGE9dC5sZW5ndGgtMSxvPS0xLHM9ZS5sZW5ndGgtMTswPD1zOy0tcyl7dmFyIGw9ZS5jaGFyQ29kZUF0KHMpO2lmKDQ3PT09bCl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlLTE9PT1vJiYoaT0hMSxvPXMrMSksMDw9YSYmKGw9PT10LmNoYXJDb2RlQXQoYSk/LTE9PS0tYSYmKHI9cyk6KGE9LTEscj1vKSl9cmV0dXJuIG49PT1yP3I9bzotMT09PXImJihyPWUubGVuZ3RoKSxlLnNsaWNlKG4scil9Zm9yKHM9ZS5sZW5ndGgtMTswPD1zOy0tcylpZig0Nz09PWUuY2hhckNvZGVBdChzKSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlLTE9PT1yJiYoaT0hMSxyPXMrMSk7cmV0dXJuLTE9PT1yPyIiOmUuc2xpY2UobixyKX0sZXh0bmFtZTpmdW5jdGlvbihlKXt1KGUpO2Zvcih2YXIgdD0tMSxuPTAscj0tMSxpPSEwLGE9MCxvPWUubGVuZ3RoLTE7MDw9bzstLW8pe3ZhciBzPWUuY2hhckNvZGVBdChvKTtpZig0NyE9PXMpLTE9PT1yJiYoaT0hMSxyPW8rMSksNDY9PT1zPy0xPT09dD90PW86MSE9PWEmJihhPTEpOi0xIT09dCYmKGE9LTEpO2Vsc2UgaWYoIWkpe249bysxO2JyZWFrfX1yZXR1cm4tMT09PXR8fC0xPT09cnx8MD09PWF8fDE9PT1hJiZ0PT09ci0xJiZ0PT09bisxPyIiOmUuc2xpY2UodCxyKX0sZm9ybWF0OmZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJwYXRoT2JqZWN0IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO3JldHVybiB0PWUuZGlyfHxlLnJvb3Qsbj1lLmJhc2V8fChlLm5hbWV8fCIiKSsoZS5leHR8fCIiKSx0P3Q9PT1lLnJvb3Q/dCtuOnQrIi8iK246bjt2YXIgdCxufSxwYXJzZTpmdW5jdGlvbihlKXt1KGUpO3ZhciB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7Zm9yKHZhciBuLHI9NDc9PT1lLmNoYXJDb2RlQXQoMCksYz1yPyh0LnJvb3Q9Ii8iLDEpOjAsaT0tMSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxoPTA7Yzw9bDstLWwpaWYoNDchPT0obj1lLmNoYXJDb2RlQXQobCkpKS0xPT09byYmKHM9ITEsbz1sKzEpLDQ2PT09bj8tMT09PWk/aT1sOjEhPT1oJiYoaD0xKTotMSE9PWkmJihoPS0xKTtlbHNlIGlmKCFzKXthPWwrMTticmVha31yZXR1cm4tMT09PWl8fC0xPT09b3x8MD09PWh8fDE9PT1oJiZpPT09by0xJiZpPT09YSsxPy0xIT09byYmKHQuYmFzZT10Lm5hbWU9MD09PWEmJnI/ZS5zbGljZSgxLG8pOmUuc2xpY2UoYSxvKSk6KDA9PT1hJiZyPyh0Lm5hbWU9ZS5zbGljZSgxLGkpLHQuYmFzZT1lLnNsaWNlKDEsbykpOih0Lm5hbWU9ZS5zbGljZShhLGkpLHQuYmFzZT1lLnNsaWNlKGEsbykpLHQuZXh0PWUuc2xpY2UoaSxvKSksMDxhP3QuZGlyPWUuc2xpY2UoMCxhLTEpOnImJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O3AucG9zaXg9cCxlLmV4cG9ydHM9cH0sNDQ3OihjLGUsdCk9Pnt2YXIgcjt0LnIoZSksdC5kKGUse1VSSTooKT0+ZyxVdGlsczooKT0+bH0pLCJvYmplY3QiPT10eXBlb2YgcHJvY2Vzcz9yPSJ3aW4zMiI9PT1wcm9jZXNzLnBsYXRmb3JtOiJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiYocj0wPD1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbmRvd3MiKSk7YT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9O3ZhciBhLGQ9L15cd1tcd1xkKy4tXSokLyx1PS9eXC8vLHA9L15cL1wvLztmdW5jdGlvbiBtKGUsdCl7aWYoIWUuc2NoZW1lJiZ0KXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogU2NoZW1lIGlzIG1pc3Npbmc6IHtzY2hlbWU6ICIiLCBhdXRob3JpdHk6ICInLmNvbmNhdChlLmF1dGhvcml0eSwnIiwgcGF0aDogIicpLmNvbmNhdChlLnBhdGgsJyIsIHF1ZXJ5OiAiJykuY29uY2F0KGUucXVlcnksJyIsIGZyYWdtZW50OiAiJykuY29uY2F0KGUuZnJhZ21lbnQsJyJ9JykpO2lmKGUuc2NoZW1lJiYhZC50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighdS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihwLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX12YXIgZj0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxnPShuLmlzVXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygbnx8ISFlJiYic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMsITEpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLndpdGg9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIHQ9ZS5zY2hlbWUsbj1lLmF1dGhvcml0eSxyPWUucGF0aCxpPWUucXVlcnksZT1lLmZyYWdtZW50O3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PSIiKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPSIiKSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj0iIiksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPSIiKSx2b2lkIDA9PT1lP2U9dGhpcy5mcmFnbWVudDpudWxsPT09ZSYmKGU9IiIpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmZT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgbyh0LG4scixpLGUpfSxuLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO2U9Zi5leGVjKGUpO3JldHVybiBlP25ldyBvKGVbMl18fCIiLGkoZVs0XXx8IiIpLGkoZVs1XXx8IiIpLGkoZVs3XXx8IiIpLGkoZVs5XXx8IiIpLHQpOm5ldyBvKCIiLCIiLCIiLCIiLCIiKX0sbi5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0LG49IiI7cmV0dXJuIi8iPT09KGU9cj9lLnJlcGxhY2UoL1xcL2csIi8iKTplKVswXSYmIi8iPT09ZVsxXSYmKGU9LTE9PT0odD1lLmluZGV4T2YoIi8iLDIpKT8obj1lLnN1YnN0cmluZygyKSwiLyIpOihuPWUuc3Vic3RyaW5nKDIsdCksZS5zdWJzdHJpbmcodCl8fCIvIikpLG5ldyBvKCJmaWxlIixuLGUsIiIsIiIpfSxuLmZyb209ZnVuY3Rpb24oZSl7ZT1uZXcgbyhlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gbShlLCEwKSxlfSxuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gcyh0aGlzLGU9dm9pZCAwPT09ZT8hMTplKX0sbi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4ucmV2aXZlPWZ1bmN0aW9uKGUpe2lmKGUpe2lmKGUgaW5zdGFuY2VvZiBuKXJldHVybiBlO3ZhciB0PW5ldyBvKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09Yj9lLmZzUGF0aDpudWxsLHR9cmV0dXJuIGV9LG4pLGI9cj8xOnZvaWQgMCxvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2Zvcm1hdHRlZD1udWxsLGUuX2ZzUGF0aD1udWxsLGV9dmFyIG49ZSxyPXQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHImJm51bGwhPT1yKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcocikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9bn1yZXR1cm4gYShuLHIpLG4ucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KGkucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9eSh0aGlzLCExKSksdGhpcy5fZnNQYXRofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybihlPXZvaWQgMD09PWU/ITE6ZSk/cyh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPXModGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWIpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSxlfShnKSxfPSgoZT17fSlbNThdPSIlM0EiLGVbNDddPSIlMkYiLGVbNjNdPSIlM0YiLGVbMzVdPSIlMjMiLGVbOTFdPSIlNUIiLGVbOTNdPSIlNUQiLGVbNjRdPSIlNDAiLGVbMzNdPSIlMjEiLGVbMzZdPSIlMjQiLGVbMzhdPSIlMjYiLGVbMzldPSIlMjciLGVbNDBdPSIlMjgiLGVbNDFdPSIlMjkiLGVbNDJdPSIlMkEiLGVbNDNdPSIlMkIiLGVbNDRdPSIlMkMiLGVbNTldPSIlM0IiLGVbNjFdPSIlM0QiLGVbMzJdPSIlMjAiLGUpO2Z1bmN0aW9uIG4oZSx0LG4scixpLGEpe3ZvaWQgMD09PWEmJihhPSExKSwib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHwiIix0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8IiIsdGhpcy5wYXRoPWUucGF0aHx8IiIsdGhpcy5xdWVyeT1lLnF1ZXJ5fHwiIix0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fCIiKToodGhpcy5zY2hlbWU9ZXx8YT9lOiJmaWxlIix0aGlzLmF1dGhvcml0eT10fHwiIix0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/Ii8iIT09dFswXSYmKHQ9Ii8iK3QpOnQ9Ii8ifXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHwiIiksdGhpcy5xdWVyeT1yfHwiIix0aGlzLmZyYWdtZW50PWl8fCIiLG0odGhpcyxhKSl9ZnVuY3Rpb24gdyhlLHQpe2Zvcih2YXIgbj12b2lkIDAscj0tMSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWUuY2hhckNvZGVBdChpKTs5Nzw9YSYmYTw9MTIyfHw2NTw9YSYmYTw9OTB8fDQ4PD1hJiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8dCYmNDc9PT1hPygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKSk6KHZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpLHZvaWQgMCE9PShhPV9bYV0pPygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksbis9YSk6LTE9PT1yJiYocj1pKSl9cmV0dXJuLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQ9dm9pZCAwLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZS5jaGFyQ29kZUF0KG4pOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz1fW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIHkoZSx0KXt0PWUuYXV0aG9yaXR5JiYxPGUucGF0aC5sZW5ndGgmJiJmaWxlIj09PWUuc2NoZW1lPyIvLyIuY29uY2F0KGUuYXV0aG9yaXR5KS5jb25jYXQoZS5wYXRoKTo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoO3JldHVybiB0PXI/dC5yZXBsYWNlKC9cLy9nLCJcXCIpOnR9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuLHIsaT10P3Y6dyxhPSIiLG89ZS5zY2hlbWUscz1lLmF1dGhvcml0eSxsPWUucGF0aCxoPWUucXVlcnksZT1lLmZyYWdtZW50O3JldHVybiBvJiYoYT1hK28rIjoiKSwhcyYmImZpbGUiIT09b3x8KGErPSIvLyIpLHMmJigtMSE9PShvPXMuaW5kZXhPZigiQCIpKSYmKG49cy5zdWJzdHIoMCxvKSxzPXMuc3Vic3RyKG8rMSksLTE9PT0obz1uLmluZGV4T2YoIjoiKSk/YSs9aShuLCExKTphPShhPWEraShuLnN1YnN0cigwLG8pLCExKSsiOiIpK2kobi5zdWJzdHIobysxKSwhMSksYSs9IkAiKSwtMT09PShvPShzPXMudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9hKz1pKHMsITEpOmE9KGErPWkocy5zdWJzdHIoMCxvKSwhMSkpK3Muc3Vic3RyKG8pKSxsJiYoMzw9bC5sZW5ndGgmJjQ3PT09bC5jaGFyQ29kZUF0KDApJiY1OD09PWwuY2hhckNvZGVBdCgyKT82NTw9KHI9bC5jaGFyQ29kZUF0KDEpKSYmcjw9OTAmJihsPSIvIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShyKzMyKSwiOiIpLmNvbmNhdChsLnN1YnN0cigzKSkpOjI8PWwubGVuZ3RoJiY1OD09PWwuY2hhckNvZGVBdCgxKSYmNjU8PShyPWwuY2hhckNvZGVBdCgwKSkmJnI8PTkwJiYobD0iIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShyKzMyKSwiOiIpLmNvbmNhdChsLnN1YnN0cigyKSkpLGErPWkobCwhMCkpLGgmJihhPShhKz0iPyIpK2koaCwhMSkpLGE9ZT8oYSs9IiMiKSsodD9lOncoZSwhMSkpOmF9dmFyIFQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5tYXRjaChUKT9lLnJlcGxhY2UoVCxmdW5jdGlvbiB0KG4pe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG4pfWNhdGNoKGUpe3JldHVybiAzPG4ubGVuZ3RoP24uc3Vic3RyKDAsMykrdChuLnN1YnN0cigzKSk6bn19KTplfWZ1bmN0aW9uIGsoZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKSFyJiZpIGluIHR8fCgocj1yfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsaSkpW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9dmFyIGwsZT10KDQ3MCksaD1lLnBvc2l4fHxlOyh0PWw9bHx8e30pLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6aC5qb2luLmFwcGx5KGgsayhbZS5wYXRoXSx0LCExKSl9KX0sdC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOmgucmVzb2x2ZS5hcHBseShoLGsoW3JdLHQsITEpKX0pfSx0LmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9aC5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSx0LmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBoLmJhc2VuYW1lKGUucGF0aCl9LHQuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gaC5leHRuYW1lKGUucGF0aCl9fX0sVWk9e30scWkuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KXFpLm8odCxuKSYmIXFpLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxxaS5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxxaS5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgRmk9cWkoNDQ3KVsiVVJJIl07ZnVuY3Rpb24gVmkoZSl7dmFyIHQ9ZVswXTtyZXR1cm4gZT10IT09ZVtlLmxlbmd0aC0xXXx8IiciIT09dCYmJyInIT09dD9lOmUuc3Vic3RyKDEsZS5sZW5ndGgtMil9ZnVuY3Rpb24gQmkoZSx0LG4scixpLGEpe3ZhciBvPVZpKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7by5sZW5ndGg8bi5sZW5ndGgmJihyKyssaS0tKTt2YXIgcyxsPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KFhyKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYobCYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBGaS5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGwpKXJldHVybntyYW5nZTp2bi5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0Omx9fX1mdW5jdGlvbiBLaShlLHQpe2Zvcih2YXIgbixyPVtdLGk9RnIoZS5nZXRUZXh0KCksMCksYz1pLnNjYW4oKSxhPXZvaWQgMCxvPSExLHM9dm9pZCAwLGQ9e307YyE9PU0uRU9TOyl7c3dpdGNoKGMpe2Nhc2UgTS5TdGFydFRhZzpzfHwobz0iYmFzZSI9PT1pLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCkpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVOYW1lOmE9aS5nZXRUb2tlblRleHQoKS50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZToic3JjIj09PWF8fCJocmVmIj09PWE/KG49aS5nZXRUb2tlblRleHQoKSxvfHwoaD1CaShlLHQsbixpLmdldFRva2VuT2Zmc2V0KCksaS5nZXRUb2tlbkVuZCgpLHMpKSYmci5wdXNoKGgpLG8mJnZvaWQgMD09PXMmJihzPVZpKG4pKSYmdCYmKHM9dC5yZXNvbHZlUmVmZXJlbmNlKHMsZS51cmkpKSxvPSExLGE9dm9pZCAwKToiaWQiPT09YSYmKGRbVmkoaS5nZXRUb2tlblRleHQoKSldPWkuZ2V0VG9rZW5PZmZzZXQoKSl9Yz1pLnNjYW4oKX1mb3IodmFyIHU9MCxwPXI7dTxwLmxlbmd0aDt1Kyspe3ZhciBsLGg9cFt1XSxtPWUudXJpKyIjIjtoLnRhcmdldCYmWHIoaC50YXJnZXQsbSkmJih2b2lkIDAhPT0obD1kW2gudGFyZ2V0LnN1YnN0cihtLmxlbmd0aCldKSYmKGw9ZS5wb3NpdGlvbkF0KGwpLGgudGFyZ2V0PW0rKGwubGluZSsxKSsiLCIrKGwuY2hhcmFjdGVyKzEpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gamkoZSx0LG4pe3ZhciByPWUub2Zmc2V0QXQodCksbj1uLmZpbmROb2RlQXQocik7aWYoIW4udGFnKXJldHVybltdO3ZhciByPVtdLGk9SmkoTS5TdGFydFRhZyxlLG4uc3RhcnQpLGU9Im51bWJlciI9PXR5cGVvZiBuLmVuZFRhZ1N0YXJ0JiZKaShNLkVuZFRhZyxlLG4uZW5kVGFnU3RhcnQpO3JldHVybihpJiYkaShpLHQpfHxlJiYkaShlLHQpKSYmKGkmJnIucHVzaCh7a2luZDppci5SZWFkLHJhbmdlOml9KSxlJiZyLnB1c2goe2tpbmQ6aXIuUmVhZCxyYW5nZTplfSkpLHJ9ZnVuY3Rpb24gR2koZSx0KXtyZXR1cm4gZS5saW5lPHQubGluZXx8ZS5saW5lPT09dC5saW5lJiZlLmNoYXJhY3Rlcjw9dC5jaGFyYWN0ZXJ9ZnVuY3Rpb24gJGkoZSx0KXtyZXR1cm4gR2koZS5zdGFydCx0KSYmR2kodCxlLmVuZCl9ZnVuY3Rpb24gSmkoZSx0LG4pe2Zvcih2YXIgcj1Gcih0LmdldFRleHQoKSxuKSxpPXIuc2NhbigpO2khPT1NLkVPUyYmaSE9PWU7KWk9ci5zY2FuKCk7cmV0dXJuIGkhPT1NLkVPUz97c3RhcnQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOnQucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWZ1bmN0aW9uIFhpKHQsZSl7dmFyIG49W107cmV0dXJuIGUucm9vdHMuZm9yRWFjaChmdW5jdGlvbihlKXshZnVuY3Rpb24gdChuLGUscixpKXt2YXIgYT1ZaShlKTt2YXIgbz15bi5jcmVhdGUobi51cmksdm4uY3JlYXRlKG4ucG9zaXRpb25BdChlLnN0YXJ0KSxuLnBvc2l0aW9uQXQoZS5lbmQpKSk7bz17bmFtZTphLGxvY2F0aW9uOm8sY29udGFpbmVyTmFtZTpyLGtpbmQ6c3IuRmllbGR9O2kucHVzaChvKTtlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oZSl7dChuLGUsYSxpKX0pfSh0LGUsIiIsbil9KSxufWZ1bmN0aW9uIFlpKGUpe3ZhciB0LG49ZS50YWc7cmV0dXJuIGUuYXR0cmlidXRlcyYmKHQ9ZS5hdHRyaWJ1dGVzLmlkLGU9ZS5hdHRyaWJ1dGVzLmNsYXNzLHQmJihuKz0iIyIrdC5yZXBsYWNlKC9bXCJcJ10vZywiIikpLGUmJihuKz1lLnJlcGxhY2UoL1tcIlwnXS9nLCIiKS5zcGxpdCgvXHMrLykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSkuam9pbigiIikpKSxufHwiPyJ9ZnVuY3Rpb24gUWkoZSx0LG4scil7dmFyIHQ9ZS5vZmZzZXRBdCh0KSxyPXIuZmluZE5vZGVBdCh0KTtpZighci50YWcpcmV0dXJuIG51bGw7aWYoIWZ1bmN0aW9uKGUsdCxuKXtpZihlLmVuZFRhZ1N0YXJ0JiZlLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1lLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK24ubGVuZ3RoKXJldHVybiEwO3JldHVybiBlLnN0YXJ0KyI8Ii5sZW5ndGg8PXQmJnQ8PWUuc3RhcnQrIjwiLmxlbmd0aCtuLmxlbmd0aH0ocix0LHIudGFnKSlyZXR1cm4gbnVsbDt2YXIgdD1bXSxpPXtzdGFydDplLnBvc2l0aW9uQXQoci5zdGFydCsiPCIubGVuZ3RoKSxlbmQ6ZS5wb3NpdGlvbkF0KHIuc3RhcnQrIjwiLmxlbmd0aCtyLnRhZy5sZW5ndGgpfTtyZXR1cm4gdC5wdXNoKHtyYW5nZTppLG5ld1RleHQ6bn0pLHIuZW5kVGFnU3RhcnQmJihpPXtzdGFydDplLnBvc2l0aW9uQXQoci5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCksZW5kOmUucG9zaXRpb25BdChyLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK3IudGFnLmxlbmd0aCl9LHQucHVzaCh7cmFuZ2U6aSxuZXdUZXh0Om59KSksKHI9e30pW2UudXJpLnRvU3RyaW5nKCldPXQse2NoYW5nZXM6cn19ZnVuY3Rpb24gWmkoZSx0LG4pe3ZhciByLHQ9ZS5vZmZzZXRBdCh0KSxuPW4uZmluZE5vZGVBdCh0KTtyZXR1cm4gbi50YWcmJm4uZW5kVGFnU3RhcnQ/bi5zdGFydCsiPCIubGVuZ3RoPD10JiZ0PD1uLnN0YXJ0KyI8Ii5sZW5ndGgrbi50YWcubGVuZ3RoPyhyPXQtIjwiLmxlbmd0aC1uLnN0YXJ0K24uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgsZS5wb3NpdGlvbkF0KHIpKTpuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1uLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK24udGFnLmxlbmd0aD8ocj10LSI8LyIubGVuZ3RoLW4uZW5kVGFnU3RhcnQrbi5zdGFydCsiPCIubGVuZ3RoLGUucG9zaXRpb25BdChyKSk6bnVsbDpudWxsfWZ1bmN0aW9uIGVhKGUsdCxuKXt2YXIgdD1lLm9mZnNldEF0KHQpLG49bi5maW5kTm9kZUF0KHQpLHI9bi50YWc/bi50YWcubGVuZ3RoOjA7cmV0dXJuIG4uZW5kVGFnU3RhcnQmJihuLnN0YXJ0KyI8Ii5sZW5ndGg8PXQmJnQ8PW4uc3RhcnQrIjwiLmxlbmd0aCtyfHxuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1uLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK3IpP1t2bi5jcmVhdGUoZS5wb3NpdGlvbkF0KG4uc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KG4uc3RhcnQrIjwiLmxlbmd0aCtyKSksdm4uY3JlYXRlKGUucG9zaXRpb25BdChuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQobi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtyKSldOm51bGx9ZnVuY3Rpb24gdGEoZSxjKXt2YXIgdD1GcihlLmdldFRleHQoKSksZD10LnNjYW4oKSx1PVtdLG49W10scD1udWxsLG09LTE7ZnVuY3Rpb24gZihlKXt1LnB1c2goZSksbT1lLnN0YXJ0TGluZX1mb3IoO2QhPT1NLkVPUzspe3N3aXRjaChkKXtjYXNlIE0uU3RhcnRUYWc6dmFyIGc9dC5nZXRUb2tlblRleHQoKSxyPWUucG9zaXRpb25BdCh0LmdldFRva2VuT2Zmc2V0KCkpLmxpbmU7bi5wdXNoKHtzdGFydExpbmU6cix0YWdOYW1lOmd9KSxwPWc7YnJlYWs7Y2FzZSBNLkVuZFRhZzpwPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnQ2xvc2U6aWYoIXB8fCFLcihwKSlicmVhaztjYXNlIE0uRW5kVGFnQ2xvc2U6Y2FzZSBNLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgaT1uLmxlbmd0aC0xOzA8PWkmJm5baV0udGFnTmFtZSE9PXA7KWktLTswPD1pJiYoXz1uW2ldLG4ubGVuZ3RoPWksZz1lLnBvc2l0aW9uQXQodC5nZXRUb2tlbk9mZnNldCgpKS5saW5lLChyPV8uc3RhcnRMaW5lKTwoYT1nLTEpJiZtIT09ciYmZih7c3RhcnRMaW5lOnIsZW5kTGluZTphfSkpO2JyZWFrO2Nhc2UgTS5Db21tZW50OnZhciByPWUucG9zaXRpb25BdCh0LmdldFRva2VuT2Zmc2V0KCkpLmxpbmUsYj10LmdldFRva2VuVGV4dCgpLm1hdGNoKC9eXHMqIyhyZWdpb25cYil8KGVuZHJlZ2lvblxiKS8pO2lmKGIpaWYoYlsxXSluLnB1c2goe3N0YXJ0TGluZTpyLHRhZ05hbWU6IiJ9KTtlbHNle2Zvcih2YXIgXyxhLGk9bi5sZW5ndGgtMTswPD1pJiZuW2ldLnRhZ05hbWUubGVuZ3RoOylpLS07MDw9aSYmKF89bltpXSxuLmxlbmd0aD1pLGE9ciwocj1fLnN0YXJ0TGluZSk8YSYmbSE9PXImJmYoe3N0YXJ0TGluZTpyLGVuZExpbmU6YSxraW5kOlRuLlJlZ2lvbn0pKX1lbHNlIHI8KGE9ZS5wb3NpdGlvbkF0KHQuZ2V0VG9rZW5PZmZzZXQoKSt0LmdldFRva2VuTGVuZ3RoKCkpLmxpbmUpJiZmKHtzdGFydExpbmU6cixlbmRMaW5lOmEsa2luZDpUbi5Db21tZW50fSl9ZD10LnNjYW4oKX1jPWMmJmMucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtpZih1Lmxlbmd0aD5jKXt2YXIgbz11LHc9YztvPW8uc29ydChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiBuPTA9PT1uP2UuZW5kTGluZS10LmVuZExpbmU6bn0pO2Zvcih2YXIgcz12b2lkIDAsdj1bXSx5PVtdLFQ9W10saz1mdW5jdGlvbihlLHQpeyh5W2VdPXQpPDMwJiYoVFt0XT0oVFt0XXx8MCkrMSl9LGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGg9b1tsXTtpZihzKXtpZihoLnN0YXJ0TGluZT5zLnN0YXJ0TGluZSlpZihoLmVuZExpbmU8PXMuZW5kTGluZSl2LnB1c2gocykscz1oLGsobCx2Lmxlbmd0aCk7ZWxzZSBpZihoLnN0YXJ0TGluZT5zLmVuZExpbmUpe2Zvcig7KHM9di5wb3AoKSkmJmguc3RhcnRMaW5lPnMuZW5kTGluZTspO3MmJnYucHVzaChzKSxzPWgsayhsLHYubGVuZ3RoKX19ZWxzZSBzPWgsayhsLDApfWZvcih2YXIgUz0wLEM9MCxsPTA7bDxULmxlbmd0aDtsKyspe3ZhciB4PVRbbF07aWYoeCl7aWYodzx4K1Mpe0M9bDticmVha31TKz14fX1mb3IodmFyIEw9W10sbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgRT15W2xdOyJudW1iZXIiPT10eXBlb2YgRSYmKEU8Q3x8RT09PUMmJlMrKzx3KSYmTC5wdXNoKG9bbF0pfXJldHVybiBMfXJldHVybiB1fWZ1bmN0aW9uIG5hKG8sZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1mdW5jdGlvbihlLHQpe3ZhciBuPSRyKGUuZ2V0VGV4dCgpKSx0PWUub2Zmc2V0QXQodCksbj1uLmZpbmROb2RlQXQodCkscj1mdW5jdGlvbihlKXt2YXIgdD1lLG49W107Zm9yKDt0LnBhcmVudDspKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19KSh0PXQucGFyZW50KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBuLnB1c2goZSl9KTtyZXR1cm4gbn0obik7aWYobi5zdGFydFRhZ0VuZCYmIW4uZW5kVGFnU3RhcnQpe2lmKG4uc3RhcnRUYWdFbmQhPT1uLmVuZClyZXR1cm5bW24uc3RhcnQsbi5lbmRdXTt2YXIgaT12bi5jcmVhdGUoZS5wb3NpdGlvbkF0KG4uc3RhcnRUYWdFbmQtMiksZS5wb3NpdGlvbkF0KG4uc3RhcnRUYWdFbmQpKTtyZXR1cm4iLz4iPT09ZS5nZXRUZXh0KGkpP3IudW5zaGlmdChbbi5zdGFydCsxLG4uc3RhcnRUYWdFbmQtMl0pOnIudW5zaGlmdChbbi5zdGFydCsxLG4uc3RhcnRUYWdFbmQtMV0pLHI9KGk9cmEoZSxuLHQpKS5jb25jYXQocil9aWYoIW4uc3RhcnRUYWdFbmR8fCFuLmVuZFRhZ1N0YXJ0KXJldHVybiByO3JldHVybiByLnVuc2hpZnQoW24uc3RhcnQsbi5lbmRdKSxuLnN0YXJ0PHQmJnQ8bi5zdGFydFRhZ0VuZD8oci51bnNoaWZ0KFtuLnN0YXJ0KzEsbi5zdGFydFRhZ0VuZC0xXSksaT1yYShlLG4sdCkscj1pLmNvbmNhdChyKSk6KG4uc3RhcnRUYWdFbmQ8PXQmJnQ8PW4uZW5kVGFnU3RhcnQ/ci51bnNoaWZ0KFtuLnN0YXJ0VGFnRW5kLG4uZW5kVGFnU3RhcnRdKTp0Pj1uLmVuZFRhZ1N0YXJ0KzImJnIudW5zaGlmdChbbi5lbmRUYWdTdGFydCsyLG4uZW5kLTFdKSxyKX0obyxlKSxuPXZvaWQgMCxyPXZvaWQgMCxpPXQubGVuZ3RoLTE7MDw9aTtpLS0pe3ZhciBhPXRbaV07biYmYVswXT09PW5bMF0mJmFbMV09PT1uWzFdfHwocj1jci5jcmVhdGUodm4uY3JlYXRlKG8ucG9zaXRpb25BdCh0W2ldWzBdKSxvLnBvc2l0aW9uQXQodFtpXVsxXSkpLHIpKSxuPWF9cmV0dXJuIHI9cnx8Y3IuY3JlYXRlKHZuLmNyZWF0ZShlLGUpKX0pfWZ1bmN0aW9uIHJhKGUsdCxjKXtmb3IodmFyIGQ9dm4uY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxlPWUuZ2V0VGV4dChkKSxuPWMtdC5zdGFydCxyPUZyKGUpLGk9ci5zY2FuKCksYT10LnN0YXJ0LG89W10scz0hMSxsPS0xO2khPT1NLkVPUzspe3N3aXRjaChpKXtjYXNlIE0uQXR0cmlidXRlTmFtZTppZihuPHIuZ2V0VG9rZW5PZmZzZXQoKSl7cz0hMTticmVha31uPD1yLmdldFRva2VuRW5kKCkmJm8udW5zaGlmdChbci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKV0pLHM9ITAsbD1yLmdldFRva2VuT2Zmc2V0KCk7YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZVZhbHVlOmlmKCFzKWJyZWFrO3ZhciBoPXIuZ2V0VG9rZW5UZXh0KCk7aWYobjxyLmdldFRva2VuT2Zmc2V0KCkpe28ucHVzaChbbCxyLmdldFRva2VuRW5kKCldKTticmVha31uPj1yLmdldFRva2VuT2Zmc2V0KCkmJm48PXIuZ2V0VG9rZW5FbmQoKSYmKG8udW5zaGlmdChbci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT1oWzBdJiYnIic9PT1oW2gubGVuZ3RoLTFdfHwiJyI9PT1oWzBdJiYiJyI9PT1oW2gubGVuZ3RoLTFdKSYmbj49ci5nZXRUb2tlbk9mZnNldCgpKzEmJm48PXIuZ2V0VG9rZW5FbmQoKS0xJiZvLnVuc2hpZnQoW3IuZ2V0VG9rZW5PZmZzZXQoKSsxLHIuZ2V0VG9rZW5FbmQoKS0xXSksby5wdXNoKFtsLHIuZ2V0VG9rZW5FbmQoKV0pKX1pPXIuc2NhbigpfXJldHVybiBvLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bZVswXSthLGVbMV0rYV19KX12YXIgaWE9e3ZlcnNpb246MS4xLHRhZ3M6W3tuYW1lOiJodG1sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaHRtbCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJvb3Qgb2YgYW4gSFRNTCBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibWFuaWZlc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJJIG9mIGEgcmVzb3VyY2UgbWFuaWZlc3QgaW5kaWNhdGluZyByZXNvdXJjZXMgdGhhdCBzaG91bGQgYmUgY2FjaGVkIGxvY2FsbHkuIFNlZSBbVXNpbmcgdGhlIGFwcGxpY2F0aW9uIGNhY2hlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML1VzaW5nX3RoZV9hcHBsaWNhdGlvbl9jYWNoZSkgZm9yIGRldGFpbHMuIn19LHtuYW1lOiJ2ZXJzaW9uIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBIVE1MIFtEb2N1bWVudCBUeXBlIERlZmluaXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvRFREICJEb2N1bWVudCBUeXBlIERlZmluaXRpb246IEluIEhUTUwsIHRoZSBkb2N0eXBlIGlzIHRoZSByZXF1aXJlZCAiPCFET0NUWVBFIGh0bWw+IiBwcmVhbWJsZSBmb3VuZCBhdCB0aGUgdG9wIG9mIGFsbCBkb2N1bWVudHMuIEl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gcHJldmVudCBhIGJyb3dzZXIgZnJvbSBzd2l0Y2hpbmcgaW50byBzby1jYWxsZWQg4oCccXVpcmtzIG1vZGXigJ0gd2hlbiByZW5kZXJpbmcgYSBkb2N1bWVudDsgdGhhdCBpcywgdGhlICI8IURPQ1RZUEUgaHRtbD4iIGRvY3R5cGUgZW5zdXJlcyB0aGF0IHRoZSBicm93c2VyIG1ha2VzIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCBhdCBmb2xsb3dpbmcgdGhlIHJlbGV2YW50IHNwZWNpZmljYXRpb25zLCByYXRoZXIgdGhhbiB1c2luZyBhIGRpZmZlcmVudCByZW5kZXJpbmcgbW9kZSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHNvbWUgc3BlY2lmaWNhdGlvbnMuIikgdGhhdCBnb3Zlcm5zIHRoZSBjdXJyZW50IGRvY3VtZW50LiBUaGlzIGF0dHJpYnV0ZSBpcyBub3QgbmVlZGVkLCBiZWNhdXNlIGl0IGlzIHJlZHVuZGFudCB3aXRoIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIHRoZSBkb2N1bWVudCB0eXBlIGRlY2xhcmF0aW9uLid9LHtuYW1lOiJ4bWxucyIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgWE1MIE5hbWVzcGFjZSBvZiB0aGUgZG9jdW1lbnQuIERlZmF1bHQgdmFsdWUgaXMgYCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sImAuIFRoaXMgaXMgcmVxdWlyZWQgaW4gZG9jdW1lbnRzIHBhcnNlZCB3aXRoIFhNTCBwYXJzZXJzLCBhbmQgb3B0aW9uYWwgaW4gdGV4dC9odG1sIGRvY3VtZW50cy4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2h0bWwifV19LHtuYW1lOiJoZWFkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVhZCBlbGVtZW50IHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIG1ldGFkYXRhIGZvciB0aGUgRG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InByb2ZpbGUiLGRlc2NyaXB0aW9uOiJUaGUgVVJJcyBvZiBvbmUgb3IgbW9yZSBtZXRhZGF0YSBwcm9maWxlcywgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZCJ9XX0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGl0bGUgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkb2N1bWVudCdzIHRpdGxlIG9yIG5hbWUuIEF1dGhvcnMgc2hvdWxkIHVzZSB0aXRsZXMgdGhhdCBpZGVudGlmeSB0aGVpciBkb2N1bWVudHMgZXZlbiB3aGVuIHRoZXkgYXJlIHVzZWQgb3V0IG9mIGNvbnRleHQsIGZvciBleGFtcGxlIGluIGEgdXNlcidzIGhpc3Rvcnkgb3IgYm9va21hcmtzLCBvciBpbiBzZWFyY2ggcmVzdWx0cy4gVGhlIGRvY3VtZW50J3MgdGl0bGUgaXMgb2Z0ZW4gZGlmZmVyZW50IGZyb20gaXRzIGZpcnN0IGhlYWRpbmcsIHNpbmNlIHRoZSBmaXJzdCBoZWFkaW5nIGRvZXMgbm90IGhhdmUgdG8gc3RhbmQgYWxvbmUgd2hlbiB0YWtlbiBvdXQgb2YgY29udGV4dC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSJ9XX0se25hbWU6ImJhc2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSB0aGUgZG9jdW1lbnQgYmFzZSBVUkwgZm9yIHRoZSBwdXJwb3NlcyBvZiByZXNvbHZpbmcgcmVsYXRpdmUgVVJMcywgYW5kIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IGJyb3dzaW5nIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlcyBvZiBmb2xsb3dpbmcgaHlwZXJsaW5rcy4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGFueSBjb250ZW50IGJleW9uZCB0aGlzIGluZm9ybWF0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmFzZSBVUkwgdG8gYmUgdXNlZCB0aHJvdWdob3V0IHRoZSBkb2N1bWVudCBmb3IgcmVsYXRpdmUgVVJMIGFkZHJlc3Nlcy4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4gQWJzb2x1dGUgYW5kIHJlbGF0aXZlIFVSTHMgYXJlIGFsbG93ZWQuIn19LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgdGhlIGRlZmF1bHQgbG9jYXRpb24gdG8gZGlzcGxheSB0aGUgcmVzdWx0IHdoZW4gaHlwZXJsaW5rcyBvciBmb3JtcyBjYXVzZSBuYXZpZ2F0aW9uLCBmb3IgZWxlbWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhbiBleHBsaWNpdCB0YXJnZXQgcmVmZXJlbmNlLiBJdCBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGU6IHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzdWx0IGludG8gYSBuZXcgdW5uYW1lZCBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhpcyBlbGVtZW50IG11c3QgY29tZSBiZWZvcmUgYW55IG90aGVyIGVsZW1lbnRzIHdpdGggYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgYXJlIFVSTHMuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmFzZSJ9XX0se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsaW5rIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gbGluayB0aGVpciBkb2N1bWVudCB0byBvdGhlciByZXNvdXJjZXMuIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgW1VSTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9VUkwgIlVSTDogVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIChVUkwpIGlzIGEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB3aGVyZSBhIHJlc291cmNlIGNhbiBiZSBmb3VuZCBvbiB0aGUgSW50ZXJuZXQuIikgb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gQSBVUkwgY2FuIGJlIGFic29sdXRlIG9yIHJlbGF0aXZlLid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIG11c3QgYmUgdXNlZCB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZS4gW0NPUlMtZW5hYmxlZCBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgX3RhaW50ZWRfLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG5gYW5vbnltb3VzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gW2BPcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvT3JpZ2luICJUaGUgT3JpZ2luIHJlcXVlc3QgaGVhZGVyIGluZGljYXRlcyB3aGVyZSBhIGZldGNoIG9yaWdpbmF0ZXMgZnJvbS4gSXQgZG9lc25cJ3QgaW5jbHVkZSBhbnkgcGF0aCBpbmZvcm1hdGlvbiwgYnV0IG9ubHkgdGhlIHNlcnZlciBuYW1lLiBJdCBpcyBzZW50IHdpdGggQ09SUyByZXF1ZXN0cywgYXMgd2VsbCBhcyB3aXRoIFBPU1QgcmVxdWVzdHMuIEl0IGlzIHNpbWlsYXIgdG8gdGhlIFJlZmVyZXIgaGVhZGVyLCBidXQsIHVubGlrZSB0aGlzIGhlYWRlciwgaXQgZG9lc25cJ3QgZGlzY2xvc2UgdGhlIHdob2xlIHBhdGguIikgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCwgYnV0IG5vIGNyZWRlbnRpYWwgaXMgc2VudCAoaS5lLiBubyBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAoYnkgbm90IHNldHRpbmcgdGhlIFtgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiAiVGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiByZXNwb25zZSBoZWFkZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbnNlIGNhbiBiZSBzaGFyZWQgd2l0aCByZXF1ZXN0aW5nIGNvZGUgZnJvbSB0aGUgZ2l2ZW4gb3JpZ2luLiIpIEhUVFAgaGVhZGVyKSB0aGUgaW1hZ2Ugd2lsbCBiZSB0YWludGVkIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuYHVzZS1jcmVkZW50aWFsc2BcblxuQSBjcm9zcy1vcmlnaW4gcmVxdWVzdCAoaS5lLiB3aXRoIGFuIGBPcmlnaW5gIEhUVFAgaGVhZGVyKSBpcyBwZXJmb3JtZWQgYWxvbmcgd2l0aCBhIGNyZWRlbnRpYWwgc2VudCAoaS5lLiBhIGNvb2tpZSwgY2VydGlmaWNhdGUsIGFuZC9vciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIGlzIHBlcmZvcm1lZCkuIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKHRocm91Z2ggW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyAiVGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIHJlc3BvbnNlIGhlYWRlciB0ZWxscyBicm93c2VycyB3aGV0aGVyIHRvIGV4cG9zZSB0aGUgcmVzcG9uc2UgdG8gZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIHdoZW4gdGhlIHJlcXVlc3RcJ3MgY3JlZGVudGlhbHMgbW9kZSAoUmVxdWVzdC5jcmVkZW50aWFscykgaXMgImluY2x1ZGUiLiIpIEhUVFAgaGVhZGVyKSwgdGhlIHJlc291cmNlIHdpbGwgYmUgX3RhaW50ZWRfIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgdGhlIHJlc291cmNlIGlzIGZldGNoZWQgd2l0aG91dCBhIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgcmVxdWVzdCAoaS5lLiB3aXRob3V0IHNlbmRpbmcgdGhlIGBPcmlnaW5gIEhUVFAgaGVhZGVyKSwgcHJldmVudGluZyBpdHMgbm9uLXRhaW50ZWQgdXNhZ2UuIElmIGludmFsaWQsIGl0IGlzIGhhbmRsZWQgYXMgaWYgdGhlIGVudW1lcmF0ZWQga2V5d29yZCAqKmFub255bW91cyoqIHdhcyB1c2VkLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBuYW1lcyBhIHJlbGF0aW9uc2hpcCBvZiB0aGUgbGlua2VkIGRvY3VtZW50IHRvIHRoZSBjdXJyZW50IGRvY3VtZW50LiBUaGUgYXR0cmlidXRlIG11c3QgYmUgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgW2xpbmsgdHlwZXMgdmFsdWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgbWVkaWEgdGhhdCB0aGUgbGlua2VkIHJlc291cmNlIGFwcGxpZXMgdG8uIEl0cyB2YWx1ZSBtdXN0IGJlIGEgbWVkaWEgdHlwZSAvIFttZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYWlubHkgdXNlZnVsIHdoZW4gbGlua2luZyB0byBleHRlcm5hbCBzdHlsZXNoZWV0cyDigJQgaXQgYWxsb3dzIHRoZSB1c2VyIGFnZW50IHRvIHBpY2sgdGhlIGJlc3QgYWRhcHRlZCBvbmUgZm9yIHRoZSBkZXZpY2UgaXQgcnVucyBvbi5cblxuKipOb3RlczoqKlxuXG4qICAgSW4gSFRNTCA0LCB0aGlzIGNhbiBvbmx5IGJlIGEgc2ltcGxlIHdoaXRlLXNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG1lZGlhIGRlc2NyaXB0aW9uIGxpdGVyYWxzLCBpLmUuLCBbbWVkaWEgdHlwZXMgYW5kIGdyb3Vwc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0BtZWRpYSksIHdoZXJlIGRlZmluZWQgYW5kIGFsbG93ZWQgYXMgdmFsdWVzIGZvciB0aGlzIGF0dHJpYnV0ZSwgc3VjaCBhcyBgcHJpbnRgLCBgc2NyZWVuYCwgYGF1cmFsYCwgYGJyYWlsbGVgLiBIVE1MNSBleHRlbmRlZCB0aGlzIHRvIGFueSBraW5kIG9mIFttZWRpYSBxdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRoZSBhbGxvd2VkIHZhbHVlcyBvZiBIVE1MIDQuXG4qICAgQnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgW0NTUzMgTWVkaWEgUXVlcmllc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpIHdvbid0IG5lY2Vzc2FyaWx5IHJlY29nbml6ZSB0aGUgYWRlcXVhdGUgbGluazsgZG8gbm90IGZvcmdldCB0byBzZXQgZmFsbGJhY2sgbGlua3MsIHRoZSByZXN0cmljdGVkIHNldCBvZiBtZWRpYSBxdWVyaWVzIGRlZmluZWQgaW4gSFRNTCA0LiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LiBBbGxvd2VkIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSBbQkNQNDddKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0KS4gVXNlIHRoaXMgYXR0cmlidXRlIG9ubHkgaWYgdGhlIFtgaHJlZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItaHJlZikgYXR0cmlidXRlIGlzIHByZXNlbnQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgdHlwZSBvZiB0aGUgY29udGVudCBsaW5rZWQgdG8uIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBhIE1JTUUgdHlwZSBzdWNoIGFzICoqdGV4dC9odG1sKiosICoqdGV4dC9jc3MqKiwgYW5kIHNvIG9uLiBUaGUgY29tbW9uIHVzZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyB0byBkZWZpbmUgdGhlIHR5cGUgb2Ygc3R5bGVzaGVldCBiZWluZyByZWZlcmVuY2VkIChzdWNoIGFzICoqdGV4dC9jc3MqKiksIGJ1dCBnaXZlbiB0aGF0IENTUyBpcyB0aGUgb25seSBzdHlsZXNoZWV0IGxhbmd1YWdlIHVzZWQgb24gdGhlIHdlYiwgbm90IG9ubHkgaXMgaXQgcG9zc2libGUgdG8gb21pdCB0aGUgYHR5cGVgIGF0dHJpYnV0ZSwgYnV0IGlzIGFjdHVhbGx5IG5vdyByZWNvbW1lbmRlZCBwcmFjdGljZS4gSXQgaXMgYWxzbyB1c2VkIG9uIGByZWw9InByZWxvYWQiYCBsaW5rIHR5cGVzLCB0byBtYWtlIHN1cmUgdGhlIGJyb3dzZXIgb25seSBkb3dubG9hZHMgZmlsZSB0eXBlcyB0aGF0IGl0IHN1cHBvcnRzLid9fSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHNpemVzIG9mIHRoZSBpY29ucyBmb3IgdmlzdWFsIG1lZGlhIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuIEl0IG11c3QgYmUgcHJlc2VudCBvbmx5IGlmIHRoZSBbYHJlbGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saW5rI2F0dHItcmVsKSBjb250YWlucyBhIHZhbHVlIG9mIGBpY29uYCBvciBhIG5vbi1zdGFuZGFyZCB0eXBlIHN1Y2ggYXMgQXBwbGUncyBgYXBwbGUtdG91Y2gtaWNvbmAuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGFueWAsIG1lYW5pbmcgdGhhdCB0aGUgaWNvbiBjYW4gYmUgc2NhbGVkIHRvIGFueSBzaXplIGFzIGl0IGlzIGluIGEgdmVjdG9yIGZvcm1hdCwgbGlrZSBgaW1hZ2Uvc3ZnK3htbGAuXG4qICAgYSB3aGl0ZS1zcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBzaXplcywgZWFjaCBpbiB0aGUgZm9ybWF0IGBfPHdpZHRoIGluIHBpeGVscz5feF88aGVpZ2h0IGluIHBpeGVscz5fYCBvciBgXzx3aWR0aCBpbiBwaXhlbHM+X1hfPGhlaWdodCBpbiBwaXhlbHM+X2AuIEVhY2ggb2YgdGhlc2Ugc2l6ZXMgbXVzdCBiZSBjb250YWluZWQgaW4gdGhlIHJlc291cmNlLlxuXG4qKk5vdGU6KiogTW9zdCBpY29uIGZvcm1hdHMgYXJlIG9ubHkgYWJsZSB0byBzdG9yZSBvbmUgc2luZ2xlIGljb247IHRoZXJlZm9yZSBtb3N0IG9mIHRoZSB0aW1lIHRoZSBbYHNpemVzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLXNpemVzKSBjb250YWlucyBvbmx5IG9uZSBlbnRyeS4gTVMncyBJQ08gZm9ybWF0IGRvZXMsIGFzIHdlbGwgYXMgQXBwbGUncyBJQ05TLiBJQ08gaXMgbW9yZSB1YmlxdWl0b3VzOyB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgdXNlIGl0LiJ9fSx7bmFtZToiYXMiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgd2hlbiBgcmVsPSJwcmVsb2FkImAgb3IgYHJlbD0icHJlZmV0Y2giYCBoYXMgYmVlbiBzZXQgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIEl0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IGJlaW5nIGxvYWRlZCBieSB0aGUgYDxsaW5rPmAsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgY29udGVudCBwcmlvcml0aXphdGlvbiwgcmVxdWVzdCBtYXRjaGluZywgYXBwbGljYXRpb24gb2YgY29ycmVjdCBbY29udGVudCBzZWN1cml0eSBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSwgYW5kIHNldHRpbmcgb2YgY29ycmVjdCBbYEFjY2VwdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2NlcHQgIlRoZSBBY2NlcHQgcmVxdWVzdCBIVFRQIGhlYWRlciBhZHZlcnRpc2VzIHdoaWNoIGNvbnRlbnQgdHlwZXMsIGV4cHJlc3NlZCBhcyBNSU1FIHR5cGVzLCB0aGUgY2xpZW50IGlzIGFibGUgdG8gdW5kZXJzdGFuZC4gVXNpbmcgY29udGVudCBuZWdvdGlhdGlvbiwgdGhlIHNlcnZlciB0aGVuIHNlbGVjdHMgb25lIG9mIHRoZSBwcm9wb3NhbHMsIHVzZXMgaXQgYW5kIGluZm9ybXMgdGhlIGNsaWVudCBvZiBpdHMgY2hvaWNlIHdpdGggdGhlIENvbnRlbnQtVHlwZSByZXNwb25zZSBoZWFkZXIuIEJyb3dzZXJzIHNldCBhZGVxdWF0ZSB2YWx1ZXMgZm9yIHRoaXMgaGVhZGVyIGRlcGVuZGluZyBvbsKgdGhlIGNvbnRleHQgd2hlcmUgdGhlIHJlcXVlc3QgaXMgZG9uZTogd2hlbiBmZXRjaGluZyBhIENTUyBzdHlsZXNoZWV0IGEgZGlmZmVyZW50IHZhbHVlIGlzIHNldCBmb3IgdGhlIHJlcXVlc3QgdGhhbiB3aGVuIGZldGNoaW5nIGFuIGltYWdlLMKgdmlkZW8gb3IgYSBzY3JpcHQuIikgcmVxdWVzdCBoZWFkZXIuJ30se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgdGhlIHJlc291cmNlLiBQcmlvcml0eSBoaW50cyBhcmUgZGVsZWdhdGVkIHVzaW5nIHRoZSB2YWx1ZXM6In0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOicqKmBhdXRvYCoqOiBJbmRpY2F0ZXPCoCoqbm/CoHByZWZlcmVuY2UqKi4gVGhlIGJyb3dzZXIgbWF5IHVzZSBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UuXG5cbioqYGhpZ2hgKio6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIHJlc291cmNlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuKipgbG93YCoqOsKgSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqbG93KiogcHJpb3JpdHkuXG5cbioqTm90ZToqKiBUaGUgYGltcG9ydGFuY2VgIGF0dHJpYnV0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgYDxsaW5rPmAgZWxlbWVudCBpZiBgcmVsPSJwcmVsb2FkImAgb3IgYHJlbD0icHJlZmV0Y2giYCBpcyBwcmVzZW50Lid9LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJDb250YWlucyBpbmxpbmUgbWV0YWRhdGEg4oCUIGEgYmFzZTY0LWVuY29kZWQgY3J5cHRvZ3JhcGhpYyBoYXNoIG9mIHRoZSByZXNvdXJjZSAoZmlsZSkgeW914oCZcmUgdGVsbGluZyB0aGUgYnJvd3NlciB0byBmZXRjaC4gVGhlIGJyb3dzZXIgY2FuIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmZXRjaGVkIHJlc291cmNlIGhhcyBiZWVuIGRlbGl2ZXJlZCBmcmVlIG9mIHVuZXhwZWN0ZWQgbWFuaXB1bGF0aW9uLiBTZWUgW1N1YnJlc291cmNlIEludGVncml0eV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU3VicmVzb3VyY2VfSW50ZWdyaXR5KS4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcmAgbWVhbnMgdGhhdCB0aGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCBtZWFucyB0aGF0IG5vIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IFRMUyAoSFRUUFMpLiBUaGlzIGlzIGEgdXNlciBhZ2VudOKAmXMgZGVmYXVsdCBiZWhhdmlvciwgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbmAgbWVhbnMgdGhhdCB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgb3JpZ2luIG9mIHRoZSBwYWdlLCB3aGljaCBpcyByb3VnaGx5IHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmAgbWVhbnMgdGhhdCBuYXZpZ2F0aW5nIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpbmcgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXJcJ3MgcGF0aC5cbiogICBgdW5zYWZlLXVybGAgbWVhbnMgdGhhdCB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoIChidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lKS4gVGhpcyBjYXNlIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4nfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOidUaGUgYHRpdGxlYCBhdHRyaWJ1dGUgaGFzIHNwZWNpYWwgc2VtYW50aWNzIG9uIHRoZSBgPGxpbms+YCBlbGVtZW50LiBXaGVuIHVzZWQgb24gYSBgPGxpbmsgcmVsPSJzdHlsZXNoZWV0Ij5gIGl0IGRlZmluZXMgYSBbcHJlZmVycmVkIG9yIGFuIGFsdGVybmF0ZSBzdHlsZXNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKS4gSW5jb3JyZWN0bHkgdXNpbmcgaXQgbWF5IFtjYXVzZSB0aGUgc3R5bGVzaGVldCB0byBiZSBpZ25vcmVkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NvcnJlY3RseV9Vc2luZ19UaXRsZXNfV2l0aF9FeHRlcm5hbF9TdHlsZXNoZWV0cykuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saW5rIn1dfSx7bmFtZToibWV0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGEgZWxlbWVudCByZXByZXNlbnRzIHZhcmlvdXMga2luZHMgb2YgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgZXhwcmVzc2VkIHVzaW5nIHRoZSB0aXRsZSwgYmFzZSwgbGluaywgc3R5bGUsIGFuZCBzY3JpcHQgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIG5hbWUgb2YgYSBwaWVjZSBvZiBkb2N1bWVudC1sZXZlbCBtZXRhZGF0YS4gSXQgc2hvdWxkIG5vdCBiZSBzZXQgaWYgb25lIG9mIHRoZSBhdHRyaWJ1dGVzIFtgaXRlbXByb3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXByb3ApLCBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgaXMgYWxzbyBzZXQuXG5cblRoaXMgbWV0YWRhdGEgbmFtZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlIGNvbnRhaW5lZCBieSB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUuIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBuYW1lIGF0dHJpYnV0ZSBhcmU6XG5cbiogICBgYXBwbGljYXRpb24tbmFtZWAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gcnVubmluZyBpbiB0aGUgd2ViIHBhZ2UuXG4gICAgXG4gICAgKipOb3RlOioqXG4gICAgXG4gICAgKiAgIEJyb3dzZXJzIG1heSB1c2UgdGhpcyB0byBpZGVudGlmeSB0aGUgYXBwbGljYXRpb24uIEl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBbYDx0aXRsZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGl0bGUgIlRoZSBIVE1MIFRpdGxlIGVsZW1lbnQgKDx0aXRsZT4pIGRlZmluZXMgdGhlIGRvY3VtZW50XCdzIHRpdGxlIHRoYXQgaXMgc2hvd24gaW4gYSBicm93c2VyXCdzIHRpdGxlIGJhciBvciBhIHBhZ2VcJ3MgdGFiLiIpIGVsZW1lbnQsIHdoaWNoIHVzdWFsbHkgY29udGFpbiB0aGUgYXBwbGljYXRpb24gbmFtZSwgYnV0IG1heSBhbHNvIGNvbnRhaW4gaW5mb3JtYXRpb24gbGlrZSB0aGUgZG9jdW1lbnQgbmFtZSBvciBhIHN0YXR1cy5cbiAgICAqICAgU2ltcGxlIHdlYiBwYWdlcyBzaG91bGRuXCd0IGRlZmluZSBhbiBhcHBsaWNhdGlvbi1uYW1lLlxuICAgIFxuKiAgIGBhdXRob3JgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50XCdzIGF1dGhvci5cbiogICBgZGVzY3JpcHRpb25gIHdoaWNoIGNvbnRhaW5zIGEgc2hvcnQgYW5kIGFjY3VyYXRlIHN1bW1hcnkgb2YgdGhlIGNvbnRlbnQgb2YgdGhlIHBhZ2UuIFNldmVyYWwgYnJvd3NlcnMsIGxpa2UgRmlyZWZveCBhbmQgT3BlcmEsIHVzZSB0aGlzIGFzIHRoZSBkZWZhdWx0IGRlc2NyaXB0aW9uIG9mIGJvb2ttYXJrZWQgcGFnZXMuXG4qICAgYGdlbmVyYXRvcmAgd2hpY2ggY29udGFpbnMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNvZnR3YXJlIHRoYXQgZ2VuZXJhdGVkIHRoZSBwYWdlLlxuKiAgIGBrZXl3b3Jkc2Agd2hpY2ggY29udGFpbnMgd29yZHMgcmVsZXZhbnQgdG8gdGhlIHBhZ2VcJ3MgY29udGVudCBzZXBhcmF0ZWQgYnkgY29tbWFzLlxuKiAgIGByZWZlcnJlcmAgd2hpY2ggY29udHJvbHMgdGhlIFtgUmVmZXJlcmAgSFRUUCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyKSBhdHRhY2hlZCB0byByZXF1ZXN0cyBzZW50IGZyb20gdGhlIGRvY3VtZW50OlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGBjb250ZW50YCBhdHRyaWJ1dGUgb2YgYDxtZXRhIG5hbWU9InJlZmVycmVyIj5gXG4gICAgXG4gICAgYG5vLXJlZmVycmVyYFxuICAgIFxuICAgIERvIG5vdCBzZW5kIGEgSFRUUCBgUmVmZXJyZXJgIGhlYWRlci5cbiAgICBcbiAgICBgb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBvZiB0aGUgZG9jdW1lbnQuXG4gICAgXG4gICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYFxuICAgIFxuICAgIFNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBhcyBhIHJlZmVycmVyIHRvIFVSTHMgYXMgc2VjdXJlIGFzIHRoZSBjdXJyZW50IHBhZ2UsIChodHRwc+KGkmh0dHBzKSwgYnV0IGRvZXMgbm90IHNlbmQgYSByZWZlcnJlciB0byBsZXNzIHNlY3VyZSBVUkxzIChodHRwc+KGkmh0dHApLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci5cbiAgICBcbiAgICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gcmVxdWVzdHMsIGJ1dCBvbmx5IHNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBmb3Igb3RoZXIgY2FzZXMuXG4gICAgXG4gICAgYHNhbWUtb3JpZ2luYFxuICAgIFxuICAgIEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZS1zaXRlIG9yaWdpbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuICAgIFxuICAgIGBzdHJpY3Qtb3JpZ2luYFxuICAgIFxuICAgIE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgdG8gYS1wcmlvcmkgYXMtbXVjaC1zZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUCkuXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIG9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgdW5zYWZlLVVSTGBcbiAgICBcbiAgICBTZW5kIHRoZSBmdWxsIFVSTCAoc3RyaXBwZWQgb2YgcGFyYW1ldGVycykgZm9yIHNhbWUtb3JpZ2luIG9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy5cbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIFNvbWUgYnJvd3NlcnMgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCB2YWx1ZXMgb2YgYGFsd2F5c2AsIGBkZWZhdWx0YCwgYW5kIGBuZXZlcmAgZm9yIHJlZmVycmVyLlxuICAgICogICBEeW5hbWljYWxseSBpbnNlcnRpbmcgYDxtZXRhIG5hbWU9InJlZmVycmVyIj5gICh3aXRoIFtgZG9jdW1lbnQud3JpdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvd3JpdGUpIG9yIFtgYXBwZW5kQ2hpbGRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTm9kZS9hcHBlbmRDaGlsZCkpIG1ha2VzIHRoZSByZWZlcnJlciBiZWhhdmlvdXIgdW5wcmVkaWN0YWJsZS5cbiAgICAqICAgV2hlbiBzZXZlcmFsIGNvbmZsaWN0aW5nIHBvbGljaWVzIGFyZSBkZWZpbmVkLCB0aGUgbm8tcmVmZXJyZXIgcG9saWN5IGlzIGFwcGxpZWQuXG4gICAgXG5cblRoaXMgYXR0cmlidXRlIG1heSBhbHNvIGhhdmUgYSB2YWx1ZSB0YWtlbiBmcm9tIHRoZSBleHRlbmRlZCBsaXN0IGRlZmluZWQgb24gW1dIQVRXRyBXaWtpIE1ldGFFeHRlbnNpb25zIHBhZ2VdKGh0dHBzOi8vd2lraS53aGF0d2cub3JnL3dpa2kvTWV0YUV4dGVuc2lvbnMpLiBBbHRob3VnaCBub25lIGhhdmUgYmVlbiBmb3JtYWxseSBhY2NlcHRlZCB5ZXQsIGEgZmV3IGNvbW1vbmx5IHVzZWQgbmFtZXMgYXJlOlxuXG4qICAgYGNyZWF0b3JgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0b3Igb2YgdGhlIGRvY3VtZW50LCBzdWNoIGFzIGFuIG9yZ2FuaXphdGlvbiBvciBpbnN0aXR1dGlvbi4gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUsIHNldmVyYWwgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50cyBzaG91bGQgYmUgdXNlZC5cbiogICBgZ29vZ2xlYm90YCwgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBpcyBvbmx5IGZvbGxvd2VkIGJ5IEdvb2dsZWJvdCAodGhlIGluZGV4aW5nIGNyYXdsZXIgZm9yIEdvb2dsZSkuXG4qICAgYHB1Ymxpc2hlcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgcHVibGlzaGVyLlxuKiAgIGByb2JvdHNgIHdoaWNoIGRlZmluZXMgdGhlIGJlaGF2aW91ciB0aGF0IGNvb3BlcmF0aXZlIGNyYXdsZXJzLCBvciAicm9ib3RzIiwgc2hvdWxkIHVzZSB3aXRoIHRoZSBwYWdlLiBJdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSB2YWx1ZXMgYmVsb3c6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgY29udGVudCBvZiBgPG1ldGEgbmFtZT0icm9ib3RzIj5gXG4gICAgXG4gICAgVmFsdWVcbiAgICBcbiAgICBEZXNjcmlwdGlvblxuICAgIFxuICAgIFVzZWQgYnlcbiAgICBcbiAgICBgaW5kZXhgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBpbmRleCB0aGUgcGFnZSAoZGVmYXVsdCkuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vaW5kZXhgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBpbmRleCB0aGUgcGFnZS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgZm9sbG93YFxuICAgIFxuICAgIEFsbG93cyB0aGUgcm9ib3QgdG8gZm9sbG93IHRoZSBsaW5rcyBvbiB0aGUgcGFnZSAoZGVmYXVsdCkuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vZm9sbG93YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSByb2JvdCB0byBub3QgZm9sbG93IHRoZSBsaW5rcyBvbiB0aGUgcGFnZS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9uZWBcbiAgICBcbiAgICBFcXVpdmFsZW50IHRvIGBub2luZGV4LCBub2ZvbGxvd2BcbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2Fuc3dlci83OTgxMilcbiAgICBcbiAgICBgbm9vZHBgXG4gICAgXG4gICAgUHJldmVudHMgdXNpbmcgdGhlIFtPcGVuIERpcmVjdG9yeSBQcm9qZWN0XShodHRwczovL3d3dy5kbW96Lm9yZy8pIGRlc2NyaXB0aW9uLCBpZiBhbnksIGFzIHRoZSBwYWdlIGRlc2NyaXB0aW9uIGluIHNlYXJjaCBlbmdpbmUgcmVzdWx0cy5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2Fuc3dlci8zNTYyNCNub2Rtb3opLCBbWWFob29dKGh0dHBzOi8vaGVscC55YWhvby5jb20va2Ivc2VhcmNoLWZvci1kZXNrdG9wL21ldGEtdGFncy1yb2JvdHN0eHQteWFob28tc2VhcmNoLXNsbjIyMTMuaHRtbCNjb250NSksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vYXJjaGl2ZWBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgc2VhcmNoIGVuZ2luZSBub3QgdG8gY2FjaGUgdGhlIHBhZ2UgY29udGVudC5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcyksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvU0xOMjIxMy5odG1sKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9zbmlwcGV0YFxuICAgIFxuICAgIFByZXZlbnRzIGRpc3BsYXlpbmcgYW55IGRlc2NyaXB0aW9uIG9mIHRoZSBwYWdlIGluIHNlYXJjaCBlbmdpbmUgcmVzdWx0cy5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcyksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vaW1hZ2VpbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGlzIHBhZ2Ugbm90IHRvIGFwcGVhciBhcyB0aGUgcmVmZXJyaW5nIHBhZ2Ugb2YgYW4gaW5kZXhlZCBpbWFnZS5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcylcbiAgICBcbiAgICBgbm9jYWNoZWBcbiAgICBcbiAgICBTeW5vbnltIG9mIGBub2FyY2hpdmVgLlxuICAgIFxuICAgIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBPbmx5IGNvb3BlcmF0aXZlIHJvYm90cyBmb2xsb3cgdGhlc2UgcnVsZXMuIERvIG5vdCBleHBlY3QgdG8gcHJldmVudCBlLW1haWwgaGFydmVzdGVycyB3aXRoIHRoZW0uXG4gICAgKiAgIFRoZSByb2JvdCBzdGlsbCBuZWVkcyB0byBhY2Nlc3MgdGhlIHBhZ2UgaW4gb3JkZXIgdG8gcmVhZCB0aGVzZSBydWxlcy4gVG8gcHJldmVudCBiYW5kd2lkdGggY29uc3VtcHRpb24sIHVzZSBhIF9bcm9ib3RzLnR4dF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9yb2JvdHMudHh0ICJyb2JvdHMudHh0OiBSb2JvdHMudHh0IGlzIGEgZmlsZSB3aGljaCBpcyB1c3VhbGx5IHBsYWNlZCBpbiB0aGUgcm9vdCBvZiBhbnkgd2Vic2l0ZS4gSXQgZGVjaWRlcyB3aGV0aGVywqBjcmF3bGVycyBhcmUgcGVybWl0dGVkIG9yIGZvcmJpZGRlbiBhY2Nlc3MgdG8gdGhlIHdlYiBzaXRlLiIpXyBmaWxlLlxuICAgICogICBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBwYWdlLCBgbm9pbmRleGAgd2lsbCB3b3JrLCBidXQgb25seSBhZnRlciB0aGUgcm9ib3QgdmlzaXRzIHRoZSBwYWdlIGFnYWluLiBFbnN1cmUgdGhhdCB0aGUgYHJvYm90cy50eHRgIGZpbGUgaXMgbm90IHByZXZlbnRpbmcgcmV2aXNpdHMuXG4gICAgKiAgIFNvbWUgdmFsdWVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIGxpa2UgYGluZGV4YCBhbmQgYG5vaW5kZXhgLCBvciBgZm9sbG93YCBhbmQgYG5vZm9sbG93YC4gSW4gdGhlc2UgY2FzZXMgdGhlIHJvYm90XCdzIGJlaGF2aW91ciBpcyB1bmRlZmluZWQgYW5kIG1heSB2YXJ5IGJldHdlZW4gdGhlbS5cbiAgICAqICAgU29tZSBjcmF3bGVyIHJvYm90cywgbGlrZSBHb29nbGUsIFlhaG9vIGFuZCBCaW5nLCBzdXBwb3J0IHRoZSBzYW1lIHZhbHVlcyBmb3IgdGhlIEhUVFAgaGVhZGVyIGBYLVJvYm90cy1UYWdgOyB0aGlzIGFsbG93cyBub24tSFRNTCBkb2N1bWVudHMgbGlrZSBpbWFnZXMgdG8gdXNlIHRoZXNlIHJ1bGVzLlxuICAgIFxuKiAgIGBzbHVycGAsIGlzIGEgc3lub255bSBvZiBgcm9ib3RzYCwgYnV0IG9ubHkgZm9yIFNsdXJwIC0gdGhlIGNyYXdsZXIgZm9yIFlhaG9vIFNlYXJjaC5cbiogICBgdmlld3BvcnRgLCB3aGljaCBnaXZlcyBoaW50cyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBbdmlld3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvdmlld3BvcnQgInZpZXdwb3J0OiBBIHZpZXdwb3J0IHJlcHJlc2VudHMgYSBwb2x5Z29uYWwgKG5vcm1hbGx5IHJlY3Rhbmd1bGFyKSBhcmVhIGluIGNvbXB1dGVyIGdyYXBoaWNzIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHZpZXdlZC4gSW4gd2ViIGJyb3dzZXIgdGVybXMsIGl0IHJlZmVycyB0byB0aGUgcGFydCBvZiB0aGUgZG9jdW1lbnQgeW91XCdyZSB2aWV3aW5nIHdoaWNoIGlzIGN1cnJlbnRseSB2aXNpYmxlIGluIGl0cyB3aW5kb3cgKG9yIHRoZSBzY3JlZW4sIGlmIHRoZSBkb2N1bWVudCBpcyBiZWluZyB2aWV3ZWQgaW4gZnVsbCBzY3JlZW4gbW9kZSkuIENvbnRlbnQgb3V0c2lkZSB0aGUgdmlld3BvcnQgaXMgbm90IHZpc2libGUgb25zY3JlZW4gdW50aWwgc2Nyb2xsZWQgaW50byB2aWV3LiIpLiBVc2VkIGJ5IG1vYmlsZSBkZXZpY2VzIG9ubHkuXG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgY29udGVudCBvZiBgPG1ldGEgbmFtZT0idmlld3BvcnQiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIFBvc3NpYmxlIHN1YnZhbHVlc1xuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgYHdpZHRoYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgaW50ZWdlciBudW1iZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2Utd2lkdGhgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIHZpZXdwb3J0IHRoYXQgeW91IHdhbnQgdGhlIHdlYiBzaXRlIHRvIGJlIHJlbmRlcmVkIGF0LlxuICAgIFxuICAgIGBoZWlnaHRgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyLCBvciB0aGUgdGV4dCBgZGV2aWNlLWhlaWdodGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0LiBOb3QgdXNlZCBieSBhbnkgYnJvd3Nlci5cbiAgICBcbiAgICBgaW5pdGlhbC1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZXZpY2Ugd2lkdGggKGBkZXZpY2Utd2lkdGhgIGluIHBvcnRyYWl0IG1vZGUgb3IgYGRldmljZS1oZWlnaHRgIGluIGxhbmRzY2FwZSBtb2RlKSBhbmQgdGhlIHZpZXdwb3J0IHNpemUuXG4gICAgXG4gICAgYG1heGltdW0tc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgbWF4aW11bSBhbW91bnQgdG8gem9vbSBpbi4gSXQgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBgbWluaW11bS1zY2FsZWAgb3IgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgYG1pbmltdW0tc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgbWluaW11bSB6b29tIGxldmVsLiBJdCBtdXN0IGJlIHNtYWxsZXIgb3IgZXF1YWwgdG8gdGhlIGBtYXhpbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgdXNlci1zY2FsYWJsZWBcbiAgICBcbiAgICBgeWVzYCBvciBgbm9gXG4gICAgXG4gICAgSWYgc2V0IHRvIGBub2AsIHRoZSB1c2VyIGlzIG5vdCBhYmxlIHRvIHpvb20gaW4gdGhlIHdlYnBhZ2UuIFRoZSBkZWZhdWx0IGlzIGB5ZXNgLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlLCBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBTcGVjaWZpY2F0aW9uXG4gICAgXG4gICAgU3RhdHVzXG4gICAgXG4gICAgQ29tbWVudFxuICAgIFxuICAgIFtDU1MgRGV2aWNlIEFkYXB0YXRpb24gIFxuICAgIFRoZSBkZWZpbml0aW9uIG9mIFwnPG1ldGEgbmFtZT0idmlld3BvcnQiPlwnIGluIHRoYXQgc3BlY2lmaWNhdGlvbi5dKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZGV2aWNlLWFkYXB0LyN2aWV3cG9ydC1tZXRhKVxuICAgIFxuICAgIFdvcmtpbmcgRHJhZnRcbiAgICBcbiAgICBOb24tbm9ybWF0aXZlbHkgZGVzY3JpYmVzIHRoZSBWaWV3cG9ydCBNRVRBIGVsZW1lbnRcbiAgICBcbiAgICBTZWUgYWxzbzogW2BAdmlld3BvcnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQHZpZXdwb3J0ICJUaGUgQHZpZXdwb3J0IENTUyBhdC1ydWxlIGxldHMgeW91IGNvbmZpZ3VyZSB0aGUgdmlld3BvcnQgdGhyb3VnaCB3aGljaCB0aGUgZG9jdW1lbnQgaXMgdmlld2VkLiBJdFwncyBwcmltYXJpbHkgdXNlZCBmb3IgbW9iaWxlIGRldmljZXMsIGJ1dCBpcyBhbHNvIHVzZWQgYnkgZGVza3RvcCBicm93c2VycyB0aGF0IHN1cHBvcnQgZmVhdHVyZXMgbGlrZSAic25hcCB0byBlZGdlIiAoc3VjaCBhcyBNaWNyb3NvZnQgRWRnZSkuIilcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIFRob3VnaCB1bnN0YW5kYXJkaXplZCwgdGhpcyBkZWNsYXJhdGlvbiBpcyByZXNwZWN0ZWQgYnkgbW9zdCBtb2JpbGUgYnJvd3NlcnMgZHVlIHRvIGRlLWZhY3RvIGRvbWluYW5jZS5cbiAgICAqICAgVGhlIGRlZmF1bHQgdmFsdWVzIG1heSB2YXJ5IGJldHdlZW4gZGV2aWNlcyBhbmQgYnJvd3NlcnMuXG4gICAgKiAgIFRvIGxlYXJuIGFib3V0IHRoaXMgZGVjbGFyYXRpb24gaW4gRmlyZWZveCBmb3IgTW9iaWxlLCBzZWUgW3RoaXMgYXJ0aWNsZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb2JpbGUvVmlld3BvcnRfbWV0YV90YWcgIk1vYmlsZS9WaWV3cG9ydCBtZXRhIHRhZyIpLid9fSx7bmFtZToiaHR0cC1lcXVpdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonRGVmaW5lcyBhIHByYWdtYSBkaXJlY3RpdmUuIFRoZSBhdHRyaWJ1dGUgaXMgbmFtZWQgYCoqaHR0cC1lcXVpdioqKGFsZW50KWAgYmVjYXVzZSBhbGwgdGhlIGFsbG93ZWQgdmFsdWVzIGFyZSBuYW1lcyBvZiBwYXJ0aWN1bGFyIEhUVFAgaGVhZGVyczpcblxuKiAgIGAiY29udGVudC1sYW5ndWFnZSJgICBcbiAgICBEZWZpbmVzIHRoZSBkZWZhdWx0IGxhbmd1YWdlIG9mIHRoZSBwYWdlLiBJdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgW2xhbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZykgYXR0cmlidXRlIG9uIGFueSBlbGVtZW50LlxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBQcmVmZXIgdGhlIGBsYW5nYCBhdHRyaWJ1dGUgb24gdGhlIFtgPGh0bWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2h0bWwgIlRoZSBIVE1MIDxodG1sPiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJvb3QgKHRvcC1sZXZlbCBlbGVtZW50KSBvZiBhbiBIVE1MIGRvY3VtZW50LCBzbyBpdCBpcyBhbHNvIHJlZmVycmVkIHRvIGFzIHRoZSByb290IGVsZW1lbnQuIEFsbCBvdGhlciBlbGVtZW50cyBtdXN0IGJlIGRlc2NlbmRhbnRzIG9mIHRoaXMgZWxlbWVudC4iKSBlbGVtZW50LlxuICAgIFxuKiAgIGAiY29udGVudC1zZWN1cml0eS1wb2xpY3kiYCAgXG4gICAgQWxsb3dzIHBhZ2UgYXV0aG9ycyB0byBkZWZpbmUgYSBbY29udGVudCBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L0NTUC9DU1BfcG9saWN5X2RpcmVjdGl2ZXMpIGZvciB0aGUgY3VycmVudCBwYWdlLiBDb250ZW50IHBvbGljaWVzIG1vc3RseSBzcGVjaWZ5IGFsbG93ZWQgc2VydmVyIG9yaWdpbnMgYW5kIHNjcmlwdCBlbmRwb2ludHMgd2hpY2ggaGVscCBndWFyZCBhZ2FpbnN0IGNyb3NzLXNpdGUgc2NyaXB0aW5nIGF0dGFja3MuXG4qICAgYCJjb250ZW50LXR5cGUiYCAgXG4gICAgRGVmaW5lcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUpIG9mIHRoZSBkb2N1bWVudCwgZm9sbG93ZWQgYnkgaXRzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgZm9sbG93cyB0aGUgc2FtZSBzeW50YXggYXMgdGhlIEhUVFAgYGNvbnRlbnQtdHlwZWAgZW50aXR5LWhlYWRlciBmaWVsZCwgYnV0IGFzIGl0IGlzIGluc2lkZSBhIEhUTUwgcGFnZSwgbW9zdCB2YWx1ZXMgb3RoZXIgdGhhbiBgdGV4dC9odG1sYCBhcmUgaW1wb3NzaWJsZS4gVGhlcmVmb3JlIHRoZSB2YWxpZCBzeW50YXggZm9yIGl0cyBgY29udGVudGAgaXMgdGhlIHN0cmluZyBcJ2B0ZXh0L2h0bWxgXCcgZm9sbG93ZWQgYnkgYSBjaGFyYWN0ZXIgc2V0IHdpdGggdGhlIGZvbGxvd2luZyBzeW50YXg6IFwnYDsgY2hhcnNldD1fSUFOQWNoYXJzZXRfYFwnLCB3aGVyZSBgSUFOQWNoYXJzZXRgIGlzIHRoZSBfcHJlZmVycmVkIE1JTUUgbmFtZV8gZm9yIGEgY2hhcmFjdGVyIHNldCBhcyBbZGVmaW5lZCBieSB0aGUgSUFOQS5dKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzKVxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBVc2UgdGhlIFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgYXR0cmlidXRlIG9uIHRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQuXG4gICAgXG4gICAgKipOb3RlOioqIEFzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgY2FuXCd0IGNoYW5nZSBkb2N1bWVudHNcJyB0eXBlcyBpbiBYSFRNTCBvciBIVE1MNVwncyBYSFRNTCBzZXJpYWxpemF0aW9uLCBuZXZlciBzZXQgdGhlIE1JTUUgdHlwZSB0byBhbiBYSFRNTCBNSU1FIHR5cGUgd2l0aCBgPG1ldGE+YC5cbiAgICBcbiogICBgInJlZnJlc2giYCAgXG4gICAgVGhpcyBpbnN0cnVjdGlvbiBzcGVjaWZpZXM6XG4gICAgKiAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbCB0aGUgcGFnZSBzaG91bGQgYmUgcmVsb2FkZWQgLSBvbmx5IGlmIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZSBjb250YWlucyBhIHBvc2l0aXZlIGludGVnZXIuXG4gICAgKiAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbCB0aGUgcGFnZSBzaG91bGQgcmVkaXJlY3QgdG8gYW5vdGhlciAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlciBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIFwnYDt1cmw9YFwnLCBhbmQgYSB2YWxpZCBVUkwuXG4qICAgYCJzZXQtY29va2llImAgIFxuICAgIERlZmluZXMgYSBbY29va2llXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL2Nvb2tpZSkgZm9yIHRoZSBwYWdlLiBJdHMgY29udGVudCBtdXN0IGZvbGxvdyB0aGUgc3ludGF4IGRlZmluZWQgaW4gdGhlIFtJRVRGIEhUVFAgQ29va2llIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBzdGF0ZS1jb29raWUtMTQpLlxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgaW5zdHJ1Y3Rpb24sIGFzIGl0IGlzIG9ic29sZXRlLiBVc2UgdGhlIEhUVFAgaGVhZGVyIFtgU2V0LUNvb2tpZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9TZXQtQ29va2llKSBpbnN0ZWFkLid9fSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHZhbHVlIGZvciB0aGUgW2BodHRwLWVxdWl2YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1odHRwLWVxdWl2KSBvciBbYG5hbWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLW5hbWUpIGF0dHJpYnV0ZSwgZGVwZW5kaW5nIG9uIHdoaWNoIGlzIHVzZWQuIn19LHtuYW1lOiJjaGFyc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWNsYXJlcyB0aGUgcGFnZVwncyBjaGFyYWN0ZXIgZW5jb2RpbmcuIEl0IG11c3QgY29udGFpbiBhIFtzdGFuZGFyZCBJQU5BIE1JTUUgbmFtZSBmb3IgY2hhcmFjdGVyIGVuY29kaW5nc10oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpLiBBbHRob3VnaCB0aGUgc3RhbmRhcmQgZG9lc25cJ3QgcmVxdWVzdCBhIHNwZWNpZmljIGVuY29kaW5nLCBpdCBzdWdnZXN0czpcblxuKiAgIEF1dGhvcnMgYXJlIGVuY291cmFnZWQgdG8gdXNlIFtgVVRGLThgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VURi04KS5cbiogICBBdXRob3JzIHNob3VsZCBub3QgdXNlIEFTQ0lJLWluY29tcGF0aWJsZSBlbmNvZGluZ3MgdG8gYXZvaWQgc2VjdXJpdHkgcmlzazogYnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgdGhlbSBtYXkgaW50ZXJwcmV0IGhhcm1mdWwgY29udGVudCBhcyBIVE1MLiBUaGlzIGhhcHBlbnMgd2l0aCB0aGUgYEpJU19DNjIyNi0xOTgzYCwgYEpJU19YMDIxMi0xOTkwYCwgYEhaLUdCLTIzMTJgLCBgSk9IQUJgLCB0aGUgSVNPLTIwMjIgZmFtaWx5IGFuZCB0aGUgRUJDRElDIGZhbWlseS5cblxuKipOb3RlOioqIEFTQ0lJLWluY29tcGF0aWJsZSBlbmNvZGluZ3MgYXJlIHRob3NlIHRoYXQgZG9uXCd0IG1hcCB0aGUgOC1iaXQgY29kZSBwb2ludHMgYDB4MjBgIHRvIGAweDdFYCB0byB0aGUgYDB4MDAyMGAgdG8gYDB4MDA3RWAgVW5pY29kZSBjb2RlIHBvaW50cylcblxuKiAgIEF1dGhvcnMgKiptdXN0IG5vdCoqIHVzZSBgQ0VTVS04YCwgYFVURi03YCwgYEJPQ1UtMWAgYW5kL29yIGBTQ1NVYCBhcyBbY3Jvc3Mtc2l0ZSBzY3JpcHRpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ3Jvc3Mtc2l0ZV9zY3JpcHRpbmcpIGF0dGFja3Mgd2l0aCB0aGVzZSBlbmNvZGluZ3MgaGF2ZSBiZWVuIGRlbW9uc3RyYXRlZC5cbiogICBBdXRob3JzIHNob3VsZCBub3QgdXNlIGBVVEYtMzJgIGJlY2F1c2Ugbm90IGFsbCBIVE1MNSBlbmNvZGluZyBhbGdvcml0aG1zIGNhbiBkaXN0aW5ndWlzaCBpdCBmcm9tIGBVVEYtMTZgLlxuXG4qKk5vdGVzOioqXG5cbiogICBUaGUgZGVjbGFyZWQgY2hhcmFjdGVyIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIG9uZSB0aGUgcGFnZSB3YXMgc2F2ZWQgd2l0aCB0byBhdm9pZCBnYXJibGVkIGNoYXJhY3RlcnMgYW5kIHNlY3VyaXR5IGhvbGVzLlxuKiAgIFRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgZGVjbGFyaW5nIHRoZSBlbmNvZGluZyBtdXN0IGJlIGluc2lkZSB0aGUgW2A8aGVhZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZCAiVGhlIEhUTUwgPGhlYWQ+IGVsZW1lbnQgcHJvdmlkZXMgZ2VuZXJhbCBpbmZvcm1hdGlvbiAobWV0YWRhdGEpIGFib3V0IHRoZSBkb2N1bWVudCwgaW5jbHVkaW5nIGl0cyB0aXRsZSBhbmQgbGlua3MgdG8gaXRzwqBzY3JpcHRzIGFuZCBzdHlsZSBzaGVldHMuIikgZWxlbWVudCBhbmQgKip3aXRoaW4gdGhlIGZpcnN0IDEwMjQgYnl0ZXMqKiBvZiB0aGUgSFRNTCBhcyBzb21lIGJyb3dzZXJzIG9ubHkgbG9vayBhdCB0aG9zZSBieXRlcyBiZWZvcmUgY2hvb3NpbmcgYW4gZW5jb2RpbmcuXG4qICAgVGhpcyBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgaXMgb25seSBvbmUgcGFydCBvZiB0aGUgW2FsZ29yaXRobSB0byBkZXRlcm1pbmUgYSBwYWdlXCdzIGNoYXJhY3RlciBzZXRdKGh0dHBzOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjZW5jb2Rpbmctc25pZmZpbmctYWxnb3JpdGhtICJBbGdvcml0aG0gY2hhcnNldCBwYWdlIikuIFRoZSBbYENvbnRlbnQtVHlwZWAgaGVhZGVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1UeXBlKSBhbmQgYW55IFtCeXRlLU9yZGVyIE1hcmtzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0J5dGUtT3JkZXJfTWFyayAiVGhlIGRlZmluaXRpb24gb2YgdGhhdCB0ZXJtIChCeXRlLU9yZGVyIE1hcmtzKSBoYXMgbm90IGJlZW4gd3JpdHRlbiB5ZXQ7IHBsZWFzZSBjb25zaWRlciBjb250cmlidXRpbmcgaXQhIikgb3ZlcnJpZGUgdGhpcyBlbGVtZW50LlxuKiAgIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGRlZmluZSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nLiBJZiBhIHBhZ2VcJ3MgZW5jb2RpbmcgaXMgdW5kZWZpbmVkLCBjcm9zcy1zY3JpcHRpbmcgdGVjaG5pcXVlcyBhcmUgcG9zc2libGUsIHN1Y2ggYXMgdGhlIFtgVVRGLTdgIGZhbGxiYWNrIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZG9jdHlwZS1taXJyb3Ivd2lraS9BcnRpY2xlVXRmNykuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCB3aXRoIGEgYGNoYXJzZXRgIGF0dHJpYnV0ZSBpcyBhIHN5bm9ueW0gZm9yIHRoZSBwcmUtSFRNTDUgYDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PV9JQU5BY2hhcnNldF8iPmAsIHdoZXJlIF9gSUFOQWNoYXJzZXRgXyBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIGVxdWl2YWxlbnQgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUuIFRoaXMgc3ludGF4IGlzIHN0aWxsIGFsbG93ZWQsIGFsdGhvdWdoIG5vIGxvbmdlciByZWNvbW1lbmRlZC4nfX0se25hbWU6InNjaGVtZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHNjaGVtZSBpbiB3aGljaCBtZXRhZGF0YSBpcyBkZXNjcmliZWQuIEEgc2NoZW1lIGlzIGEgY29udGV4dCBsZWFkaW5nIHRvIHRoZSBjb3JyZWN0IGludGVycHJldGF0aW9ucyBvZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSB2YWx1ZSwgbGlrZSBhIGZvcm1hdC5cblxuKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFRoZXJlIGlzIG5vIHJlcGxhY2VtZW50IGFzIHRoZXJlIHdhcyBubyByZWFsIHVzYWdlIGZvciBpdC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0eWxlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gZW1iZWQgc3R5bGUgaW5mb3JtYXRpb24gaW4gdGhlaXIgZG9jdW1lbnRzLiBUaGUgc3R5bGUgZWxlbWVudCBpcyBvbmUgb2Ygc2V2ZXJhbCBpbnB1dHMgdG8gdGhlIHN0eWxpbmcgcHJvY2Vzc2luZyBtb2RlbC4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGNvbnRlbnQgZm9yIHRoZSB1c2VyLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB3aGljaCBtZWRpYSB0aGUgc3R5bGUgc2hvdWxkIGJlIGFwcGxpZWQgdG8uIEl0cyB2YWx1ZSBpcyBhIFttZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvR3VpZGUvQ1NTL01lZGlhX3F1ZXJpZXMpLCB3aGljaCBkZWZhdWx0cyB0byBgYWxsYCBpZiB0aGUgYXR0cmlidXRlIGlzIG1pc3NpbmcuIn19LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB1c2VkIHRvIHdoaXRlbGlzdCBpbmxpbmUgc3R5bGVzIGluIGEgW3N0eWxlLXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3N0eWxlLXNyYykuIFRoZSBzZXJ2ZXIgbXVzdCBnZW5lcmF0ZSBhIHVuaXF1ZSBub25jZSB2YWx1ZSBlYWNoIHRpbWUgaXQgdHJhbnNtaXRzIGEgcG9saWN5LiBJdCBpcyBjcml0aWNhbCB0byBwcm92aWRlIGEgbm9uY2UgdGhhdCBjYW5ub3QgYmUgZ3Vlc3NlZCBhcyBieXBhc3NpbmcgYSByZXNvdXJjZeKAmXMgcG9saWN5IGlzIG90aGVyd2lzZSB0cml2aWFsLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc3R5bGluZyBsYW5ndWFnZSBhcyBhIE1JTUUgdHlwZSAoY2hhcnNldCBzaG91bGQgbm90IGJlIHNwZWNpZmllZCkuIFRoaXMgYXR0cmlidXRlIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBgdGV4dC9jc3NgIGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQg4oCUIHRoZXJlIGlzIHZlcnkgbGl0dGxlIHJlYXNvbiB0byBpbmNsdWRlIHRoaXMgaW4gbW9kZXJuIHdlYiBkb2N1bWVudHMuIn19LHtuYW1lOiJzY29wZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIFthbHRlcm5hdGl2ZSBzdHlsZSBzaGVldF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0FsdGVybmF0aXZlX3N0eWxlX3NoZWV0cykgc2V0cy4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0eWxlIn1dfSx7bmFtZToiYm9keSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJvZHkgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib25hZnRlcnByaW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHRoZSB1c2VyIGhhcyBwcmludGVkIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JlcHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyBwcmludGluZyBvZiB0aGUgZG9jdW1lbnQuIn19LHtuYW1lOiJvbmJlZm9yZXVubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBhYm91dCB0byBiZSB1bmxvYWRlZC4ifX0se25hbWU6Im9uaGFzaGNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyIHBhcnQgKHN0YXJ0aW5nIHdpdGggdGhlIGhhc2ggKGAnIydgKSBjaGFyYWN0ZXIpIG9mIHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgYWRkcmVzcyBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ubGFuZ3VhZ2VjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgcHJlZmVycmVkIGxhbmd1YWdlcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25tZXNzYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyByZWNlaXZlZCBhIG1lc3NhZ2UuIn19LHtuYW1lOiJvbm9mZmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGZhaWxlZC4ifX0se25hbWU6Im9ub25saW5lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gbmV0d29yayBjb21tdW5pY2F0aW9uIGhhcyBiZWVuIHJlc3RvcmVkLiJ9fSx7bmFtZToib25wYWdlaGlkZSJ9LHtuYW1lOiJvbnBhZ2VzaG93In0se25hbWU6Im9ucG9wc3RhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbmF2aWdhdGVkIHNlc3Npb24gaGlzdG9yeS4ifX0se25hbWU6Im9uc3RvcmFnZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBzdG9yYWdlIGFyZWEgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnVubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBnb2luZyBhd2F5LiJ9fSx7bmFtZToiYWxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciBoeXBlcmxpbmtzIHdoZW4gc2VsZWN0ZWQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOmFjdGl2ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86YWN0aXZlICJUaGUgOmFjdGl2ZSBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCAoc3VjaCBhcyBhIGJ1dHRvbikgdGhhdCBpcyBiZWluZyBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9LHtuYW1lOiJiYWNrZ3JvdW5kIixkZXNjcmlwdGlvbjonVVJJIG9mIGEgaW1hZ2UgdG8gdXNlIGFzIGEgYmFja2dyb3VuZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgYmFja2dyb3VuZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kICJUaGUgYmFja2dyb3VuZCBzaG9ydGhhbmQgQ1NTIHByb3BlcnR5IHNldHMgYWxsIGJhY2tncm91bmQgc3R5bGUgcHJvcGVydGllcyBhdCBvbmNlLCBzdWNoIGFzIGNvbG9yLCBpbWFnZSwgb3JpZ2luIGFuZCBzaXplLCBvciByZXBlYXQgbWV0aG9kLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGRvY3VtZW50LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJvdHRvbW1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIGJvdHRvbSBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLWJvdHRvbWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tYm90dG9tICJUaGUgbWFyZ2luLWJvdHRvbSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJsZWZ0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgbGVmdCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgdW52aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6bGlua2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86bGluayAiVGhlIDpsaW5rIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiB2aXNpdGVkLiBJdCBtYXRjaGVzIGV2ZXJ5IHVudmlzaXRlZCA8YT4sIDxhcmVhPiwgb3IgPGxpbms+IGVsZW1lbnQgdGhhdCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9LHtuYW1lOiJvbmJsdXIiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGxvc2VzIGZvY3VzLiJ9LHtuYW1lOiJvbmVycm9yIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBmYWlscyB0byBsb2FkIHByb3Blcmx5LiJ9LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCByZWNlaXZlcyBmb2N1cy4ifSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZy4ifSx7bmFtZToib25yZWRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBmb3J3YXJkIGluIHVuZG8gdHJhbnNhY3Rpb24gaGlzdG9yeS4ifSx7bmFtZToib25yZXNpemUiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBiZWVuIHJlc2l6ZWQuIn0se25hbWU6Im9udW5kbyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbW92ZWQgYmFja3dhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJyaWdodG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIHJpZ2h0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tcmlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXJpZ2h0ICJUaGUgbWFyZ2luLXJpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjonRm9yZWdyb3VuZCBjb2xvciBvZiB0ZXh0LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidG9wbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgdG9wIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tdG9wYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi10b3AgIlRoZSBtYXJnaW4tdG9wIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgdG9wIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InZsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgdmlzaXRlZCBoeXBlcnRleHQgbGlua3MuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOnZpc2l0ZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOnZpc2l0ZWQgIlRoZSA6dmlzaXRlZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgbGlua3MgdGhhdCB0aGUgdXNlciBoYXMgYWxyZWFkeSB2aXNpdGVkLiBGb3IgcHJpdmFjeSByZWFzb25zLCB0aGUgc3R5bGVzIHRoYXQgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoaXMgc2VsZWN0b3IgYXJlIHZlcnkgbGltaXRlZC4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ib2R5In1dfSx7bmFtZToiYXJ0aWNsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFydGljbGUgZWxlbWVudCByZXByZXNlbnRzIGEgY29tcGxldGUsIG9yIHNlbGYtY29udGFpbmVkLCBjb21wb3NpdGlvbiBpbiBhIGRvY3VtZW50LCBwYWdlLCBhcHBsaWNhdGlvbiwgb3Igc2l0ZSBhbmQgdGhhdCBpcywgaW4gcHJpbmNpcGxlLCBpbmRlcGVuZGVudGx5IGRpc3RyaWJ1dGFibGUgb3IgcmV1c2FibGUsIGUuZy4gaW4gc3luZGljYXRpb24uIFRoaXMgY291bGQgYmUgYSBmb3J1bSBwb3N0LCBhIG1hZ2F6aW5lIG9yIG5ld3NwYXBlciBhcnRpY2xlLCBhIGJsb2cgZW50cnksIGEgdXNlci1zdWJtaXR0ZWQgY29tbWVudCwgYW4gaW50ZXJhY3RpdmUgd2lkZ2V0IG9yIGdhZGdldCwgb3IgYW55IG90aGVyIGluZGVwZW5kZW50IGl0ZW0gb2YgY29udGVudC4gRWFjaCBhcnRpY2xlIHNob3VsZCBiZSBpZGVudGlmaWVkLCB0eXBpY2FsbHkgYnkgaW5jbHVkaW5nIGEgaGVhZGluZyAoaDHigJNoNiBlbGVtZW50KSBhcyBhIGNoaWxkIG9mIHRoZSBhcnRpY2xlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJ0aWNsZSJ9XX0se25hbWU6InNlY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWN0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdlbmVyaWMgc2VjdGlvbiBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBBIHNlY3Rpb24sIGluIHRoaXMgY29udGV4dCwgaXMgYSB0aGVtYXRpYyBncm91cGluZyBvZiBjb250ZW50LiBFYWNoIHNlY3Rpb24gc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nICggaDEtIGg2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIHNlY3Rpb24gZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWN0aW9uIn1dfSx7bmFtZToibmF2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmF2IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gb2YgYSBwYWdlIHRoYXQgbGlua3MgdG8gb3RoZXIgcGFnZXMgb3IgdG8gcGFydHMgd2l0aGluIHRoZSBwYWdlOiBhIHNlY3Rpb24gd2l0aCBuYXZpZ2F0aW9uIGxpbmtzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L25hdiJ9XX0se25hbWU6ImFzaWRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXNpZGUgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBjb25zaXN0cyBvZiBjb250ZW50IHRoYXQgaXMgdGFuZ2VudGlhbGx5IHJlbGF0ZWQgdG8gdGhlIGNvbnRlbnQgYXJvdW5kIHRoZSBhc2lkZSBlbGVtZW50LCBhbmQgd2hpY2ggY291bGQgYmUgY29uc2lkZXJlZCBzZXBhcmF0ZSBmcm9tIHRoYXQgY29udGVudC4gU3VjaCBzZWN0aW9ucyBhcmUgb2Z0ZW4gcmVwcmVzZW50ZWQgYXMgc2lkZWJhcnMgaW4gcHJpbnRlZCB0eXBvZ3JhcGh5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FzaWRlIn1dfSx7bmFtZToiaDEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDIgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoMyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgzIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img1IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDUgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg2IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaGVhZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVhZGVyIGVsZW1lbnQgcmVwcmVzZW50cyBpbnRyb2R1Y3RvcnkgY29udGVudCBmb3IgaXRzIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50LiBBIGhlYWRlciB0eXBpY2FsbHkgY29udGFpbnMgYSBncm91cCBvZiBpbnRyb2R1Y3Rvcnkgb3IgbmF2aWdhdGlvbmFsIGFpZHMuIFdoZW4gdGhlIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gaXQgYXBwbGllcyB0byB0aGUgd2hvbGUgcGFnZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkZXIifV19LHtuYW1lOiJmb290ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmb290ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgZm9vdGVyIGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgZm9vdGVyIHR5cGljYWxseSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgc2VjdGlvbiBzdWNoIGFzIHdobyB3cm90ZSBpdCwgbGlua3MgdG8gcmVsYXRlZCBkb2N1bWVudHMsIGNvcHlyaWdodCBkYXRhLCBhbmQgdGhlIGxpa2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9vdGVyIn1dfSx7bmFtZToiYWRkcmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3MgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb250YWN0IGluZm9ybWF0aW9uIGZvciBpdHMgbmVhcmVzdCBhcnRpY2xlIG9yIGJvZHkgZWxlbWVudCBhbmNlc3Rvci4gSWYgdGhhdCBpcyB0aGUgYm9keSBlbGVtZW50LCB0aGVuIHRoZSBjb250YWN0IGluZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGRvY3VtZW50IGFzIGEgd2hvbGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWRkcmVzcyJ9XX0se25hbWU6InAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wIn1dfSx7bmFtZToiaHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBociBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJhZ3JhcGgtbGV2ZWwgdGhlbWF0aWMgYnJlYWssIGUuZy4gYSBzY2VuZSBjaGFuZ2UgaW4gYSBzdG9yeSwgb3IgYSB0cmFuc2l0aW9uIHRvIGFub3RoZXIgdG9waWMgd2l0aGluIGEgc2VjdGlvbiBvZiBhIHJlZmVyZW5jZSBib29rLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246IlNldHMgdGhlIGFsaWdubWVudCBvZiB0aGUgcnVsZSBvbiB0aGUgcGFnZS4gSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgbGVmdGAuIn0se25hbWU6ImNvbG9yIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgdGhyb3VnaCBjb2xvciBuYW1lIG9yIGhleGFkZWNpbWFsIHZhbHVlLiJ9LHtuYW1lOiJub3NoYWRlIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgcnVsZSB0byBoYXZlIG5vIHNoYWRpbmcuIn0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBoZWlnaHQsIGluIHBpeGVscywgb2YgdGhlIHJ1bGUuIn0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlIHRocm91Z2ggYSBwaXhlbCBvciBwZXJjZW50YWdlIHZhbHVlLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHIifV19LHtuYW1lOiJwcmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcmUgZWxlbWVudCByZXByZXNlbnRzIGEgYmxvY2sgb2YgcHJlZm9ybWF0dGVkIHRleHQsIGluIHdoaWNoIHN0cnVjdHVyZSBpcyByZXByZXNlbnRlZCBieSB0eXBvZ3JhcGhpYyBjb252ZW50aW9ucyByYXRoZXIgdGhhbiBieSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29scyIsZGVzY3JpcHRpb246J0NvbnRhaW5zIHRoZSBfcHJlZmVycmVkXyBjb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgYSBsaW5lIHNob3VsZCBoYXZlLiBJdCB3YXMgYSBub24tc3RhbmRhcmQgc3lub255bSBvZiBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ByZSNhdHRyLXdpZHRoKS4gVG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIFRob3VnaCB0ZWNobmljYWxseSBzdGlsbCBpbXBsZW1lbnRlZCwgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIHZpc3VhbCBlZmZlY3Q7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aWR0aCAiVGhlIHdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIGFuIGVsZW1lbnRcJ3Mgd2lkdGguIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgYnV0IGlmIGJveC1zaXppbmcgaXMgc2V0IHRvIGJvcmRlci1ib3gsIGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgYXJlYS4iKSBpbnN0ZWFkLid9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjonSXMgYSBfaGludF8gaW5kaWNhdGluZyBob3cgdGhlIG92ZXJmbG93IG11c3QgaGFwcGVuLiBJbiBtb2Rlcm4gYnJvd3NlciB0aGlzIGhpbnQgaXMgaWdub3JlZCBhbmQgbm8gdmlzdWFsIGVmZmVjdCByZXN1bHRzIGluIGl0cyBwcmVzZW50OyB0byBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2hpdGUtc3BhY2VgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2hpdGUtc3BhY2UgIlRoZSB3aGl0ZS1zcGFjZSBDU1MgcHJvcGVydHkgc2V0cyBob3cgd2hpdGUgc3BhY2UgaW5zaWRlIGFuIGVsZW1lbnQgaXMgaGFuZGxlZC4iKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlIn1dfSx7bmFtZToiYmxvY2txdW90ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJsb2NrcXVvdGUgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnQgdGhhdCBpcyBxdW90ZWQgZnJvbSBhbm90aGVyIHNvdXJjZSwgb3B0aW9uYWxseSB3aXRoIGEgY2l0YXRpb24gd2hpY2ggbXVzdCBiZSB3aXRoaW4gYSBmb290ZXIgb3IgY2l0ZSBlbGVtZW50LCBhbmQgb3B0aW9uYWxseSB3aXRoIGluLWxpbmUgY2hhbmdlcyBzdWNoIGFzIGFubm90YXRpb25zIGFuZCBhYmJyZXZpYXRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmxvY2txdW90ZSJ9XX0se25hbWU6Im9sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2wgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBvZiBpdGVtcywgd2hlcmUgdGhlIGl0ZW1zIGhhdmUgYmVlbiBpbnRlbnRpb25hbGx5IG9yZGVyZWQsIHN1Y2ggdGhhdCBjaGFuZ2luZyB0aGUgb3JkZXIgd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicmV2ZXJzZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBhcmUgc3BlY2lmaWVkIGluIHJldmVyc2VkIG9yZGVyLiJ9fSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaW50ZWdlciBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBzdGFydCB2YWx1ZSBmb3IgbnVtYmVyaW5nIHRoZSBpbmRpdmlkdWFsIGxpc3QgaXRlbXMuIEFsdGhvdWdoIHRoZSBvcmRlcmluZyB0eXBlIG9mIGxpc3QgZWxlbWVudHMgbWlnaHQgYmUgUm9tYW4gbnVtZXJhbHMsIHN1Y2ggYXMgWFhYSSwgb3IgbGV0dGVycywgdGhlIHZhbHVlIG9mIHN0YXJ0IGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBhIG51bWJlci4gVG8gc3RhcnQgbnVtYmVyaW5nIGVsZW1lbnRzIGZyb20gdGhlIGxldHRlciAiQyIsIHVzZSBgPG9sIHN0YXJ0PSIzIj5gLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuJ319LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoibHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgJ2EnYCBpbmRpY2F0ZXMgbG93ZXJjYXNlIGxldHRlcnMsXG4qICAgYCdBJ2AgaW5kaWNhdGVzIHVwcGVyY2FzZSBsZXR0ZXJzLFxuKiAgIGAnaSdgIGluZGljYXRlcyBsb3dlcmNhc2UgUm9tYW4gbnVtZXJhbHMsXG4qICAgYCdJJ2AgaW5kaWNhdGVzIHVwcGVyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBhbmQgYCcxJ2AgaW5kaWNhdGVzIG51bWJlcnMgKGRlZmF1bHQpLlxuXG5UaGUgdHlwZSBzZXQgaXMgdXNlZCBmb3IgdGhlIGVudGlyZSBsaXN0IHVubGVzcyBhIGRpZmZlcmVudCBbYHR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkjYXR0ci10eXBlKSBhdHRyaWJ1dGUgaXMgdXNlZCB3aXRoaW4gYW4gZW5jbG9zZWQgW2A8bGk+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIFwiVGhlIEhUTUwgPGxpPiBlbGVtZW50IGlzIHVzZWQgdG8gcmVwcmVzZW50IGFuIGl0ZW0gaW4gYSBsaXN0LiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIHBhcmVudCBlbGVtZW50OiBhbiBvcmRlcmVkIGxpc3QgKDxvbD4pLCBhbiB1bm9yZGVyZWQgbGlzdCAoPHVsPiksIG9yIGEgbWVudSAoPG1lbnU+KS4gSW4gbWVudXMgYW5kIHVub3JkZXJlZCBsaXN0cywgbGlzdCBpdGVtcyBhcmUgdXN1YWxseSBkaXNwbGF5ZWQgdXNpbmcgYnVsbGV0IHBvaW50cy4gSW4gb3JkZXJlZCBsaXN0cywgdGhleSBhcmUgdXN1YWxseSBkaXNwbGF5ZWQgd2l0aCBhbiBhc2NlbmRpbmcgY291bnRlciBvbiB0aGUgbGVmdCwgc3VjaCBhcyBhIG51bWJlciBvciBsZXR0ZXIuXCIpIGVsZW1lbnQuXG5cbioqTm90ZToqKiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS5cblxuVW5sZXNzIHRoZSB2YWx1ZSBvZiB0aGUgbGlzdCBudW1iZXIgbWF0dGVycyAoZS5nLiBpbiBsZWdhbCBvciB0ZWNobmljYWwgZG9jdW1lbnRzIHdoZXJlIGl0ZW1zIGFyZSB0byBiZSByZWZlcmVuY2VkIGJ5IHRoZWlyIG51bWJlci9sZXR0ZXIpLCB0aGUgQ1NTIFtgbGlzdC1zdHlsZS10eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtdHlwZSBcIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuXCIpIHByb3BlcnR5IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIn19LHtuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHRoZSBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoZSBgY29tcGFjdGAgYXR0cmlidXRlLCB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnR5IFtgbGluZS1oZWlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQgIlRoZSBsaW5lLWhlaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYW1vdW50IG9mIHNwYWNlIHVzZWQgZm9yIGxpbmVzLCBzdWNoIGFzIGluIHRleHQuIE9uIGJsb2NrLWxldmVsIGVsZW1lbnRzLCBpdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGxpbmUgYm94ZXMgd2l0aGluIHRoZSBlbGVtZW50LiBPbiBub24tcmVwbGFjZWQgaW5saW5lIGVsZW1lbnRzLCBpdCBzcGVjaWZpZXMgdGhlIGhlaWdodCB0aGF0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIGxpbmUgYm94IGhlaWdodC4iKSBjYW4gYmUgdXNlZCB3aXRoIGEgdmFsdWUgb2YgYDgwJWAuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCJ9XX0se25hbWU6InVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdWwgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBvZiBpdGVtcywgd2hlcmUgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpcyBub3QgaW1wb3J0YW50IOKAlCB0aGF0IGlzLCB3aGVyZSBjaGFuZ2luZyB0aGUgb3JkZXIgd291bGQgbm90IG1hdGVyaWFsbHkgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29tcGFjdCIsZGVzY3JpcHRpb246J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaGludHMgdGhhdCB0aGUgbGlzdCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYSBjb21wYWN0IHN0eWxlLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBhdHRyaWJ1dGUgZGVwZW5kcyBvbiB0aGUgdXNlciBhZ2VudCBhbmQgaXQgZG9lc25cJ3Qgd29yayBpbiBhbGwgYnJvd3NlcnMuXG5cbioqVXNhZ2Ugbm90ZTrCoCoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPHVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCAiVGhlIEhUTUwgPHVsPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gdW5vcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIGJ1bGxldGVkIGxpc3QuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gZ2l2ZSBhIHNpbWlsYXIgZWZmZWN0IGFzIHRoZSBgY29tcGFjdGAgYXR0cmlidXRlLCB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnR5IFtsaW5lLWhlaWdodF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvbGluZS1oZWlnaHQpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsIn1dfSx7bmFtZToibGkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsaSBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IGl0ZW0uIElmIGl0cyBwYXJlbnQgZWxlbWVudCBpcyBhbiBvbCwgdWwsIG9yIG1lbnUgZWxlbWVudCwgdGhlbiB0aGUgZWxlbWVudCBpcyBhbiBpdGVtIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGxpc3QsIGFzIGRlZmluZWQgZm9yIHRob3NlIGVsZW1lbnRzLiBPdGhlcndpc2UsIHRoZSBsaXN0IGl0ZW0gaGFzIG5vIGRlZmluZWQgbGlzdC1yZWxhdGVkIHJlbGF0aW9uc2hpcCB0byBhbnkgb3RoZXIgbGkgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaW50ZWdlciBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBjdXJyZW50IG9yZGluYWwgdmFsdWUgb2YgdGhlIGxpc3QgaXRlbSBhcyBkZWZpbmVkIGJ5IHRoZSBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LiBUaGUgb25seSBhbGxvd2VkIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBhIG51bWJlciwgZXZlbiBpZiB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgd2l0aCBSb21hbiBudW1lcmFscyBvciBsZXR0ZXJzLiBMaXN0IGl0ZW1zIHRoYXQgZm9sbG93IHRoaXMgb25lIGNvbnRpbnVlIG51bWJlcmluZyBmcm9tIHRoZSB2YWx1ZSBzZXQuIFRoZSAqKnZhbHVlKiogYXR0cmlidXRlIGhhcyBubyBtZWFuaW5nIGZvciB1bm9yZGVyZWQgbGlzdHMgKFtgPHVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCAiVGhlIEhUTUwgPHVsPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gdW5vcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIGJ1bGxldGVkIGxpc3QuIikpIG9yIGZvciBtZW51cyAoW2A8bWVudT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpKS5cblxuKipOb3RlKio6IFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG4qKk5vdGU6KiogUHJpb3IgdG8gR2Vja2/CoDkuMCwgbmVnYXRpdmUgdmFsdWVzIHdlcmUgaW5jb3JyZWN0bHkgY29udmVydGVkIHRvIDAuIFN0YXJ0aW5nIGluIEdlY2tvwqA5LjAgYWxsIGludGVnZXIgdmFsdWVzIGFyZSBjb3JyZWN0bHkgcGFyc2VkLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246J1RoaXMgY2hhcmFjdGVyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG51bWJlcmluZyB0eXBlOlxuXG4qICAgYGFgOiBsb3dlcmNhc2UgbGV0dGVyc1xuKiAgIGBBYDogdXBwZXJjYXNlIGxldHRlcnNcbiogICBgaWA6IGxvd2VyY2FzZSBSb21hbiBudW1lcmFsc1xuKiAgIGBJYDogdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYDFgOiBudW1iZXJzXG5cblRoaXMgdHlwZSBvdmVycmlkZXMgdGhlIG9uZSB1c2VkIGJ5IGl0cyBwYXJlbnQgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudCwgaWYgYW55LlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gZGVwcmVjYXRlZDogdXNlIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlICJUaGUgbGlzdC1zdHlsZS10eXBlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJrZXIgKHN1Y2ggYXMgYSBkaXNjLCBjaGFyYWN0ZXIsIG9yIGN1c3RvbSBjb3VudGVyIHN0eWxlKSBvZiBhIGxpc3QgaXRlbSBlbGVtZW50LiIpIHByb3BlcnR5IGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSJ9XX0se25hbWU6ImRsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGwgZWxlbWVudCByZXByZXNlbnRzIGFuIGFzc29jaWF0aW9uIGxpc3QgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgbmFtZS12YWx1ZSBncm91cHMgKGEgZGVzY3JpcHRpb24gbGlzdCkuIEEgbmFtZS12YWx1ZSBncm91cCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBuYW1lcyAoZHQgZWxlbWVudHMpIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHZhbHVlcyAoZGQgZWxlbWVudHMpLCBpZ25vcmluZyBhbnkgbm9kZXMgb3RoZXIgdGhhbiBkdCBhbmQgZGQgZWxlbWVudHMuIFdpdGhpbiBhIHNpbmdsZSBkbCBlbGVtZW50LCB0aGVyZSBzaG91bGQgbm90IGJlIG1vcmUgdGhhbiBvbmUgZHQgZWxlbWVudCBmb3IgZWFjaCBuYW1lLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RsIn1dfSx7bmFtZToiZHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkdCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRlcm0sIG9yIG5hbWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZHQifV19LHtuYW1lOiJkZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24sIGRlZmluaXRpb24sIG9yIHZhbHVlLCBwYXJ0IG9mIGEgdGVybS1kZXNjcmlwdGlvbiBncm91cCBpbiBhIGRlc2NyaXB0aW9uIGxpc3QgKGRsIGVsZW1lbnQpLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJJZiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB5ZXNgLCB0aGUgZGVmaW5pdGlvbiB0ZXh0IHdpbGwgbm90IHdyYXAuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBub2AuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZCJ9XX0se25hbWU6ImZpZ3VyZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZ3VyZSBlbGVtZW50IHJlcHJlc2VudHMgc29tZSBmbG93IGNvbnRlbnQsIG9wdGlvbmFsbHkgd2l0aCBhIGNhcHRpb24sIHRoYXQgaXMgc2VsZi1jb250YWluZWQgKGxpa2UgYSBjb21wbGV0ZSBzZW50ZW5jZSkgYW5kIGlzIHR5cGljYWxseSByZWZlcmVuY2VkIGFzIGEgc2luZ2xlIHVuaXQgZnJvbSB0aGUgbWFpbiBmbG93IG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWd1cmUifV19LHtuYW1lOiJmaWdjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlnY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWdjYXB0aW9uIGVsZW1lbnQncyBwYXJlbnQgZmlndXJlIGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWdjYXB0aW9uIn1dfSx7bmFtZToibWFpbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1haW4gZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIGJvZHkgb2YgYSBkb2N1bWVudCBvciBhcHBsaWNhdGlvbi4gVGhlIG1haW4gY29udGVudCBhcmVhIGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyBkaXJlY3RseSByZWxhdGVkIHRvIG9yIGV4cGFuZHMgdXBvbiB0aGUgY2VudHJhbCB0b3BpYyBvZiBhIGRvY3VtZW50IG9yIGNlbnRyYWwgZnVuY3Rpb25hbGl0eSBvZiBhbiBhcHBsaWNhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYWluIn1dfSx7bmFtZToiZGl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGl2IGVsZW1lbnQgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhdCBhbGwuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiBJdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBjbGFzcywgbGFuZywgYW5kIHRpdGxlIGF0dHJpYnV0ZXMgdG8gbWFyayB1cCBzZW1hbnRpY3MgY29tbW9uIHRvIGEgZ3JvdXAgb2YgY29uc2VjdXRpdmUgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGl2In1dfSx7bmFtZToiYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGEgZWxlbWVudCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUsIHRoZW4gaXQgcmVwcmVzZW50cyBhIGh5cGVybGluayAoYSBoeXBlcnRleHQgYW5jaG9yKSBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udGFpbnMgYSBVUkwgb3IgYSBVUkwgZnJhZ21lbnQgdGhhdCB0aGUgaHlwZXJsaW5rIHBvaW50cyB0by4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfOiBhIHRhYiwgd2luZG93LCBvciBgPGlmcmFtZT5gLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSBVUkwgaW50byBhIG5ldyBicm93c2luZyBjb250ZXh0LiBUaGlzIGlzIHVzdWFsbHkgYSB0YWIsIGJ1dCB1c2VycyBjYW4gY29uZmlndXJlIGJyb3dzZXJzIHRvIHVzZSBuZXcgd2luZG93cyBpbnN0ZWFkLlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSAiaGlnaGVzdCIgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuKipOb3RlOioqIFdoZW4gdXNpbmcgYHRhcmdldGAsIGNvbnNpZGVyIGFkZGluZyBgcmVsPSJub3JlZmVycmVyImAgdG8gYXZvaWQgZXhwbG9pdGF0aW9uIG9mIHRoZSBgd2luZG93Lm9wZW5lcmAgQVBJLlxuXG4qKk5vdGU6KiogTGlua2luZyB0byBhbm90aGVyIHBhZ2UgdXNpbmcgYHRhcmdldD0iX2JsYW5rImAgd2lsbCBydW4gdGhlIG5ldyBwYWdlIG9uIHRoZSBzYW1lIHByb2Nlc3MgYXMgeW91ciBwYWdlLiBJZiB0aGUgbmV3IHBhZ2UgaXMgZXhlY3V0aW5nIGV4cGVuc2l2ZSBKUywgeW91ciBwYWdlXCdzIHBlcmZvcm1hbmNlIG1heSBzdWZmZXIuIFRvIGF2b2lkIHRoaXMgdXNlIGByZWw9Im5vb3BlbmVyImAuJ319LHtuYW1lOiJkb3dubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5zdHJ1Y3RzIGJyb3dzZXJzIHRvIGRvd25sb2FkIGEgVVJMIGluc3RlYWQgb2YgbmF2aWdhdGluZyB0byBpdCwgc28gdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBzYXZlIGl0IGFzIGEgbG9jYWwgZmlsZS4gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgYSB2YWx1ZSwgaXQgaXMgdXNlZCBhcyB0aGUgcHJlLWZpbGxlZCBmaWxlIG5hbWUgaW4gdGhlIFNhdmUgcHJvbXB0ICh0aGUgdXNlciBjYW4gc3RpbGwgY2hhbmdlIHRoZSBmaWxlIG5hbWUgaWYgdGhleSB3YW50KS4gVGhlcmUgYXJlIG5vIHJlc3RyaWN0aW9ucyBvbiBhbGxvd2VkIHZhbHVlcywgdGhvdWdoIGAvYCBhbmQgYFxcYCBhcmUgY29udmVydGVkIHRvIHVuZGVyc2NvcmVzLiBNb3N0IGZpbGUgc3lzdGVtcyBsaW1pdCBzb21lIHB1bmN0dWF0aW9uIGluIGZpbGUgbmFtZXMsIGFuZCBicm93c2VycyB3aWxsIGFkanVzdCB0aGUgc3VnZ2VzdGVkIG5hbWUgYWNjb3JkaW5nbHkuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoaXMgYXR0cmlidXRlIG9ubHkgd29ya3MgZm9yIFtzYW1lLW9yaWdpbiBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kpLlxuKiAgIEFsdGhvdWdoIEhUVFAocykgVVJMcyBuZWVkIHRvIGJlIGluIHRoZSBzYW1lLW9yaWdpbiwgW2BibG9iOmAgVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC5jcmVhdGVPYmplY3RVUkwpIGFuZCBbYGRhdGE6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJcykgYXJlIGFsbG93ZWQgc28gdGhhdCBjb250ZW50IGdlbmVyYXRlZCBieSBKYXZhU2NyaXB0LCBzdWNoIGFzIHBpY3R1cmVzIGNyZWF0ZWQgaW4gYW4gaW1hZ2UtZWRpdG9yIFdlYiBhcHAsIGNhbiBiZSBkb3dubG9hZGVkLlxuKiAgIElmIHRoZSBIVFRQIGhlYWRlciBbYENvbnRlbnQtRGlzcG9zaXRpb246YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtRGlzcG9zaXRpb24pIGdpdmVzIGEgZGlmZmVyZW50IGZpbGVuYW1lIHRoYW4gdGhpcyBhdHRyaWJ1dGUsIHRoZSBIVFRQIGhlYWRlciB0YWtlcyBwcmlvcml0eSBvdmVyIHRoaXMgYXR0cmlidXRlLlxuKiAgIElmIGBDb250ZW50LURpc3Bvc2l0aW9uOmAgaXMgc2V0IHRvIGBpbmxpbmVgLCBGaXJlZm94IHByaW9yaXRpemVzIGBDb250ZW50LURpc3Bvc2l0aW9uYCwgbGlrZSB0aGUgZmlsZW5hbWUgY2FzZSwgd2hpbGUgQ2hyb21lIHByaW9yaXRpemVzIHRoZSBgZG93bmxvYWRgIGF0dHJpYnV0ZS4ifX0se25hbWU6InBpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0NvbnRhaW5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgVVJMcyB0byB3aGljaCwgd2hlbiB0aGUgaHlwZXJsaW5rIGlzIGZvbGxvd2VkLCBbYFBPU1RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL01ldGhvZHMvUE9TVCAiVGhlIEhUVFAgUE9TVCBtZXRob2Qgc2VuZHMgZGF0YSB0byB0aGUgc2VydmVyLiBUaGUgdHlwZSBvZiB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCBpcyBpbmRpY2F0ZWQgYnkgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuIikgcmVxdWVzdHMgd2l0aCB0aGUgYm9keSBgUElOR2Agd2lsbCBiZSBzZW50IGJ5IHRoZSBicm93c2VyIChpbiB0aGUgYmFja2dyb3VuZCkuIFR5cGljYWxseSB1c2VkIGZvciB0cmFja2luZy4nfX0se25hbWU6InJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIHRhcmdldCBvYmplY3QgdG8gdGhlIGxpbmsgb2JqZWN0LiBUaGUgdmFsdWUgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBbbGluayB0eXBlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9MaW5rX3R5cGVzKS4ifX0se25hbWU6ImhyZWZsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGh1bWFuIGxhbmd1YWdlIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5LiBBbGxvd2VkIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSBbQkNQNDddKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0ICJUYWdzIGZvciBJZGVudGlmeWluZyBMYW5ndWFnZXMiKS4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NwZWNpZmllcyB0aGUgbWVkaWEgdHlwZSBpbiB0aGUgZm9ybSBvZiBhIFtNSU1FIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvTUlNRV90eXBlICJNSU1FIHR5cGU6IEHCoE1JTUUgdHlwZcKgKG5vdyBwcm9wZXJseSBjYWxsZWQgIm1lZGlhIHR5cGUiLCBidXTCoGFsc28gc29tZXRpbWVzICJjb250ZW50IHR5cGUiKSBpcyBhIHN0cmluZyBzZW50IGFsb25nwqB3aXRoIGEgZmlsZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIHRoZSBmaWxlIChkZXNjcmliaW5nIHRoZSBjb250ZW50IGZvcm1hdCwgZm9yIGV4YW1wbGUsIGEgc291bmQgZmlsZSBtaWdodCBiZSBsYWJlbGVkwqBhdWRpby9vZ2csIG9yIGFuIGltYWdlIGZpbGXCoGltYWdlL3BuZykuIikgZm9yIHRoZSBsaW5rZWQgVVJMLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnksIHdpdGggbm8gYnVpbHQtaW4gZnVuY3Rpb25hbGl0eS4nfX0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgVVJMOlxuXG4qICAgYCduby1yZWZlcnJlcidgIG1lYW5zIHRoZSBgUmVmZXJlcjpgIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGAnbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUnYCBtZWFucyBubyBgUmVmZXJlcjpgIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IEhUVFBTLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLlxuKiAgIGAnb3JpZ2luJ2AgbWVhbnMgdGhlIHJlZmVycmVyIHdpbGwgYmUgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBvZiB0aGUgcGFnZSwgbm90IGluY2x1ZGluZyBpbmZvcm1hdGlvbiBhZnRlciB0aGUgZG9tYWluLlxuKiAgIGAnb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2AgbWVhbmluZyB0aGF0IG5hdmlnYXRpb25zIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXIncyBwYXRoLlxuKiAgIGAnc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbidgXG4qICAgYCd1bnNhZmUtdXJsJ2AgbWVhbnMgdGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIGRhdGEgZnJvbSBzZWN1cmUgVVJMcyB0byBpbnNlY3VyZSBvbmVzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSJ9XX0se25hbWU6ImVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZW0gZWxlbWVudCByZXByZXNlbnRzIHN0cmVzcyBlbXBoYXNpcyBvZiBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZW0ifV19LHtuYW1lOiJzdHJvbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdHJvbmcgZWxlbWVudCByZXByZXNlbnRzIHN0cm9uZyBpbXBvcnRhbmNlLCBzZXJpb3VzbmVzcywgb3IgdXJnZW5jeSBmb3IgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0cm9uZyJ9XX0se25hbWU6InNtYWxsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc21hbGwgZWxlbWVudCByZXByZXNlbnRzIHNpZGUgY29tbWVudHMgc3VjaCBhcyBzbWFsbCBwcmludC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbWFsbCJ9XX0se25hbWU6InMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzIGVsZW1lbnQgcmVwcmVzZW50cyBjb250ZW50cyB0aGF0IGFyZSBubyBsb25nZXIgYWNjdXJhdGUgb3Igbm8gbG9uZ2VyIHJlbGV2YW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3MifV19LHtuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2l0ZSBlbGVtZW50IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8gYSBjcmVhdGl2ZSB3b3JrLiBJdCBtdXN0IGluY2x1ZGUgdGhlIHRpdGxlIG9mIHRoZSB3b3JrIG9yIHRoZSBuYW1lIG9mIHRoZSBhdXRob3IocGVyc29uLCBwZW9wbGUgb3Igb3JnYW5pemF0aW9uKSBvciBhbiBVUkwgcmVmZXJlbmNlLCBvciBhIHJlZmVyZW5jZSBpbiBhYmJyZXZpYXRlZCBmb3JtIGFzIHBlciB0aGUgY29udmVudGlvbnMgdXNlZCBmb3IgdGhlIGFkZGl0aW9uIG9mIGNpdGF0aW9uIG1ldGFkYXRhLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NpdGUifV19LHtuYW1lOiJxIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcSBlbGVtZW50IHJlcHJlc2VudHMgc29tZSBwaHJhc2luZyBjb250ZW50IHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgYSBVUkwgdGhhdCBkZXNpZ25hdGVzIGEgc291cmNlIGRvY3VtZW50IG9yIG1lc3NhZ2UgZm9yIHRoZSBpbmZvcm1hdGlvbiBxdW90ZWQuIFRoaXMgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHBvaW50IHRvIGluZm9ybWF0aW9uIGV4cGxhaW5pbmcgdGhlIGNvbnRleHQgb3IgdGhlIHJlZmVyZW5jZSBmb3IgdGhlIHF1b3RlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3EifV19LHtuYW1lOiJkZm4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZm4gZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZWZpbmluZyBpbnN0YW5jZSBvZiBhIHRlcm0uIFRoZSBwYXJhZ3JhcGgsIGRlc2NyaXB0aW9uIGxpc3QgZ3JvdXAsIG9yIHNlY3Rpb24gdGhhdCBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBvZiB0aGUgZGZuIGVsZW1lbnQgbXVzdCBhbHNvIGNvbnRhaW4gdGhlIGRlZmluaXRpb24ocykgZm9yIHRoZSB0ZXJtIGdpdmVuIGJ5IHRoZSBkZm4gZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZm4ifV19LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWJiciBlbGVtZW50IHJlcHJlc2VudHMgYW4gYWJicmV2aWF0aW9uIG9yIGFjcm9ueW0sIG9wdGlvbmFsbHkgd2l0aCBpdHMgZXhwYW5zaW9uLiBUaGUgdGl0bGUgYXR0cmlidXRlIG1heSBiZSB1c2VkIHRvIHByb3ZpZGUgYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24uIFRoZSBhdHRyaWJ1dGUsIGlmIHNwZWNpZmllZCwgbXVzdCBjb250YWluIGFuIGV4cGFuc2lvbiBvZiB0aGUgYWJicmV2aWF0aW9uLCBhbmQgbm90aGluZyBlbHNlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FiYnIifV19LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnVieSBlbGVtZW50IGFsbG93cyBvbmUgb3IgbW9yZSBzcGFucyBvZiBwaHJhc2luZyBjb250ZW50IHRvIGJlIG1hcmtlZCB3aXRoIHJ1YnkgYW5ub3RhdGlvbnMuIFJ1YnkgYW5ub3RhdGlvbnMgYXJlIHNob3J0IHJ1bnMgb2YgdGV4dCBwcmVzZW50ZWQgYWxvbmdzaWRlIGJhc2UgdGV4dCwgcHJpbWFyaWx5IHVzZWQgaW4gRWFzdCBBc2lhbiB0eXBvZ3JhcGh5IGFzIGEgZ3VpZGUgZm9yIHByb251bmNpYXRpb24gb3IgdG8gaW5jbHVkZSBvdGhlciBhbm5vdGF0aW9ucy4gSW4gSmFwYW5lc2UsIHRoaXMgZm9ybSBvZiB0eXBvZ3JhcGh5IGlzIGFsc28ga25vd24gYXMgZnVyaWdhbmEuIFJ1YnkgdGV4dCBjYW4gYXBwZWFyIG9uIGVpdGhlciBzaWRlLCBhbmQgc29tZXRpbWVzIGJvdGggc2lkZXMsIG9mIHRoZSBiYXNlIHRleHQsIGFuZCBpdCBpcyBwb3NzaWJsZSB0byBjb250cm9sIGl0cyBwb3NpdGlvbiB1c2luZyBDU1MuIEEgbW9yZSBjb21wbGV0ZSBpbnRyb2R1Y3Rpb24gdG8gcnVieSBjYW4gYmUgZm91bmQgaW4gdGhlIFVzZSBDYXNlcyAmIEV4cGxvcmF0b3J5IEFwcHJvYWNoZXMgZm9yIFJ1YnkgTWFya3VwIGRvY3VtZW50IGFzIHdlbGwgYXMgaW4gQ1NTIFJ1YnkgTW9kdWxlIExldmVsIDEuIFtSVUJZLVVDXSBbQ1NTUlVCWV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydWJ5In1dfSx7bmFtZToicmIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByYiBlbGVtZW50IG1hcmtzIHRoZSBiYXNlIHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCwgaXQgZG9lc24ndCByZXByZXNlbnQgYW55dGhpbmcgaXRzZWxmLCBidXQgaXRzIHBhcmVudCBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9yYiJ9XX0se25hbWU6InJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnQgZWxlbWVudCBtYXJrcyB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4gV2hlbiBpdCBpcyB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQgb3Igb2YgYW4gcnRjIGVsZW1lbnQgdGhhdCBpcyBpdHNlbGYgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgYW5jZXN0b3IgcnVieSBlbGVtZW50IHVzZXMgaXQgYXMgcGFydCBvZiBkZXRlcm1pbmluZyB3aGF0IGl0IHJlcHJlc2VudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnQifV19LHtuYW1lOiJycCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJwIGVsZW1lbnQgaXMgdXNlZCB0byBwcm92aWRlIGZhbGxiYWNrIHRleHQgdG8gYmUgc2hvd24gYnkgdXNlciBhZ2VudHMgdGhhdCBkb24ndCBzdXBwb3J0IHJ1YnkgYW5ub3RhdGlvbnMuIE9uZSB3aWRlc3ByZWFkIGNvbnZlbnRpb24gaXMgdG8gcHJvdmlkZSBwYXJlbnRoZXNlcyBhcm91bmQgdGhlIHJ1YnkgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnAifV19LHtuYW1lOiJ0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGltZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNvbnRlbnRzLCBhbG9uZyB3aXRoIGEgbWFjaGluZS1yZWFkYWJsZSBmb3JtIG9mIHRob3NlIGNvbnRlbnRzIGluIHRoZSBkYXRldGltZSBhdHRyaWJ1dGUuIFRoZSBraW5kIG9mIGNvbnRlbnQgaXMgbGltaXRlZCB0byB2YXJpb3VzIGtpbmRzIG9mIGRhdGVzLCB0aW1lcywgdGltZS16b25lIG9mZnNldHMsIGFuZCBkdXJhdGlvbnMsIGFzIGRlc2NyaWJlZCBiZWxvdy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQvb3IgZGF0ZSBvZiB0aGUgZWxlbWVudCBhbmQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlIGZvcm1hdHMgZGVzY3JpYmVkIGJlbG93LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpbWUifV19LHtuYW1lOiJjb2RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29kZSBlbGVtZW50IHJlcHJlc2VudHMgYSBmcmFnbWVudCBvZiBjb21wdXRlciBjb2RlLiBUaGlzIGNvdWxkIGJlIGFuIFhNTCBlbGVtZW50IG5hbWUsIGEgZmlsZSBuYW1lLCBhIGNvbXB1dGVyIHByb2dyYW0sIG9yIGFueSBvdGhlciBzdHJpbmcgdGhhdCBhIGNvbXB1dGVyIHdvdWxkIHJlY29nbml6ZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2RlIn1dfSx7bmFtZToidmFyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHZhcmlhYmxlLiBUaGlzIGNvdWxkIGJlIGFuIGFjdHVhbCB2YXJpYWJsZSBpbiBhIG1hdGhlbWF0aWNhbCBleHByZXNzaW9uIG9yIHByb2dyYW1taW5nIGNvbnRleHQsIGFuIGlkZW50aWZpZXIgcmVwcmVzZW50aW5nIGEgY29uc3RhbnQsIGEgc3ltYm9sIGlkZW50aWZ5aW5nIGEgcGh5c2ljYWwgcXVhbnRpdHksIGEgZnVuY3Rpb24gcGFyYW1ldGVyLCBvciBqdXN0IGJlIGEgdGVybSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgaW4gcHJvc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmFyIn1dfSx7bmFtZToic2FtcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNhbXAgZWxlbWVudCByZXByZXNlbnRzIHNhbXBsZSBvciBxdW90ZWQgb3V0cHV0IGZyb20gYW5vdGhlciBwcm9ncmFtIG9yIGNvbXB1dGluZyBzeXN0ZW0uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2FtcCJ9XX0se25hbWU6ImtiZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGtiZCBlbGVtZW50IHJlcHJlc2VudHMgdXNlciBpbnB1dCAodHlwaWNhbGx5IGtleWJvYXJkIGlucHV0LCBhbHRob3VnaCBpdCBtYXkgYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudCBvdGhlciBpbnB1dCwgc3VjaCBhcyB2b2ljZSBjb21tYW5kcykuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQva2JkIn1dfSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3ViIGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1YnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdWIifV19LHtuYW1lOiJzdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdXAgZWxlbWVudCByZXByZXNlbnRzIGEgc3VwZXJzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VwIn1dfSx7bmFtZToiaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGkgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IGluIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBvciBvdGhlcndpc2Ugb2Zmc2V0IGZyb20gdGhlIG5vcm1hbCBwcm9zZSBpbiBhIG1hbm5lciBpbmRpY2F0aW5nIGEgZGlmZmVyZW50IHF1YWxpdHkgb2YgdGV4dCwgc3VjaCBhcyBhIHRheG9ub21pYyBkZXNpZ25hdGlvbiwgYSB0ZWNobmljYWwgdGVybSwgYW4gaWRpb21hdGljIHBocmFzZSBmcm9tIGFub3RoZXIgbGFuZ3VhZ2UsIHRyYW5zbGl0ZXJhdGlvbiwgYSB0aG91Z2h0LCBvciBhIHNoaXAgbmFtZSBpbiBXZXN0ZXJuIHRleHRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2kifV19LHtuYW1lOiJiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYiBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgdG8gd2hpY2ggYXR0ZW50aW9uIGlzIGJlaW5nIGRyYXduIGZvciB1dGlsaXRhcmlhbiBwdXJwb3NlcyB3aXRob3V0IGNvbnZleWluZyBhbnkgZXh0cmEgaW1wb3J0YW5jZSBhbmQgd2l0aCBubyBpbXBsaWNhdGlvbiBvZiBhbiBhbHRlcm5hdGUgdm9pY2Ugb3IgbW9vZCwgc3VjaCBhcyBrZXkgd29yZHMgaW4gYSBkb2N1bWVudCBhYnN0cmFjdCwgcHJvZHVjdCBuYW1lcyBpbiBhIHJldmlldywgYWN0aW9uYWJsZSB3b3JkcyBpbiBpbnRlcmFjdGl2ZSB0ZXh0LWRyaXZlbiBzb2Z0d2FyZSwgb3IgYW4gYXJ0aWNsZSBsZWRlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2IifV19LHtuYW1lOiJ1IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgd2l0aCBhbiB1bmFydGljdWxhdGVkLCB0aG91Z2ggZXhwbGljaXRseSByZW5kZXJlZCwgbm9uLXRleHR1YWwgYW5ub3RhdGlvbiwgc3VjaCBhcyBsYWJlbGluZyB0aGUgdGV4dCBhcyBiZWluZyBhIHByb3BlciBuYW1lIGluIENoaW5lc2UgdGV4dCAoYSBDaGluZXNlIHByb3BlciBuYW1lIG1hcmspLCBvciBsYWJlbGluZyB0aGUgdGV4dCBhcyBiZWluZyBtaXNzcGVsdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91In1dfSx7bmFtZToibWFyayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1hcmsgZWxlbWVudCByZXByZXNlbnRzIGEgcnVuIG9mIHRleHQgaW4gb25lIGRvY3VtZW50IG1hcmtlZCBvciBoaWdobGlnaHRlZCBmb3IgcmVmZXJlbmNlIHB1cnBvc2VzLCBkdWUgdG8gaXRzIHJlbGV2YW5jZSBpbiBhbm90aGVyIGNvbnRleHQuIFdoZW4gdXNlZCBpbiBhIHF1b3RhdGlvbiBvciBvdGhlciBibG9jayBvZiB0ZXh0IHJlZmVycmVkIHRvIGZyb20gdGhlIHByb3NlLCBpdCBpbmRpY2F0ZXMgYSBoaWdobGlnaHQgdGhhdCB3YXMgbm90IG9yaWdpbmFsbHkgcHJlc2VudCBidXQgd2hpY2ggaGFzIGJlZW4gYWRkZWQgdG8gYnJpbmcgdGhlIHJlYWRlcidzIGF0dGVudGlvbiB0byBhIHBhcnQgb2YgdGhlIHRleHQgdGhhdCBtaWdodCBub3QgaGF2ZSBiZWVuIGNvbnNpZGVyZWQgaW1wb3J0YW50IGJ5IHRoZSBvcmlnaW5hbCBhdXRob3Igd2hlbiB0aGUgYmxvY2sgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiwgYnV0IHdoaWNoIGlzIG5vdyB1bmRlciBwcmV2aW91c2x5IHVuZXhwZWN0ZWQgc2NydXRpbnkuIFdoZW4gdXNlZCBpbiB0aGUgbWFpbiBwcm9zZSBvZiBhIGRvY3VtZW50LCBpdCBpbmRpY2F0ZXMgYSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIGhpZ2hsaWdodGVkIGR1ZSB0byBpdHMgbGlrZWx5IHJlbGV2YW5jZSB0byB0aGUgdXNlcidzIGN1cnJlbnQgYWN0aXZpdHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFyayJ9XX0se25hbWU6ImJkaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJkaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgdGhhdCBpcyB0byBiZSBpc29sYXRlZCBmcm9tIGl0cyBzdXJyb3VuZGluZ3MgZm9yIHRoZSBwdXJwb3NlcyBvZiBiaWRpcmVjdGlvbmFsIHRleHQgZm9ybWF0dGluZy4gW0JJREldIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRpIn1dfSx7bmFtZToiYmRvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRvIGVsZW1lbnQgcmVwcmVzZW50cyBleHBsaWNpdCB0ZXh0IGRpcmVjdGlvbmFsaXR5IGZvcm1hdHRpbmcgY29udHJvbCBmb3IgaXRzIGNoaWxkcmVuLiBJdCBhbGxvd3MgYXV0aG9ycyB0byBvdmVycmlkZSB0aGUgVW5pY29kZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSBieSBleHBsaWNpdGx5IHNwZWNpZnlpbmcgYSBkaXJlY3Rpb24gb3ZlcnJpZGUuIFtCSURJXSJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXIiLGRlc2NyaXB0aW9uOiJUaGUgZGlyZWN0aW9uIGluIHdoaWNoIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkIGluIHRoaXMgZWxlbWVudCdzIGNvbnRlbnRzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGx0cmA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIGxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLlxuKiAgIGBydGxgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBzaG91bGQgZ28gaW4gYSByaWdodC10by1sZWZ0IGRpcmVjdGlvbi4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JkbyJ9XX0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzcGFuIGVsZW1lbnQgZG9lc24ndCBtZWFuIGFueXRoaW5nIG9uIGl0cyBvd24sIGJ1dCBjYW4gYmUgdXNlZnVsIHdoZW4gdXNlZCB0b2dldGhlciB3aXRoIHRoZSBnbG9iYWwgYXR0cmlidXRlcywgZS5nLiBjbGFzcywgbGFuZywgb3IgZGlyLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zcGFuIn1dfSx7bmFtZToiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiciBlbGVtZW50IHJlcHJlc2VudHMgYSBsaW5lIGJyZWFrLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjbGVhciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGVyZSB0byBiZWdpbiB0aGUgbmV4dCBsaW5lIGFmdGVyIHRoZSBicmVhay4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JyIn1dfSx7bmFtZToid2JyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2JyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsgb3Bwb3J0dW5pdHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvd2JyIn1dfSx7bmFtZToiaW5zIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5zIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhZGRpdGlvbiB0byB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSB0aGF0IGV4cGxhaW5zIHRoZSBjaGFuZ2UsIHN1Y2ggYXMgYSBsaW5rIHRvIG1lZXRpbmcgbWludXRlcyBvciBhIHRpY2tldCBpbiBhIHRyb3VibGVzaG9vdGluZyBzeXN0ZW0uIn0se25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucyJ9XX0se25hbWU6ImRlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRlbCBlbGVtZW50IHJlcHJlc2VudHMgYSByZW1vdmFsIGZyb20gdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIFVSSSBmb3IgYSByZXNvdXJjZSB0aGF0IGV4cGxhaW5zIHRoZSBjaGFuZ2UgKGZvciBleGFtcGxlLCBtZWV0aW5nIG1pbnV0ZXMpLiJ9fSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQgZGF0ZSBvZiB0aGUgY2hhbmdlIGFuZCBtdXN0IGJlIGEgdmFsaWQgZGF0ZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCB0aW1lLiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIHBhcnNlZCBhcyBhIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZywgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHRpbWUgc3RhbXAuIEZvciB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgd2l0aG91dCBhIHRpbWUsIHNlZSBbRm9ybWF0IG9mIGEgdmFsaWQgZGF0ZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2RhdGVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuIFRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyBpZiBpdCBpbmNsdWRlcyBib3RoIGRhdGUgYW5kIHRpbWUgaXMgY292ZXJlZCBpbiBbRm9ybWF0IG9mIGEgdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2xvY2FsX2RhdGVfYW5kX3RpbWVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGVsIn1dfSx7bmFtZToicGljdHVyZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBpY3R1cmUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciB3aGljaCBwcm92aWRlcyBtdWx0aXBsZSBzb3VyY2VzIHRvIGl0cyBjb250YWluZWQgaW1nIGVsZW1lbnQgdG8gYWxsb3cgYXV0aG9ycyB0byBkZWNsYXJhdGl2ZWx5IGNvbnRyb2wgb3IgZ2l2ZSBoaW50cyB0byB0aGUgdXNlciBhZ2VudCBhYm91dCB3aGljaCBpbWFnZSByZXNvdXJjZSB0byB1c2UsIGJhc2VkIG9uIHRoZSBzY3JlZW4gcGl4ZWwgZGVuc2l0eSwgdmlld3BvcnQgc2l6ZSwgaW1hZ2UgZm9ybWF0LCBhbmQgb3RoZXIgZmFjdG9ycy4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSJ9XX0se25hbWU6ImltZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gaW1nIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBpbWFnZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWx0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIGFuIGFsdGVybmF0aXZlIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlLlxuXG4qKk5vdGU6KiogQnJvd3NlcnMgZG8gbm90IGFsd2F5cyBkaXNwbGF5IHRoZSBpbWFnZSByZWZlcmVuY2VkIGJ5IHRoZSBlbGVtZW50LiBUaGlzIGlzIHRoZSBjYXNlIGZvciBub24tZ3JhcGhpY2FsIGJyb3dzZXJzIChpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSBwZW9wbGUgd2l0aCB2aXN1YWwgaW1wYWlybWVudHMpLCBpZiB0aGUgdXNlciBjaG9vc2VzIG5vdCB0byBkaXNwbGF5IGltYWdlcywgb3IgaWYgdGhlIGJyb3dzZXIgY2Fubm90IGRpc3BsYXkgdGhlIGltYWdlIGJlY2F1c2UgaXQgaXMgaW52YWxpZCBvciBhbiBbdW5zdXBwb3J0ZWQgdHlwZV0oI1N1cHBvcnRlZF9pbWFnZV9mb3JtYXRzKS4gSW4gdGhlc2UgY2FzZXMsIHRoZSBicm93c2VyIG1heSByZXBsYWNlIHRoZSBpbWFnZSB3aXRoIHRoZSB0ZXh0IGRlZmluZWQgaW4gdGhpcyBlbGVtZW50XCdzIGBhbHRgIGF0dHJpYnV0ZS4gWW91IHNob3VsZCwgZm9yIHRoZXNlIHJlYXNvbnMgYW5kIG90aGVycywgcHJvdmlkZSBhIHVzZWZ1bCB2YWx1ZSBmb3IgYGFsdGAgd2hlbmV2ZXIgcG9zc2libGUuXG5cbioqTm90ZToqKiBPbWl0dGluZyB0aGlzIGF0dHJpYnV0ZSBhbHRvZ2V0aGVyIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBhIGtleSBwYXJ0IG9mIHRoZSBjb250ZW50LCBhbmQgbm8gdGV4dHVhbCBlcXVpdmFsZW50IGlzIGF2YWlsYWJsZS4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0byBhbiBlbXB0eSBzdHJpbmcgKGBhbHQ9IiJgKSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGltYWdlIGlzIF9ub3RfIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQgKGRlY29yYXRpdmUpLCBhbmQgdGhhdCBub24tdmlzdWFsIGJyb3dzZXJzIG1heSBvbWl0IGl0IGZyb20gcmVuZGVyaW5nLid9fSx7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW1hZ2UgVVJMLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBgPGltZz5gIGVsZW1lbnQuIE9uIGJyb3dzZXJzIHN1cHBvcnRpbmcgYHNyY3NldGAsIGBzcmNgIGlzIHRyZWF0ZWQgbGlrZSBhIGNhbmRpZGF0ZSBpbWFnZSB3aXRoIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIGAxeGAgdW5sZXNzIGFuIGltYWdlIHdpdGggdGhpcyBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGBzcmNzZXQsYCBvciB1bmxlc3MgYHNyY3NldGAgY29udGFpbnMgJ2B3YCcgZGVzY3JpcHRvcnMuIn19LHtuYW1lOiJzcmNzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBwb3NzaWJsZSBpbWFnZSBzb3VyY2VzIGZvciB0aGUgdXNlciBhZ2VudCB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgYSBVUkwgdG8gYW4gaW1hZ2UsXG4yLiAgb3B0aW9uYWxseSwgd2hpdGVzcGFjZSBmb2xsb3dlZCBieSBvbmUgb2Y6XG4gICAgKiAgIEEgd2lkdGggZGVzY3JpcHRvciwgb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5ICdgd2AnLiBUaGUgd2lkdGggZGVzY3JpcHRvciBpcyBkaXZpZGVkIGJ5IHRoZSBzb3VyY2Ugc2l6ZSBnaXZlbiBpbiB0aGUgYHNpemVzYCBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlIHRoZSBlZmZlY3RpdmUgcGl4ZWwgZGVuc2l0eS5cbiAgICAqICAgQSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IsIHdoaWNoIGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5ICdgeGAnLlxuXG5JZiBubyBkZXNjcmlwdG9yIGlzIHNwZWNpZmllZCwgdGhlIHNvdXJjZSBpcyBhc3NpZ25lZCB0aGUgZGVmYXVsdCBkZXNjcmlwdG9yOiBgMXhgLlxuXG5JdCBpcyBpbmNvcnJlY3QgdG8gbWl4IHdpZHRoIGRlc2NyaXB0b3JzIGFuZCBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3JzIGluIHRoZSBzYW1lIGBzcmNzZXRgIGF0dHJpYnV0ZS4gRHVwbGljYXRlIGRlc2NyaXB0b3JzIChmb3IgaW5zdGFuY2UsIHR3byBzb3VyY2VzIGluIHRoZSBzYW1lIGBzcmNzZXRgIHdoaWNoIGFyZSBib3RoIGRlc2NyaWJlZCB3aXRoICdgMnhgJykgYXJlIGFsc28gaW52YWxpZC5cblxuVGhlIHVzZXIgYWdlbnQgc2VsZWN0cyBhbnkgb25lIG9mIHRoZSBhdmFpbGFibGUgc291cmNlcyBhdCBpdHMgZGlzY3JldGlvbi4gVGhpcyBwcm92aWRlcyB0aGVtIHdpdGggc2lnbmlmaWNhbnQgbGVld2F5IHRvIHRhaWxvciB0aGVpciBzZWxlY3Rpb24gYmFzZWQgb24gdGhpbmdzIGxpa2UgdXNlciBwcmVmZXJlbmNlcyBvciBiYW5kd2lkdGggY29uZGl0aW9ucy4gU2VlIG91ciBbUmVzcG9uc2l2ZSBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTGVhcm4vSFRNTC9NdWx0aW1lZGlhX2FuZF9lbWJlZGRpbmcvUmVzcG9uc2l2ZV9pbWFnZXMpIHR1dG9yaWFsIGZvciBhbiBleGFtcGxlLiJ9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlIGZldGNoaW5nIG9mIHRoZSByZWxhdGVkIGltYWdlIG11c3QgYmUgZG9uZSB1c2luZyBDT1JTIG9yIG5vdC4gW0NPUlMtZW5hYmxlZCBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgIlt0YWludGVkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfZW5hYmxlZF9pbWFnZSNXaGF0X2lzX2FfdGFpbnRlZF9jYW52YXMpLiIgVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTonfX0se25hbWU6InVzZW1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIHBhcnRpYWwgVVJMIChzdGFydGluZyB3aXRoIFwnI1wnKSBvZiBhbiBbaW1hZ2UgbWFwXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvRWxlbWVudC9tYXApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudC5cblxuKipOb3RlOioqIFlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBvciBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgZWxlbWVudC4nfX0se25hbWU6ImlzbWFwIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW1hZ2UgaXMgcGFydCBvZiBhIHNlcnZlci1zaWRlIG1hcC4gSWYgc28sIHRoZSBwcmVjaXNlIGNvb3JkaW5hdGVzIG9mIGEgY2xpY2sgYXJlIHNlbnQgdG8gdGhlIHNlcnZlci5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIGlzIGFsbG93ZWQgb25seSBpZiB0aGUgYDxpbWc+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBhbiBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIikgZWxlbWVudCB3aXRoIGEgdmFsaWQgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIGhlaWdodCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLiJ9fSx7bmFtZToiZGVjb2RpbmciLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiBpbWFnZSBkZWNvZGluZyBoaW50IHRvIHRoZSBicm93c2VyLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOiJ9LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246ImBzeW5jYFxuXG5EZWNvZGUgdGhlIGltYWdlIHN5bmNocm9ub3VzbHkgZm9yIGF0b21pYyBwcmVzZW50YXRpb24gd2l0aCBvdGhlciBjb250ZW50LlxuXG5gYXN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2UgYXN5bmNocm9ub3VzbHkgdG8gcmVkdWNlIGRlbGF5IGluIHByZXNlbnRpbmcgb3RoZXIgY29udGVudC5cblxuYGF1dG9gXG5cbkRlZmF1bHQgbW9kZSwgd2hpY2ggaW5kaWNhdGVzIG5vIHByZWZlcmVuY2UgZm9yIHRoZSBkZWNvZGluZyBtb2RlLiBUaGUgYnJvd3NlciBkZWNpZGVzIHdoYXQgaXMgYmVzdCBmb3IgdGhlIHVzZXIuIn0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgdGhlIHJlc291cmNlLiBQcmlvcml0eSBoaW50cyBhcmUgZGVsZWdhdGVkIHVzaW5nIHRoZSB2YWx1ZXM6In0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJgYXV0b2A6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSBpbWFnZS5cblxuYGhpZ2hgOiBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipoaWdoKiogcHJpb3JpdHkuXG5cbmBsb3dgOsKgSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgaW1hZ2UgaXMgb2bCoCoqbG93KiogcHJpb3JpdHkuIn0se25hbWU6ImludHJpbnNpY3NpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSB0ZWxscyB0aGUgYnJvd3NlciB0byBpZ25vcmUgdGhlIGFjdHVhbCBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgYW5kIHByZXRlbmQgaXTigJlzIHRoZSBzaXplIHNwZWNpZmllZCBpbiB0aGUgYXR0cmlidXRlLiBTcGVjaWZpY2FsbHksIHRoZSBpbWFnZSB3b3VsZCByYXN0ZXIgYXQgdGhlc2UgZGltZW5zaW9ucyBhbmQgYG5hdHVyYWxXaWR0aGAvYG5hdHVyYWxIZWlnaHRgIG9uIGltYWdlcyB3b3VsZCByZXR1cm4gdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhpcyBhdHRyaWJ1dGUuIFtFeHBsYWluZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUpLCBbZXhhbXBsZXNdKGh0dHBzOi8vZ29vZ2xlY2hyb21lLmdpdGh1Yi5pby9zYW1wbGVzL2ludHJpbnNpYy1zaXplL2luZGV4Lmh0bWwpIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjoiQSBzdHJpbmcgaW5kaWNhdGluZyB3aGljaCByZWZlcnJlciB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXI6YCBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgXCJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLlwiKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGU6YCBObyBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yIGlmIG5vIHBvbGljeSBpcyBvdGhlcndpc2Ugc3BlY2lmaWVkLlxuKiAgIGBvcmlnaW46YCBUaGUgYFJlZmVyZXJgIGhlYWRlciB3aWxsIGluY2x1ZGUgdGhlIHBhZ2Ugb2Ygb3JpZ2luJ3Mgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW46YCBOYXZpZ2F0aW5nIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBsaW1pdCB0aGUgaW5jbHVkZWQgcmVmZXJyYWwgZGF0YSB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpbmcgZnJvbSB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIGZ1bGwgcGF0aC5cbiogICBgdW5zYWZlLXVybDpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCB0aGUgcGF0aCwgYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZS4gVGhpcyBjYXNlIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4ifSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2Ygc291cmNlIHNpemVzLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mOlxuXG4xLiAgYSBtZWRpYSBjb25kaXRpb24uIFRoaXMgbXVzdCBiZSBvbWl0dGVkIGZvciB0aGUgbGFzdCBpdGVtLlxuMi4gIGEgc291cmNlIHNpemUgdmFsdWUuXG5cblNvdXJjZSBzaXplIHZhbHVlcyBzcGVjaWZ5IHRoZSBpbnRlbmRlZCBkaXNwbGF5IHNpemUgb2YgdGhlIGltYWdlLiBVc2VyIGFnZW50cyB1c2UgdGhlIGN1cnJlbnQgc291cmNlIHNpemUgdG8gc2VsZWN0IG9uZSBvZiB0aGUgc291cmNlcyBzdXBwbGllZCBieSB0aGUgYHNyY3NldGAgYXR0cmlidXRlLCB3aGVuIHRob3NlIHNvdXJjZXMgYXJlIGRlc2NyaWJlZCB1c2luZyB3aWR0aCAoJ2B3YCcpIGRlc2NyaXB0b3JzLiBUaGUgc2VsZWN0ZWQgc291cmNlIHNpemUgYWZmZWN0cyB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlICh0aGUgaW1hZ2XigJlzIGRpc3BsYXkgc2l6ZSBpZiBubyBDU1Mgc3R5bGluZyBpcyBhcHBsaWVkKS4gSWYgdGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSBpcyBhYnNlbnQsIG9yIGNvbnRhaW5zIG5vIHZhbHVlcyB3aXRoIGEgd2lkdGggKGB3YCkgZGVzY3JpcHRvciwgdGhlbiB0aGUgYHNpemVzYCBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ltZyJ9XX0se25hbWU6ImlmcmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlmcmFtZSBlbGVtZW50IHJlcHJlc2VudHMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJMIG9mIHRoZSBwYWdlIHRvIGVtYmVkLiBVc2UgYSB2YWx1ZSBvZiBgYWJvdXQ6YmxhbmtgIHRvIGVtYmVkIGFuIGVtcHR5IHBhZ2UgdGhhdCBjb25mb3JtcyB0byB0aGUgW3NhbWUtb3JpZ2luIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5I0luaGVyaXRlZF9vcmlnaW5zKS4gQWxzbyBub3RlIHRoYXQgcHJvZ3JhbWF0aWNhbGx5IHJlbW92aW5nIGFuIGA8aWZyYW1lPmBcJ3Mgc3JjIGF0dHJpYnV0ZSAoZS5nLiB2aWEgW2BFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVtb3ZlQXR0cmlidXRlICJUaGUgRWxlbWVudCBtZXRob2QgcmVtb3ZlQXR0cmlidXRlKCkgcmVtb3ZlcyB0aGUgYXR0cmlidXRlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIGVsZW1lbnQuIikpIGNhdXNlcyBgYWJvdXQ6YmxhbmtgIHRvIGJlIGxvYWRlZCBpbiB0aGUgZnJhbWUgaW4gRmlyZWZveCAoZnJvbSB2ZXJzaW9uIDY1KSwgQ2hyb21pdW0tYmFzZWQgYnJvd3NlcnMsIGFuZCBTYWZhcmkvaU9TLid9fSx7bmFtZToic3JjZG9jIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmxpbmUgSFRNTCB0byBlbWJlZCwgb3ZlcnJpZGluZyB0aGUgYHNyY2AgYXR0cmlidXRlLiBJZiBhIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYHNyY2RvY2AgYXR0cmlidXRlLCBpdCB3aWxsIGZhbGwgYmFjayB0byB0aGUgVVJMIGluIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHRhcmdldGFibGUgbmFtZSBmb3IgdGhlIGVtYmVkZGVkIGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgY2FuIGJlIHVzZWQgaW4gdGhlIGB0YXJnZXRgIGF0dHJpYnV0ZSBvZiB0aGUgW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpLCBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSwgb3IgW2A8YmFzZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmFzZSAiVGhlIEhUTUwgPGJhc2U+IGVsZW1lbnQgc3BlY2lmaWVzIHRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGNvbnRhaW5lZCB3aXRoaW4gYSBkb2N1bWVudC4gVGhlcmUgY2FuIGJlIG9ubHkgb25lIDxiYXNlPiBlbGVtZW50IGluIGEgZG9jdW1lbnQuIikgZWxlbWVudHM7IHRoZSBgZm9ybXRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBvciBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgZWxlbWVudHM7IG9yIHRoZSBgd2luZG93TmFtZWAgcGFyYW1ldGVyIGluIHRoZSBbYHdpbmRvdy5vcGVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L29wZW4gIlRoZcKgV2luZG93IGludGVyZmFjZVwncyBvcGVuKCkgbWV0aG9kIGxvYWRzIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaW50byB0aGUgYnJvd3NpbmcgY29udGV4dCAod2luZG93LCA8aWZyYW1lPiBvciB0YWIpIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiBJZiB0aGUgbmFtZSBkb2VzblwndCBleGlzdCwgdGhlbiBhIG5ldyB3aW5kb3cgaXMgb3BlbmVkIGFuZCB0aGUgc3BlY2lmaWVkIHJlc291cmNlIGlzIGxvYWRlZCBpbnRvIGl0cyBicm93c2luZyBjb250ZXh0LiIpIG1ldGhvZC4nfX0se25hbWU6InNhbmRib3giLHZhbHVlU2V0OiJzYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQXBwbGllcyBleHRyYSByZXN0cmljdGlvbnMgdG8gdGhlIGNvbnRlbnQgaW4gdGhlIGZyYW1lLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBjYW4gZWl0aGVyIGJlIGVtcHR5IHRvIGFwcGx5IGFsbCByZXN0cmljdGlvbnMsIG9yIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMgdG8gbGlmdCBwYXJ0aWN1bGFyIHJlc3RyaWN0aW9uczpcblxuKiAgIGBhbGxvdy1mb3Jtc2A6IEFsbG93cyB0aGUgcmVzb3VyY2UgdG8gc3VibWl0IGZvcm1zLiBJZiB0aGlzIGtleXdvcmQgaXMgbm90IHVzZWQsIGZvcm0gc3VibWlzc2lvbiBpcyBibG9ja2VkLlxuKiAgIGBhbGxvdy1tb2RhbHNgOiBMZXRzIHRoZSByZXNvdXJjZSBbb3BlbiBtb2RhbCB3aW5kb3dzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNzYW5kYm94ZWQtbW9kYWxzLWZsYWcpLlxuKiAgIGBhbGxvdy1vcmllbnRhdGlvbi1sb2NrYDogTGV0cyB0aGUgcmVzb3VyY2UgW2xvY2sgdGhlIHNjcmVlbiBvcmllbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NjcmVlbi9sb2NrT3JpZW50YXRpb24pLlxuKiAgIGBhbGxvdy1wb2ludGVyLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSB1c2UgdGhlIFtQb2ludGVyIExvY2sgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYkFQSS9Qb2ludGVyX0xvY2spLlxuKiAgIGBhbGxvdy1wb3B1cHNgOiBBbGxvd3MgcG9wdXBzIChzdWNoIGFzIGB3aW5kb3cub3BlbigpYCwgYHRhcmdldD0iX2JsYW5rImAsIG9yIGBzaG93TW9kYWxEaWFsb2coKWApLiBJZiB0aGlzIGtleXdvcmQgaXMgbm90IHVzZWQsIHRoZSBwb3B1cCB3aWxsIHNpbGVudGx5IGZhaWwgdG8gb3Blbi5cbiogICBgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94YDogTGV0cyB0aGUgc2FuZGJveGVkIGRvY3VtZW50IG9wZW4gbmV3IHdpbmRvd3Mgd2l0aG91dCB0aG9zZSB3aW5kb3dzIGluaGVyaXRpbmcgdGhlIHNhbmRib3hpbmcuIEZvciBleGFtcGxlLCB0aGlzIGNhbiBzYWZlbHkgc2FuZGJveCBhbiBhZHZlcnRpc2VtZW50IHdpdGhvdXQgZm9yY2luZyB0aGUgc2FtZSByZXN0cmljdGlvbnMgdXBvbiB0aGUgcGFnZSB0aGUgYWQgbGlua3MgdG8uXG4qICAgYGFsbG93LXByZXNlbnRhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIHN0YXJ0IGEgW3ByZXNlbnRhdGlvbiBzZXNzaW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUHJlc2VudGF0aW9uUmVxdWVzdCkuXG4qICAgYGFsbG93LXNhbWUtb3JpZ2luYDogSWYgdGhpcyB0b2tlbiBpcyBub3QgdXNlZCwgdGhlIHJlc291cmNlIGlzIHRyZWF0ZWQgYXMgYmVpbmcgZnJvbSBhIHNwZWNpYWwgb3JpZ2luIHRoYXQgYWx3YXlzIGZhaWxzIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3NhbWUtb3JpZ2luX3BvbGljeSAic2FtZS1vcmlnaW4gcG9saWN5OiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKS5cbiogICBgYWxsb3ctc2NyaXB0c2A6IExldHMgdGhlIHJlc291cmNlIHJ1biBzY3JpcHRzIChidXQgbm90IGNyZWF0ZSBwb3B1cCB3aW5kb3dzKS5cbiogICBgYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uYCA6IExldHMgdGhlIHJlc291cmNlIHJlcXVlc3QgYWNjZXNzIHRvIHRoZSBwYXJlbnRcJ3Mgc3RvcmFnZSBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgW1N0b3JhZ2UgQWNjZXNzIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1N0b3JhZ2VfQWNjZXNzX0FQSSkuXG4qICAgYGFsbG93LXRvcC1uYXZpZ2F0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGUgb25lIG5hbWVkIGBfdG9wYCkuXG4qICAgYGFsbG93LXRvcC1uYXZpZ2F0aW9uLWJ5LXVzZXItYWN0aXZhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCwgYnV0IG9ubHkgaWYgaW5pdGlhdGVkIGJ5IGEgdXNlciBnZXN0dXJlLlxuXG4qKk5vdGVzIGFib3V0IHNhbmRib3hpbmc6KipcblxuKiAgIFdoZW4gdGhlIGVtYmVkZGVkIGRvY3VtZW50IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGVtYmVkZGluZyBwYWdlLCBpdCBpcyAqKnN0cm9uZ2x5IGRpc2NvdXJhZ2VkKiogdG8gdXNlIGJvdGggYGFsbG93LXNjcmlwdHNgIGFuZCBgYWxsb3ctc2FtZS1vcmlnaW5gLCBhcyB0aGF0IGxldHMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IHJlbW92ZSB0aGUgYHNhbmRib3hgIGF0dHJpYnV0ZSDigJQgbWFraW5nIGl0IG5vIG1vcmUgc2VjdXJlIHRoYW4gbm90IHVzaW5nIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIGF0IGFsbC5cbiogICBTYW5kYm94aW5nIGlzIHVzZWxlc3MgaWYgdGhlIGF0dGFja2VyIGNhbiBkaXNwbGF5IGNvbnRlbnQgb3V0c2lkZSBhIHNhbmRib3hlZCBgaWZyYW1lYCDigJQgc3VjaCBhcyBpZiB0aGUgdmlld2VyIG9wZW5zIHRoZSBmcmFtZSBpbiBhIG5ldyB0YWIuIFN1Y2ggY29udGVudCBzaG91bGQgYmUgYWxzbyBzZXJ2ZWQgZnJvbSBhIF9zZXBhcmF0ZSBvcmlnaW5fIHRvIGxpbWl0IHBvdGVudGlhbCBkYW1hZ2UuXG4qICAgVGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgaXMgdW5zdXBwb3J0ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgOSBhbmQgZWFybGllci4nfX0se25hbWU6InNlYW1sZXNzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJhbGxvd2Z1bGxzY3JlZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTZXQgdG8gYHRydWVgIGlmIHRoZSBgPGlmcmFtZT5gIGNhbiBhY3RpdmF0ZSBmdWxsc2NyZWVuIG1vZGUgYnkgY2FsbGluZyB0aGUgW2ByZXF1ZXN0RnVsbHNjcmVlbigpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVxdWVzdEZ1bGxzY3JlZW4gIlRoZSBFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCkgbWV0aG9kIGlzc3VlcyBhbiBhc3luY2hyb25vdXMgcmVxdWVzdCB0byBtYWtlIHRoZSBlbGVtZW50IGJlIGRpc3BsYXllZCBpbiBmdWxsLXNjcmVlbiBtb2RlLiIpIG1ldGhvZC4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGZyYW1lIGluIENTUyBwaXhlbHMuIERlZmF1bHQgaXMgYDMwMGAuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lIGluIENTUyBwaXhlbHMuIERlZmF1bHQgaXMgYDE1MGAuIn19LHtuYW1lOiJhbGxvdyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIFtmZWF0dXJlIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9GZWF0dXJlX1BvbGljeSkgZm9yIHRoZSBgPGlmcmFtZT5gLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjoiU2V0IHRvIGB0cnVlYCBpZiBhIGNyb3NzLW9yaWdpbiBgPGlmcmFtZT5gIHNob3VsZCBiZSBhbGxvd2VkIHRvIGludm9rZSB0aGUgW1BheW1lbnQgUmVxdWVzdCBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QYXltZW50X1JlcXVlc3RfQVBJKS4ifSx7bmFtZToiYWxsb3dwYXltZW50cmVxdWVzdCIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIGNvbnNpZGVyZWQgYSBsZWdhY3kgYXR0cmlidXRlIGFuZCByZWRlZmluZWQgYXMgYGFsbG93PSJwYXltZW50ImAuJ30se25hbWU6ImNzcCIsZGVzY3JpcHRpb246J0EgW0NvbnRlbnQgU2VjdXJpdHkgUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0NTUCkgZW5mb3JjZWQgZm9yIHRoZSBlbWJlZGRlZCByZXNvdXJjZS4gU2VlIFtgSFRNTElGcmFtZUVsZW1lbnQuY3NwYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJRnJhbWVFbGVtZW50L2NzcCAiVGhlIGNzcCBwcm9wZXJ0eSBvZiB0aGUgSFRNTElGcmFtZUVsZW1lbnQgaW50ZXJmYWNlIHNwZWNpZmllcyB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBhbiBlbWJlZGRlZCBkb2N1bWVudCBtdXN0IGFncmVlIHRvIGVuZm9yY2UgdXBvbiBpdHNlbGYuIikgZm9yIGRldGFpbHMuJ30se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJUaGUgZG93bmxvYWQgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlIGluIHRoZSBgPGlmcmFtZT5gJ3MgYHNyY2AgYXR0cmlidXRlLiBBbGxvd2VkIHZhbHVlczpcblxuYGF1dG9gIChkZWZhdWx0KVxuXG5ObyBwcmVmZXJlbmNlLiBUaGUgYnJvd3NlciB1c2VzIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuYGhpZ2hgXG5cblRoZSByZXNvdXJjZSBzaG91bGQgYmUgZG93bmxvYWRlZCBiZWZvcmUgb3RoZXIgbG93ZXItcHJpb3JpdHkgcGFnZSByZXNvdXJjZXMuXG5cbmBsb3dgXG5cblRoZSByZXNvdXJjZSBzaG91bGQgYmUgZG93bmxvYWRlZCBhZnRlciBvdGhlciBoaWdoZXItcHJpb3JpdHkgcGFnZSByZXNvdXJjZXMuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3JlZmVycmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIGZyYW1lXCdzIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYDogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgKGRlZmF1bHQpOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQgdG8gW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9vcmlnaW4gIm9yaWdpbjogV2ViIGNvbnRlbnRcJ3Mgb3JpZ2luIGlzIGRlZmluZWQgYnkgdGhlIHNjaGVtZSAocHJvdG9jb2wpLCBob3N0IChkb21haW4pLCBhbmQgcG9ydCBvZiB0aGUgVVJMIHVzZWQgdG8gYWNjZXNzIGl0LiBUd28gb2JqZWN0cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBvbmx5IHdoZW4gdGhlIHNjaGVtZSwgaG9zdCwgYW5kIHBvcnQgYWxsIG1hdGNoLiIpcyB3aXRob3V0IFtUTFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVExTICJUTFM6IFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSwgcHJldmlvdXNseSBrbm93biBhcyBTZWN1cmUgU29ja2V0cyBMYXllciAoU1NMKSwgaXMgYSBwcm90b2NvbCB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBjb21tdW5pY2F0ZSBzZWN1cmVseSBhY3Jvc3MgYSBuZXR3b3JrLCBwcmV2ZW50aW5nIHRhbXBlcmluZyB3aXRoIGFuZCBlYXZlc2Ryb3BwaW5nIG9uIGVtYWlsLCB3ZWIgYnJvd3NpbmcsIG1lc3NhZ2luZywgYW5kIG90aGVyIHByb3RvY29scy4iKSAoW0hUVFBTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0hUVFBTICJIVFRQUzogSFRUUFMgKEhUVFAgU2VjdXJlKSBpcyBhbiBlbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUgSFRUUCBwcm90b2NvbC4gSXQgdXN1YWxseSB1c2VzIFNTTCBvciBUTFMgdG8gZW5jcnlwdCBhbGwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGEgY2xpZW50IGFuZCBhIHNlcnZlci4gVGhpcyBzZWN1cmUgY29ubmVjdGlvbiBhbGxvd3MgY2xpZW50cyB0byBzYWZlbHkgZXhjaGFuZ2Ugc2Vuc2l0aXZlIGRhdGEgd2l0aCBhIHNlcnZlciwgZm9yIGV4YW1wbGUgZm9yIGJhbmtpbmcgYWN0aXZpdGllcyBvciBvbmxpbmUgc2hvcHBpbmcuIikpLlxuKiAgIGBvcmlnaW5gOiBUaGUgc2VudCByZWZlcnJlciB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIG9yaWdpbiBvZiB0aGUgcmVmZXJyaW5nIHBhZ2U6IGl0cyBbc2NoZW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0FyY2hpdmUvTW96aWxsYS9VUklTY2hlbWUpLCBbaG9zdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9ob3N0ICJob3N0OiBBIGhvc3QgaXMgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCAob3IgYSBsb2NhbCBuZXR3b3JrKS4gU29tZSBob3N0cyBjYWxsZWQgc2VydmVycyBvZmZlciBhZGRpdGlvbmFsIHNlcnZpY2VzIGxpa2Ugc2VydmluZyB3ZWJwYWdlcyBvciBzdG9yaW5nIGZpbGVzIGFuZCBlbWFpbHMuIiksIGFuZCBbcG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9wb3J0ICJwb3J0OiBGb3IgYSBjb21wdXRlciBjb25uZWN0ZWQgdG8gYSBuZXR3b3JrIHdpdGggYW4gSVAgYWRkcmVzcywgYSBwb3J0IGlzIGEgY29tbXVuaWNhdGlvbiBlbmRwb2ludC4gUG9ydHMgYXJlIGRlc2lnbmF0ZWQgYnkgbnVtYmVycywgYW5kIGJlbG93IDEwMjQgZWFjaCBwb3J0IGlzIGFzc29jaWF0ZWQgYnkgZGVmYXVsdCB3aXRoIGEgc3BlY2lmaWMgcHJvdG9jb2wuIikuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFRoZSByZWZlcnJlciBzZW50IHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuIE5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIHN0aWxsIGluY2x1ZGUgdGhlIHBhdGguXG4qICAgYHNhbWUtb3JpZ2luYDogQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lIG9yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9TYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUgb3JpZ2luOiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4qICAgYHN0cmljdC1vcmlnaW5gOiBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChIVFRQU+KGkkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgdW5zYWZlLXVybGA6IFRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBfYW5kXyB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgW2ZyYWdtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9oYXNoKSwgW3Bhc3N3b3JkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9wYXNzd29yZCksIG9yIFt1c2VybmFtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvdXNlcm5hbWUpKS4gKipUaGlzIHZhbHVlIGlzIHVuc2FmZSoqLCBiZWNhdXNlIGl0IGxlYWtzIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lmcmFtZSJ9XX0se25hbWU6ImVtYmVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZW1iZWQgZWxlbWVudCBwcm92aWRlcyBhbiBpbnRlZ3JhdGlvbiBwb2ludCBmb3IgYW4gZXh0ZXJuYWwgKHR5cGljYWxseSBub24tSFRNTCkgYXBwbGljYXRpb24gb3IgaW50ZXJhY3RpdmUgY29udGVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgVVJMwqBvZiB0aGUgcmVzb3VyY2UgYmVpbmcgZW1iZWRkZWQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgTUlNRcKgdHlwZSB0byB1c2UgdG8gc2VsZWN0IHRoZSBwbHVnLWluIHRvIGluc3RhbnRpYXRlLiJ9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXNwbGF5ZWQgd2lkdGggb2YgdGhlIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gVGhpcyBtdXN0IGJlIGFuIGFic29sdXRlIHZhbHVlOyBwZXJjZW50YWdlcyBhcmUgX25vdF8gYWxsb3dlZC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCBoZWlnaHQgb2YgdGhlIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gVGhpcyBtdXN0IGJlIGFuIGFic29sdXRlIHZhbHVlOyBwZXJjZW50YWdlcyBhcmUgX25vdF8gYWxsb3dlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbWJlZCJ9XX0se25hbWU6Im9iamVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9iamVjdCBlbGVtZW50IGNhbiByZXByZXNlbnQgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIHJlc291cmNlLCB3aWxsIGVpdGhlciBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhcyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhcyBhbiBleHRlcm5hbCByZXNvdXJjZSB0byBiZSBwcm9jZXNzZWQgYnkgYSBwbHVnaW4uIn0sYXR0cmlidXRlczpbe25hbWU6ImRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhZGRyZXNzIG9mIHRoZSByZXNvdXJjZSBhcyBhIHZhbGlkIFVSTC4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgW2NvbnRlbnQgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Db250ZW50X3R5cGUpIG9mIHRoZSByZXNvdXJjZSBzcGVjaWZpZWQgYnkgKipkYXRhKiouIEF0IGxlYXN0IG9uZSBvZiAqKmRhdGEqKiBhbmQgKip0eXBlKiogbXVzdCBiZSBkZWZpbmVkLiJ9fSx7bmFtZToidHlwZW11c3RtYXRjaCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIGlmIHRoZSAqKnR5cGUqKiBhdHRyaWJ1dGUgYW5kIHRoZSBhY3R1YWwgW2NvbnRlbnQgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Db250ZW50X3R5cGUpIG9mIHRoZSByZXNvdXJjZSBtdXN0IG1hdGNoIHRvIGJlIHVzZWQuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB2YWxpZCBicm93c2luZyBjb250ZXh0IChIVE1MNSksIG9yIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIChIVE1MIDQpLiJ9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGhhc2gtbmFtZSByZWZlcmVuY2UgdG8gYSBbYDxtYXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCBcIlRoZSBIVE1MIDxtYXA+IGVsZW1lbnQgaXMgdXNlZCB3aXRoIDxhcmVhPiBlbGVtZW50cyB0byBkZWZpbmUgYW4gaW1hZ2UgbWFwIChhIGNsaWNrYWJsZSBsaW5rIGFyZWEpLlwiKSBlbGVtZW50OyB0aGF0IGlzIGEgJyMnIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiBhIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAjYXR0ci1uYW1lKSBvZiBhIG1hcCBlbGVtZW50LiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCwgaWYgYW55LCB0aGF0IHRoZSBvYmplY3QgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIElEIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGRpc3BsYXkgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZGlzcGxheWVkIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gLS0gKEFic29sdXRlIHZhbHVlcyBvbmx5LiBbTk8gcGVyY2VudGFnZXNdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkaW1lbnNpb24tYXR0cmlidXRlcykpIn19LHtuYW1lOiJhcmNoaXZlIixkZXNjcmlwdGlvbjoiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUklzIGZvciBhcmNoaXZlcyBvZiByZXNvdXJjZXMgZm9yIHRoZSBvYmplY3QuIn0se25hbWU6ImJvcmRlciIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBvZiBhIGJvcmRlciBhcm91bmQgdGhlIGNvbnRyb2wsIGluIHBpeGVscy4ifSx7bmFtZToiY2xhc3NpZCIsZGVzY3JpcHRpb246IlRoZSBVUkkgb2YgdGhlIG9iamVjdCdzIGltcGxlbWVudGF0aW9uLiBJdCBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoLCBvciBpbiBwbGFjZSBvZiwgdGhlICoqZGF0YSoqIGF0dHJpYnV0ZS4ifSx7bmFtZToiY29kZWJhc2UiLGRlc2NyaXB0aW9uOiJUaGUgYmFzZSBwYXRoIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBVUklzIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKiwgKipkYXRhKiosIG9yICoqYXJjaGl2ZSoqLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyB0aGUgYmFzZSBVUkkgb2YgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn0se25hbWU6ImNvZGV0eXBlIixkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgZGF0YSBzcGVjaWZpZWQgYnkgKipjbGFzc2lkKiouIn0se25hbWU6ImRlY2xhcmUiLGRlc2NyaXB0aW9uOiJUaGUgcHJlc2VuY2Ugb2YgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBtYWtlcyB0aGlzIGVsZW1lbnQgYSBkZWNsYXJhdGlvbiBvbmx5LiBUaGUgb2JqZWN0IG11c3QgYmUgaW5zdGFudGlhdGVkIGJ5IGEgc3Vic2VxdWVudCBgPG9iamVjdD5gIGVsZW1lbnQuIEluIEhUTUw1LCByZXBlYXQgdGhlIDxvYmplY3Q+IGVsZW1lbnQgY29tcGxldGVseSBlYWNoIHRoYXQgdGhhdCB0aGUgcmVzb3VyY2UgaXMgcmV1c2VkLiJ9LHtuYW1lOiJzdGFuZGJ5IixkZXNjcmlwdGlvbjoiQSBtZXNzYWdlIHRoYXQgdGhlIGJyb3dzZXIgY2FuIHNob3cgd2hpbGUgbG9hZGluZyB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24gYW5kIGRhdGEuIn0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjoiVGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IGluIHRoZSB0YWJiaW5nIG5hdmlnYXRpb24gb3JkZXIgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0In1dfSx7bmFtZToicGFyYW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwYXJhbSBlbGVtZW50IGRlZmluZXMgcGFyYW1ldGVycyBmb3IgcGx1Z2lucyBpbnZva2VkIGJ5IG9iamVjdCBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik5hbWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonT25seSB1c2VkIGlmIHRoZSBgdmFsdWV0eXBlYCBpcyBzZXQgdG8gInJlZiIuIFNwZWNpZmllcyB0aGUgTUlNRSB0eXBlIG9mIHZhbHVlcyBmb3VuZCBhdCB0aGUgVVJJIHNwZWNpZmllZCBieSB2YWx1ZS4nfSx7bmFtZToidmFsdWV0eXBlIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGRhdGE6IERlZmF1bHQgdmFsdWUuIFRoZSB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIG9iamVjdFwncyBpbXBsZW1lbnRhdGlvbiBhcyBhIHN0cmluZy5cbiogICByZWY6IFRoZSB2YWx1ZSBpcyBhIFVSSSB0byBhIHJlc291cmNlIHdoZXJlIHJ1bi10aW1lIHZhbHVlcyBhcmUgc3RvcmVkLlxuKiAgIG9iamVjdDogQW4gSUQgb2YgYW5vdGhlciBbYDxvYmplY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29iamVjdCAiVGhlIEhUTUwgPG9iamVjdD4gZWxlbWVudCByZXByZXNlbnRzIGFuIGV4dGVybmFsIHJlc291cmNlLCB3aGljaCBjYW4gYmUgdHJlYXRlZCBhcyBhbiBpbWFnZSwgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgb3IgYSByZXNvdXJjZSB0byBiZSBoYW5kbGVkIGJ5IGEgcGx1Z2luLiIpIGluIHRoZSBzYW1lIGRvY3VtZW50Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGFyYW0ifV19LHtuYW1lOiJ2aWRlbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB2aWRlbyBlbGVtZW50IGlzIHVzZWQgZm9yIHBsYXlpbmcgdmlkZW9zIG9yIG1vdmllcywgYW5kIGF1ZGlvIGZpbGVzIHdpdGggY2FwdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyJ9LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIn0se25hbWU6InBvc3RlciJ9LHtuYW1lOiJwcmVsb2FkIix2YWx1ZVNldDoicGwifSx7bmFtZToiYXV0b3BsYXkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOyBpZiBzcGVjaWZpZWQsIHRoZSB2aWRlbyBhdXRvbWF0aWNhbGx5IGJlZ2lucyB0byBwbGF5IGJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28gd2l0aG91dCBzdG9wcGluZyB0byBmaW5pc2ggbG9hZGluZyB0aGUgZGF0YS4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYifSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNvbnRyb2xzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJ3aWR0aCJ9LHtuYW1lOiJoZWlnaHQifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvIn1dfSx7bmFtZToiYXVkaW8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGF1ZGlvIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNvdW5kIG9yIGF1ZGlvIHN0cmVhbS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJMIG9mIHRoZSBhdWRpbyB0byBlbWJlZC4gVGhpcyBpcyBzdWJqZWN0IHRvIFtIVFRQIGFjY2VzcyBjb250cm9sc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVFRQX2FjY2Vzc19jb250cm9sKS4gVGhpcyBpcyBvcHRpb25hbDsgeW91IG1heSBpbnN0ZWFkIHVzZSB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IHdpdGhpbiB0aGUgYXVkaW8gYmxvY2sgdG8gc3BlY2lmeSB0aGUgYXVkaW8gdG8gZW1iZWQuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSBDT1JTIHRvIGZldGNoIHRoZSByZWxhdGVkIGltYWdlLiBbQ09SUy1lbmFibGVkIHJlc291cmNlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmFub255bW91c1xuXG5TZW5kcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IHdpdGhvdXQgYSBjcmVkZW50aWFsLiBJbiBvdGhlciB3b3JkcywgaXQgc2VuZHMgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciB3aXRob3V0IGEgY29va2llLCBYLjUwOSBjZXJ0aWZpY2F0ZSwgb3IgcGVyZm9ybWluZyBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgYEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjpgIEhUVFAgaGVhZGVyKSwgdGhlIGltYWdlIHdpbGwgYmUgX3RhaW50ZWRfLCBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbnVzZS1jcmVkZW50aWFsc1xuXG5TZW5kcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IHdpdGggYSBjcmVkZW50aWFsLiBJbiBvdGhlciB3b3JkcywgaXQgc2VuZHMgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciB3aXRoIGEgY29va2llLCBhIGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKHRocm91Z2ggYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5XaGVuIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgQ09SUyByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyKSwgcHJldmVudGluZyBpdHMgbm9uLXRhaW50ZWQgdXNlZCBpbiBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50cy4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4nfX0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgaGludCB0byB0aGUgYnJvd3NlciBhYm91dCB3aGF0IHRoZSBhdXRob3IgdGhpbmtzIHdpbGwgbGVhZCB0byB0aGUgYmVzdCB1c2VyIGV4cGVyaWVuY2UuIEl0IG1heSBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBub25lYDogSW5kaWNhdGVzIHRoYXQgdGhlIGF1ZGlvIHNob3VsZCBub3QgYmUgcHJlbG9hZGVkLlxuKiAgIGBtZXRhZGF0YWA6IEluZGljYXRlcyB0aGF0IG9ubHkgYXVkaW8gbWV0YWRhdGEgKGUuZy4gbGVuZ3RoKSBpcyBmZXRjaGVkLlxuKiAgIGBhdXRvYDogSW5kaWNhdGVzIHRoYXQgdGhlIHdob2xlIGF1ZGlvIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQsIGV2ZW4gaWYgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHVzZSBpdC5cbiogICBfZW1wdHkgc3RyaW5nXzogQSBzeW5vbnltIG9mIHRoZSBgYXV0b2AgdmFsdWUuXG5cbklmIG5vdCBzZXQsIGBwcmVsb2FkYCdzIGRlZmF1bHQgdmFsdWUgaXMgYnJvd3Nlci1kZWZpbmVkIChpLmUuIGVhY2ggYnJvd3NlciBtYXkgaGF2ZSBpdHMgb3duIGRlZmF1bHQgdmFsdWUpLiBUaGUgc3BlYyBhZHZpc2VzIGl0IHRvIGJlIHNldCB0byBgbWV0YWRhdGFgLlxuXG4qKlVzYWdlIG5vdGVzOioqXG5cbiogICBUaGUgYGF1dG9wbGF5YCBhdHRyaWJ1dGUgaGFzIHByZWNlZGVuY2Ugb3ZlcsKgYHByZWxvYWRgLiBJZiBgYXV0b3BsYXlgIGlzIHNwZWNpZmllZCwgdGhlIGJyb3dzZXIgd291bGQgb2J2aW91c2x5IG5lZWQgdG8gc3RhcnQgZG93bmxvYWRpbmcgdGhlIGF1ZGlvIGZvciBwbGF5YmFjay5cbiogICBUaGUgYnJvd3NlciBpcyBub3QgZm9yY2VkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIHRvIGZvbGxvdyB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGU7IGl0IGlzIGEgbWVyZSBoaW50LiJ9fSx7bmFtZToiYXV0b3BsYXkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOsKgaWYgc3BlY2lmaWVkLCB0aGUgYXVkaW8gd2lsbCBhdXRvbWF0aWNhbGx5IGJlZ2luIHBsYXliYWNrIGFzIHNvb24gYXMgaXQgY2FuIGRvIHNvLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBlbnRpcmUgYXVkaW8gZmlsZSB0byBmaW5pc2ggZG93bmxvYWRpbmcuXG5cbioqTm90ZSoqOiBTaXRlcyB0aGF0IGF1dG9tYXRpY2FsbHkgcGxheSBhdWRpbyAob3IgdmlkZW9zIHdpdGggYW4gYXVkaW8gdHJhY2spIGNhbiBiZSBhbiB1bnBsZWFzYW50IGV4cGVyaWVuY2UgZm9yIHVzZXJzLCBzbyBzaG91bGQgYmUgYXZvaWRlZCB3aGVuIHBvc3NpYmxlLiBJZiB5b3UgbXVzdCBvZmZlciBhdXRvcGxheSBmdW5jdGlvbmFsaXR5LCB5b3Ugc2hvdWxkIG1ha2UgaXQgb3B0LWluIChyZXF1aXJpbmcgYSB1c2VyIHRvIHNwZWNpZmljYWxseSBlbmFibGUgaXQpLiBIb3dldmVyLCB0aGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjcmVhdGluZyBtZWRpYSBlbGVtZW50cyB3aG9zZSBzb3VyY2Ugd2lsbCBiZSBzZXQgYXQgYSBsYXRlciB0aW1lLCB1bmRlciB1c2VyIGNvbnRyb2wuIn19LHtuYW1lOiJtZWRpYWdyb3VwIn0se25hbWU6Imxvb3AiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOsKgaWYgc3BlY2lmaWVkLCB0aGUgYXVkaW8gcGxheWVyIHdpbGzCoGF1dG9tYXRpY2FsbHkgc2VlayBiYWNrIHRvIHRoZSBzdGFydMKgdXBvbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBhdWRpby4ifX0se25hbWU6Im11dGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBhdWRpbyB3aWxsIGJlIGluaXRpYWxseSBzaWxlbmNlZC4gSXRzIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC4ifX0se25hbWU6ImNvbnRyb2xzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgdGhlIGJyb3dzZXIgd2lsbCBvZmZlciBjb250cm9scyB0byBhbGxvdyB0aGUgdXNlciB0byBjb250cm9sIGF1ZGlvIHBsYXliYWNrLCBpbmNsdWRpbmcgdm9sdW1lLCBzZWVraW5nLCBhbmQgcGF1c2UvcmVzdW1lIHBsYXliYWNrLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvIn1dfSx7bmFtZToic291cmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc291cmNlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBtdWx0aXBsZSBhbHRlcm5hdGl2ZSBtZWRpYSByZXNvdXJjZXMgZm9yIG1lZGlhIGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidSZXF1aXJlZCBmb3IgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgYW5kIFtgPHZpZGVvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyAiVGhlIEhUTUwgVmlkZW8gZWxlbWVudCAoPHZpZGVvPikgZW1iZWRzIGEgbWVkaWEgcGxheWVyIHdoaWNoIHN1cHBvcnRzIHZpZGVvIHBsYXliYWNrIGludG8gdGhlIGRvY3VtZW50LiIpLCBhZGRyZXNzIG9mIHRoZSBtZWRpYSByZXNvdXJjZS4gVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGlnbm9yZWQgd2hlbiB0aGUgYDxzb3VyY2U+YCBlbGVtZW50IGlzIHBsYWNlZCBpbnNpZGUgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FLXR5cGUgb2YgdGhlIHJlc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBgY29kZWNzYCBwYXJhbWV0ZXIuIFNlZSBbUkZDIDQyODFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0MjgxKSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgY29kZWNzLiJ9fSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOidJcyBhIGxpc3Qgb2Ygc291cmNlIHNpemVzIHRoYXQgZGVzY3JpYmVzIHRoZSBmaW5hbCByZW5kZXJlZCB3aWR0aCBvZiB0aGUgaW1hZ2UgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gRWFjaCBzb3VyY2Ugc2l6ZSBjb25zaXN0cyBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIG1lZGlhIGNvbmRpdGlvbi1sZW5ndGggcGFpcnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBieSB0aGUgYnJvd3NlciB0byBkZXRlcm1pbmUsIGJlZm9yZSBsYXlpbmcgdGhlIHBhZ2Ugb3V0LCB3aGljaCBpbWFnZSBkZWZpbmVkIGluIFtgc3Jjc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSNhdHRyLXNyY3NldCkgdG8gdXNlLiAgXG5UaGUgYHNpemVzYCBhdHRyaWJ1dGUgaGFzIGFuIGVmZmVjdCBvbmx5IHdoZW4gdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlICJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ30se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBwb3NzaWJsZSBpbWFnZXMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZSBmb3IgdGhlIGJyb3dzZXIgdG8gdXNlLiBFYWNoIHN0cmluZyBpcyBjb21wb3NlZCBvZjpcblxuMS4gIG9uZSBVUkwgdG8gYW4gaW1hZ2UsXG4yLiAgYSB3aWR0aCBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgaW50ZWdlciBkaXJlY3RseSBmb2xsb3dlZCBieSBgJ3cnYC4gVGhlIGRlZmF1bHQgdmFsdWUsIGlmIG1pc3NpbmcsIGlzIHRoZSBpbmZpbml0eS5cbjMuICBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgdGhhdCBpcyBhIHBvc2l0aXZlIGZsb2F0aW5nIG51bWJlciBkaXJlY3RseSBmb2xsb3dlZCBieSBgJ3gnYC4gVGhlIGRlZmF1bHQgdmFsdWUsIGlmIG1pc3NpbmcsIGlzIGAxeGAuXG5cbkVhY2ggc3RyaW5nIGluIHRoZSBsaXN0IG11c3QgaGF2ZSBhdCBsZWFzdCBhIHdpZHRoIGRlc2NyaXB0b3Igb3IgYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgdG8gYmUgdmFsaWQuIEFtb25nIHRoZSBsaXN0LCB0aGVyZSBtdXN0IGJlIG9ubHkgb25lIHN0cmluZyBjb250YWluaW5nIHRoZSBzYW1lIHR1cGxlIG9mIHdpZHRoIGRlc2NyaXB0b3IgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvci4gIFxuVGhlIGJyb3dzZXIgY2hvb3NlcyB0aGUgbW9zdCBhZGVxdWF0ZSBpbWFnZSB0byBkaXNwbGF5IGF0IGEgZ2l2ZW4gcG9pbnQgb2YgdGltZS4gIFxuVGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgXCJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuXCIpIGVsZW1lbnQgaXMgdGhlIGRpcmVjdCBjaGlsZCBvZiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgXCJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuXCIpIGVsZW1lbnQuIn0se25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjonW01lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9NZWRpYV9xdWVyaWVzKSBvZiB0aGUgcmVzb3VyY2VcJ3MgaW50ZW5kZWQgbWVkaWE7IHRoaXMgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlIn1dfSx7bmFtZToidHJhY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0cmFjayBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgZXhwbGljaXQgZXh0ZXJuYWwgdGltZWQgdGV4dCB0cmFja3MgZm9yIG1lZGlhIGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGVmYXVsdCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB0cmFjayBzaG91bGQgYmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIncyBwcmVmZXJlbmNlcyBpbmRpY2F0ZSB0aGF0IGFub3RoZXIgdHJhY2sgaXMgbW9yZSBhcHByb3ByaWF0ZS4gVGhpcyBtYXkgb25seSBiZSB1c2VkIG9uIG9uZSBgdHJhY2tgIGVsZW1lbnQgcGVyIG1lZGlhIGVsZW1lbnQuIn19LHtuYW1lOiJraW5kIix2YWx1ZVNldDoidGsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhvdyB0aGUgdGV4dCB0cmFjayBpcyBtZWFudCB0byBiZSB1c2VkLiBJZiBvbWl0dGVkIHRoZSBkZWZhdWx0IGtpbmQgaXMgYHN1YnRpdGxlc2AuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIGl0IHdpbGwgdXNlIHRoZSBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBjb250YWlucyBhbiBpbnZhbGlkIHZhbHVlLCBpdCB3aWxsIHVzZSBgbWV0YWRhdGFgLiAoVmVyc2lvbnMgb2YgQ2hyb21lIGVhcmxpZXIgdGhhbiA1MiB0cmVhdGVkIGFuIGludmFsaWQgdmFsdWUgYXMgYHN1YnRpdGxlc2AuKcKgVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBhcmUgYWxsb3dlZDpcblxuKiAgIGBzdWJ0aXRsZXNgXG4gICAgKiAgIFN1YnRpdGxlcyBwcm92aWRlIHRyYW5zbGF0aW9uIG9mIGNvbnRlbnQgdGhhdCBjYW5ub3QgYmUgdW5kZXJzdG9vZCBieSB0aGUgdmlld2VyLiBGb3IgZXhhbXBsZSBkaWFsb2d1ZSBvciB0ZXh0IHRoYXQgaXMgbm90IEVuZ2xpc2ggaW4gYW4gRW5nbGlzaCBsYW5ndWFnZSBmaWxtLlxuICAgICogICBTdWJ0aXRsZXMgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBjb250ZW50LCB1c3VhbGx5IGV4dHJhIGJhY2tncm91bmQgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlIHRoZSB0ZXh0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFN0YXIgV2FycyBmaWxtcywgb3IgdGhlIGRhdGUsIHRpbWUsIGFuZCBsb2NhdGlvbiBvZiBhIHNjZW5lLlxuKiAgIGBjYXB0aW9uc2BcbiAgICAqICAgQ2xvc2VkIGNhcHRpb25zIHByb3ZpZGUgYSB0cmFuc2NyaXB0aW9uIGFuZCBwb3NzaWJseSBhIHRyYW5zbGF0aW9uIG9mIGF1ZGlvLlxuICAgICogICBJdCBtYXkgaW5jbHVkZSBpbXBvcnRhbnQgbm9uLXZlcmJhbCBpbmZvcm1hdGlvbiBzdWNoIGFzIG11c2ljIGN1ZXMgb3Igc291bmQgZWZmZWN0cy4gSXQgbWF5IGluZGljYXRlIHRoZSBjdWUncyBzb3VyY2UgKGUuZy4gbXVzaWMsIHRleHQsIGNoYXJhY3RlcikuXG4gICAgKiAgIFN1aXRhYmxlIGZvciB1c2VycyB3aG8gYXJlIGRlYWYgb3Igd2hlbiB0aGUgc291bmQgaXMgbXV0ZWQuXG4qICAgYGRlc2NyaXB0aW9uc2BcbiAgICAqICAgVGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdmlkZW8gY29udGVudC5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgYmxpbmQgb3Igd2hlcmUgdGhlIHZpZGVvIGNhbm5vdCBiZSBzZWVuLlxuKiAgIGBjaGFwdGVyc2BcbiAgICAqICAgQ2hhcHRlciB0aXRsZXMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nIHRoZSBtZWRpYSByZXNvdXJjZS5cbiogICBgbWV0YWRhdGFgXG4gICAgKiAgIFRyYWNrcyB1c2VkIGJ5IHNjcmlwdHMuIE5vdCB2aXNpYmxlIHRvIHRoZSB1c2VyLiJ9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgdXNlci1yZWFkYWJsZSB0aXRsZSBvZiB0aGUgdGV4dCB0cmFjayB3aGljaCBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHdoZW4gbGlzdGluZyBhdmFpbGFibGUgdGV4dCB0cmFja3MuIn19LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0FkZHJlc3Mgb2YgdGhlIHRyYWNrIChgLnZ0dGAgZmlsZSkuIE11c3QgYmUgYSB2YWxpZCBVUkwuIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBpdHMgVVJMIHZhbHVlIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGRvY3VtZW50IOKAlCB1bmxlc3MgdGhlIFtgPGF1ZGlvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyAiVGhlIEhUTUwgPGF1ZGlvPiBlbGVtZW50IGlzIHVzZWQgdG8gZW1iZWQgc291bmQgY29udGVudCBpbiBkb2N1bWVudHMuIEl0IG1heSBjb250YWluIG9uZSBvciBtb3JlIGF1ZGlvIHNvdXJjZXMsIHJlcHJlc2VudGVkIHVzaW5nIHRoZSBzcmMgYXR0cmlidXRlIG9yIHRoZSA8c291cmNlPiBlbGVtZW50OsKgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2UgdGhlIG1vc3Qgc3VpdGFibGUgb25lLiBJdCBjYW4gYWxzbyBiZSB0aGUgZGVzdGluYXRpb24gZm9yIHN0cmVhbWVkIG1lZGlhLCB1c2luZyBhIE1lZGlhU3RyZWFtLiIpIG9yIFtgPHZpZGVvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyAiVGhlIEhUTUwgVmlkZW8gZWxlbWVudCAoPHZpZGVvPikgZW1iZWRzIGEgbWVkaWEgcGxheWVyIHdoaWNoIHN1cHBvcnRzIHZpZGVvIHBsYXliYWNrIGludG8gdGhlIGRvY3VtZW50LiIpIHBhcmVudCBlbGVtZW50IG9mIHRoZSBgdHJhY2tgIGVsZW1lbnQgaGFzIGEgW2Bjcm9zc29yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBhdHRyaWJ1dGUuJ319LHtuYW1lOiJzcmNsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJMYW5ndWFnZSBvZiB0aGUgdHJhY2sgdGV4dCBkYXRhLiBJdCBtdXN0IGJlIGEgdmFsaWQgW0JDUCA0N10oaHR0cHM6Ly9yMTJhLmdpdGh1Yi5pby9hcHAtc3VidGFncy8pIGxhbmd1YWdlIHRhZy4gSWYgdGhlIGBraW5kYCBhdHRyaWJ1dGUgaXMgc2V0IHRvwqBgc3VidGl0bGVzLGAgdGhlbiBgc3JjbGFuZ2AgbXVzdCBiZSBkZWZpbmVkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyYWNrIn1dfSx7bmFtZToibWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFwIGVsZW1lbnQsIGluIGNvbmp1bmN0aW9uIHdpdGggYW4gaW1nIGVsZW1lbnQgYW5kIGFueSBhcmVhIGVsZW1lbnQgZGVzY2VuZGFudHMsIGRlZmluZXMgYW4gaW1hZ2UgbWFwLiBUaGUgZWxlbWVudCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgYXR0cmlidXRlIGdpdmVzIHRoZSBtYXAgYSBuYW1lIHNvIHRoYXQgaXQgY2FuIGJlIHJlZmVyZW5jZWQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBwcmVzZW50IGFuZCBtdXN0IGhhdmUgYSBub24tZW1wdHkgdmFsdWUgd2l0aCBubyBzcGFjZSBjaGFyYWN0ZXJzLiBUaGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG11c3Qgbm90IGJlIGEgY29tcGF0aWJpbGl0eS1jYXNlbGVzcyBtYXRjaCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBuYW1lIGF0dHJpYnV0ZSBvZiBhbm90aGVyIG1hcCBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGUgaWQgYXR0cmlidXRlIGlzIGFsc28gc3BlY2lmaWVkLCBib3RoIGF0dHJpYnV0ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHZhbHVlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCJ9XX0se25hbWU6ImFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhcmVhIGVsZW1lbnQgcmVwcmVzZW50cyBlaXRoZXIgYSBoeXBlcmxpbmsgd2l0aCBzb21lIHRleHQgYW5kIGEgY29ycmVzcG9uZGluZyBhcmVhIG9uIGFuIGltYWdlIG1hcCwgb3IgYSBkZWFkIGFyZWEgb24gYW4gaW1hZ2UgbWFwLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQifSx7bmFtZToiY29vcmRzIn0se25hbWU6InNoYXBlIix2YWx1ZVNldDoic2gifSx7bmFtZToiaHJlZiJ9LHtuYW1lOiJ0YXJnZXQifSx7bmFtZToiZG93bmxvYWQifSx7bmFtZToicGluZyJ9LHtuYW1lOiJyZWwifSx7bmFtZToiaHJlZmxhbmcifSx7bmFtZToidHlwZSJ9LHtuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBrZXlib2FyZCBuYXZpZ2F0aW9uIGFjY2VsZXJhdG9yIGZvciB0aGUgZWxlbWVudC4gUHJlc3NpbmcgQUxUIG9yIGEgc2ltaWxhciBrZXkgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzZWxlY3RzIHRoZSBmb3JtIGNvbnRyb2wgY29ycmVsYXRlZCB3aXRoIHRoYXQga2V5IHNlcXVlbmNlLiBQYWdlIGRlc2lnbmVycyBhcmUgZm9yZXdhcm5lZCB0byBhdm9pZCBrZXkgc2VxdWVuY2VzIGFscmVhZHkgYm91bmQgdG8gYnJvd3NlcnMuIFRoaXMgYXR0cmlidXRlIGlzIGdsb2JhbCBzaW5jZSBIVE1MNS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FyZWEifV19LHtuYW1lOiJ0YWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRhYmxlIGVsZW1lbnQgcmVwcmVzZW50cyBkYXRhIHdpdGggbW9yZSB0aGFuIG9uZSBkaW1lbnNpb24sIGluIHRoZSBmb3JtIG9mIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImJvcmRlciJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGhvdyB0aGUgdGFibGUgbXVzdCBiZSBhbGlnbmVkIGluc2lkZSB0aGUgY29udGFpbmluZyBkb2N1bWVudC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBsZWZ0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRvY3VtZW50O1xuKiAgIGNlbnRlcjogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBpbiB0aGUgY2VudGVyIG9mIHRoZSBkb2N1bWVudDtcbiogICByaWdodDogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZG9jdW1lbnQuXG5cbioqVXNhZ2UgTm90ZSoqXG5cbiogICAqKkRvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUqKiwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPHRhYmxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90YWJsZSAiVGhlIEhUTUwgPHRhYmxlPiBlbGVtZW50IHJlcHJlc2VudHMgdGFidWxhciBkYXRhIOKAlCB0aGF0IGlzLCBpbmZvcm1hdGlvbiBwcmVzZW50ZWQgaW4gYSB0d28tZGltZW5zaW9uYWwgdGFibGUgY29tcHJpc2VkIG9mIHJvd3MgYW5kIGNvbHVtbnMgb2YgY2VsbHMgY29udGFpbmluZyBkYXRhLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFNldCBbYG1hcmdpbi1sZWZ0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1sZWZ0ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBhbmQgW2BtYXJnaW4tcmlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXJpZ2h0ICJUaGUgbWFyZ2luLXJpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHRvIGBhdXRvYCBvciBbYG1hcmdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4gIlRoZSBtYXJnaW4gQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIGFsbCBmb3VyIHNpZGVzIG9mIGFuIGVsZW1lbnQuIEl0IGlzIGEgc2hvcnRoYW5kIGZvciBtYXJnaW4tdG9wLCBtYXJnaW4tcmlnaHQsIG1hcmdpbi1ib3R0b20sIGFuZCBtYXJnaW4tbGVmdC4iKSB0byBgMCBhdXRvYCB0byBhY2hpZXZlIGFuIGVmZmVjdCB0aGF0IGlzIHNpbWlsYXIgdG8gdGhlIGFsaWduIGF0dHJpYnV0ZS5cbiogICBQcmlvciB0byBGaXJlZm94IDQsIEZpcmVmb3ggYWxzbyBzdXBwb3J0ZWQgdGhlIGBtaWRkbGVgLCBgYWJzbWlkZGxlYCwgYW5kIGBhYnNjZW50ZXJgIHZhbHVlcyBhcyBzeW5vbnltcyBvZiBgY2VudGVyYCwgaW4gcXVpcmtzIG1vZGUgb25seS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlIn1dfSx7bmFtZToiY2FwdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNhcHRpb24gZWxlbWVudCByZXByZXNlbnRzIHRoZSB0aXRsZSBvZiB0aGUgdGFibGUgdGhhdCBpcyBpdHMgcGFyZW50LCBpZiBpdCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGhvdyB0aGUgY2FwdGlvbiBtdXN0IGJlIGFsaWduZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB0YWJsZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG5gbGVmdGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIHRvIHRoZSBsZWZ0IG9mIHRoZSB0YWJsZS5cblxuYHRvcGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIGFib3ZlIHRoZSB0YWJsZS5cblxuYHJpZ2h0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0YWJsZS5cblxuYGJvdHRvbWBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIGJlbG93IHRoZSB0YWJsZS5cblxuKipVc2FnZSBub3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFRoZSBbYDxjYXB0aW9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uICJUaGUgSFRNTCBUYWJsZSBDYXB0aW9uIGVsZW1lbnQgKDxjYXB0aW9uPikgc3BlY2lmaWVzIHRoZSBjYXB0aW9uIChvciB0aXRsZSkgb2YgYSB0YWJsZSwgYW5kIGlmIHVzZWQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGlsZCBvZiBhIDx0YWJsZT4uIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydGllcyBbYGNhcHRpb24tc2lkZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jYXB0aW9uLXNpZGUgIlRoZSBjYXB0aW9uLXNpZGUgQ1NTIHByb3BlcnR5IHB1dHMgdGhlIGNvbnRlbnQgb2YgYSB0YWJsZVwncyA8Y2FwdGlvbj4gb24gdGhlIHNwZWNpZmllZCBzaWRlLiBUaGUgdmFsdWVzIGFyZSByZWxhdGl2ZSB0byB0aGUgd3JpdGluZy1tb2RlIG9mIHRoZSB0YWJsZS4iKSBhbmQgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FwdGlvbiJ9XX0se25hbWU6ImNvbGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29sZ3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgY29sdW1ucyBpbiB0aGUgdGFibGUgdGhhdCBpcyBpdHMgcGFyZW50LCBpZiBpdCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcGFuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY29sdW1uIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC4gVGhlIGRlc2NlbmRhbnQgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnRzIG1heSBvdmVycmlkZSB0aGlzIHZhbHVlIHVzaW5nIHRoZWlyIG93biBbYGFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWFsaWduKSBhdHRyaWJ1dGUuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQuIEJlY2F1c2UgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudHMgYXJlIG5vdCBkZXNjZW5kYW50IG9mIHRoZSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50LCB0aGV5IHdvblwndCBpbmhlcml0IGl0LlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lc25cJ3QgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB1c2Ugb25lIGB0ZDpudGgtY2hpbGQoYW4rYilgIENTUyBzZWxlY3RvciBwZXIgY29sdW1uLCB3aGVyZSBhIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgdGhlIGNvbHVtbnMgaW4gdGhlIHRhYmxlIGFuZCBiIGlzIHRoZSBvcmRpbmFsIHBvc2l0aW9uIG9mIHRoaXMgY29sdW1uIGluIHRoZSB0YWJsZS4gT25seSBhZnRlciB0aGlzIHNlbGVjdG9yIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgY2FuIGJlIHVzZWQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzIHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdGhlIGVmZmVjdCBjYW4gYmUgYWNoaWV2ZWQgYnkgY29tYmluaW5nIGFkZXF1YXRlIENTUyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGxpa2UgYFtjb2xzcGFuPW5dYCwgdGhvdWdoIHRoaXMgaXMgbm90IHRyaXZpYWwuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAifV19LHtuYW1lOiJjb2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIGEgY29sIGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgY29sZ3JvdXAgZWxlbWVudCB0aGF0IGl0c2VsZiBoYXMgYSBwYXJlbnQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQsIHRoZW4gdGhlIGNvbCBlbGVtZW50IHJlcHJlc2VudHMgb25lIG9yIG1vcmUgY29sdW1ucyBpbiB0aGUgY29sdW1uIGdyb3VwIHJlcHJlc2VudGVkIGJ5IHRoYXQgY29sZ3JvdXAuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgaXRzIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBbYGFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwI2F0dHItYWxpZ24pIG9mIHRoZSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50IHRoaXMgYDxjb2w+YCBlbGVtZW50IGJlbG9uZ3MgdG9vLiBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXM6XG4gICAgKiAgIERvIG5vdCB0cnkgdG8gc2V0IHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gYSBzZWxlY3RvciBnaXZpbmcgYSBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LCB0aGV5IHdvblwndCBpbmhlcml0IGl0LlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lc25cJ3QgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB1c2UgdGhlIGB0ZDpudGgtY2hpbGQoYW4rYilgIENTUyBzZWxlY3Rvci4gU2V0IGBhYCB0byB6ZXJvIGFuZCBgYmAgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4gaW4gdGhlIHRhYmxlLCBlLmcuIGB0ZDpudGgtY2hpbGQoMikgeyB0ZXh0LWFsaWduOiByaWdodDsgfWAgdG8gcmlnaHQtYWxpZ24gdGhlIHNlY29uZCBjb2x1bW4uXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzIHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdGhlIGVmZmVjdCBjYW4gYmUgYWNoaWV2ZWQgYnkgY29tYmluaW5nIGFkZXF1YXRlIENTUyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGxpa2UgYFtjb2xzcGFuPW5dYCwgdGhvdWdoIHRoaXMgaXMgbm90IHRyaXZpYWwuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCJ9XX0se25hbWU6InRib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGJvZHkgZWxlbWVudCByZXByZXNlbnRzIGEgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgYSBib2R5IG9mIGRhdGEgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRib2R5IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5In1dfSx7bmFtZToidGhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aGVhZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIHRoZSBjb2x1bW4gbGFiZWxzIChoZWFkZXJzKSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGhlYWQgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQifV19LHtuYW1lOiJ0Zm9vdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRmb290IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBzdW1tYXJpZXMgKGZvb3RlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0Zm9vdCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Zm9vdCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Zm9vdCJ9XX0se25hbWU6InRyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHIgZWxlbWVudCByZXByZXNlbnRzIGEgcm93IG9mIGNlbGxzIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonQSBbYERPTVN0cmluZ2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9ET01TdHJpbmcgIkRPTVN0cmluZyBpcyBhIFVURi0xNiBTdHJpbmcuIEFzIEphdmFTY3JpcHQgYWxyZWFkeSB1c2VzIHN1Y2ggc3RyaW5ncywgRE9NU3RyaW5nIGlzIG1hcHBlZCBkaXJlY3RseSB0byBhIFN0cmluZy4iKSB3aGljaCBzcGVjaWZpZXMgaG93IHRoZSBjZWxsXCdzIGNvbnRleHQgc2hvdWxkIGJlIGFsaWduZWQgaG9yaXpvbnRhbGx5IHdpdGhpbiB0aGUgY2VsbHMgaW4gdGhlIHJvdzsgdGhpcyBpcyBzaG9ydGhhbmQgZm9yIHVzaW5nIGBhbGlnbmAgb24gZXZlcnkgY2VsbCBpbiB0aGUgcm93IGluZGl2aWR1YWxseS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuYGxlZnRgXG5cbkFsaWduIHRoZSBjb250ZW50IG9mIGVhY2ggY2VsbCBhdCBpdHMgbGVmdCBlZGdlLlxuXG5gY2VudGVyYFxuXG5DZW50ZXIgdGhlIGNvbnRlbnRzIG9mIGVhY2ggY2VsbCBiZXR3ZWVuIHRoZWlyIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzLlxuXG5gcmlnaHRgXG5cbkFsaWduIHRoZSBjb250ZW50IG9mIGVhY2ggY2VsbCBhdCBpdHMgcmlnaHQgZWRnZS5cblxuYGp1c3RpZnlgXG5cbldpZGVuIHdoaXRlc3BhY2VzIHdpdGhpbiB0aGUgdGV4dCBvZiBlYWNoIGNlbGwgc28gdGhhdCB0aGUgdGV4dCBmaWxscyB0aGUgZnVsbCB3aWR0aCBvZiBlYWNoIGNlbGwgKGZ1bGwganVzdGlmaWNhdGlvbikuXG5cbmBjaGFyYFxuXG5BbGlnbiBlYWNoIGNlbGwgaW4gdGhlIHJvdyBvbiBhIHNwZWNpZmljIGNoYXJhY3RlciAoc3VjaCB0aGF0IGVhY2ggcm93IGluIHRoZSBjb2x1bW4gdGhhdCBpcyBjb25maWd1cmVkIHRoaXMgd2F5IHdpbGwgaG9yaXpvbnRhbGx5IGFsaWduIGl0cyBjZWxscyBvbiB0aGF0IGNoYXJhY3RlcikuIFRoaXMgdXNlcyB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciNhdHRyLWNoYXJvZmYpIHRvIGVzdGFibGlzaCB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAodHlwaWNhbGx5ICIuIiBvciAiLCIgd2hlbiBhbGlnbmluZyBudW1lcmljYWwgZGF0YSkgYW5kIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBmb2xsb3cgdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIuIFRoaXMgYWxpZ25tZW50IHR5cGUgd2FzIG5ldmVyIHdpZGVseSBzdXBwb3J0ZWQuXG5cbklmIG5vIHZhbHVlIGlzIGV4cHJlc3NseSBzZXQgZm9yIGBhbGlnbmAsIHRoZSBwYXJlbnQgbm9kZVwncyB2YWx1ZSBpcyBpbmhlcml0ZWQuXG5cbkluc3RlYWQgb2YgdXNpbmcgdGhlIG9ic29sZXRlIGBhbGlnbmAgYXR0cmlidXRlLCB5b3Ugc2hvdWxkIGluc3RlYWQgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIGVzdGFibGlzaCBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgLCBvciBganVzdGlmeWAgYWxpZ25tZW50IGZvciB0aGUgcm93XCdzIGNlbGxzLiBUbyBhcHBseSBjaGFyYWN0ZXItYmFzZWQgYWxpZ25tZW50LCBzZXQgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIgKHN1Y2ggYXMgYCIuImAgb3IgYCIsImApLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIifV19LHtuYW1lOiJ0ZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGRhdGEgY2VsbCBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzcGFuIn0se25hbWU6InJvd3NwYW4ifSx7bmFtZToiaGVhZGVycyJ9LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwdXQgdGhlIGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIGluc2lkZSB0aGUgY2VsbCBhbmQgcGxhY2UgdGhlIGxvbmcgY29udGVudCBpbiB0aGUgKip0aXRsZSoqIGF0dHJpYnV0ZS4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgdGhlIGNlbGwgY29udGVudFwncyBob3Jpem9udGFsIGFsaWdubWVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGwuXG4qICAgYGNlbnRlcmA6IFRoZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIHRoZSBjZWxsLlxuKiAgIGByaWdodGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsLlxuKiAgIGBqdXN0aWZ5YCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBzdHJldGNoZWQgb3V0IGluc2lkZSB0aGUgY2VsbCBzbyB0aGF0IGl0IGNvdmVycyBpdHMgZW50aXJlIHdpZHRoLlxuKiAgIGBjaGFyYCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIGEgY2hhcmFjdGVyIGluc2lkZSB0aGUgYDx0aD5gIGVsZW1lbnQgd2l0aCBtaW5pbWFsIG9mZnNldC4gVGhpcyBjaGFyYWN0ZXIgaXMgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cblRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpcyBgbGVmdGAuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCBhcHBseSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgZWxlbWVudC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBnaXZlIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdGhlIHNhbWUgdmFsdWUgeW91IHdvdWxkIHVzZSBmb3IgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXIpLiBVbmltcGxlbWVudGVkIGluIENTUzMuJ30se25hbWU6ImF4aXMiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGlzIHRoZSBgaWRgIG9mIGEgZ3JvdXAgb2YgY2VsbHMgdGhhdCB0aGlzIGhlYWRlciBhcHBsaWVzIHRvLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gY3JlYXRlIGEgc2ltaWxhciBlZmZlY3QgdXNlIHRoZSBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbiBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkIn1dfSx7bmFtZToidGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aCBlbGVtZW50IHJlcHJlc2VudHMgYSBoZWFkZXIgY2VsbCBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzcGFuIn0se25hbWU6InJvd3NwYW4ifSx7bmFtZToiaGVhZGVycyJ9LHtuYW1lOiJzY29wZSIsdmFsdWVTZXQ6InMifSx7bmFtZToic29ydGVkIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgc2hvcnQgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGwncyBjb250ZW50LiBTb21lIHVzZXItYWdlbnRzLCBzdWNoIGFzIHNwZWVjaCByZWFkZXJzLCBtYXkgcHJlc2VudCB0aGlzIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgY29udGVudCBpdHNlbGYuIn19LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcy5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQ6IHVzZSB0aGUgW2BzY29wZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLXNjb3BlKSBhdHRyaWJ1dGUgaW5zdGVhZC4ifSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgZWFjaCBjZWxsIGluIGEgY29sdW1uLiBJdCBjb25zaXN0cyBvZiBhIDYtZGlnaXQgaGV4YWRlY2ltYWwgY29kZSBhcyBkZWZpbmVkIGluIFtzUkdCXShodHRwczovL3d3dy53My5vcmcvR3JhcGhpY3MvQ29sb3Ivc1JHQikgYW5kIGlzIHByZWZpeGVkIGJ5IFwnI1wnLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB3aXRoIG9uZSBvZiBzaXh0ZWVuIHByZWRlZmluZWQgY29sb3Igc3RyaW5nczpcblxuwqBcblxuYGJsYWNrYCA9ICIjMDAwMDAwIlxuXG7CoFxuXG5gZ3JlZW5gID0gIiMwMDgwMDAiXG5cbsKgXG5cbmBzaWx2ZXJgID0gIiNDMEMwQzAiXG5cbsKgXG5cbmBsaW1lYCA9ICIjMDBGRjAwIlxuXG7CoFxuXG5gZ3JheWAgPSAiIzgwODA4MCJcblxuwqBcblxuYG9saXZlYCA9ICIjODA4MDAwIlxuXG7CoFxuXG5gd2hpdGVgID0gIiNGRkZGRkYiXG5cbsKgXG5cbmB5ZWxsb3dgID0gIiNGRkZGMDAiXG5cbsKgXG5cbmBtYXJvb25gID0gIiM4MDAwMDAiXG5cbsKgXG5cbmBuYXZ5YCA9ICIjMDAwMDgwIlxuXG7CoFxuXG5gcmVkYCA9ICIjRkYwMDAwIlxuXG7CoFxuXG5gYmx1ZWAgPSAiIzAwMDBGRiJcblxuwqBcblxuYHB1cnBsZWAgPSAiIzgwMDA4MCJcblxuwqBcblxuYHRlYWxgID0gIiMwMDgwODAiXG5cbsKgXG5cbmBmdWNoc2lhYCA9ICIjRkYwMEZGIlxuXG7CoFxuXG5gYXF1YWAgPSAiIzAwRkZGRiJcblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGlzIG5vbi1zdGFuZGFyZCBhbmQgb25seSBpbXBsZW1lbnRlZCBpbiBzb21lIHZlcnNpb25zIG9mIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlcjogVGhlIFtgPHRoPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCAiVGhlIEhUTUwgPHRoPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIGFzIGhlYWRlciBvZiBhIGdyb3VwIG9mIHRhYmxlIGNlbGxzLiBUaGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgZ3JvdXAgaXMgZGVmaW5lZCBieSB0aGUgc2NvcGUgYW5kIGhlYWRlcnMgYXR0cmlidXRlcy4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTKS4gVG8gY3JlYXRlIGEgc2ltaWxhciBlZmZlY3QgdXNlIHRoZSBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbiBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCJ9XX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmb3JtIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLCBzb21lIG9mIHdoaWNoIGNhbiByZXByZXNlbnQgZWRpdGFibGUgdmFsdWVzIHRoYXQgY2FuIGJlIHN1Ym1pdHRlZCB0byBhIHNlcnZlciBmb3IgcHJvY2Vzc2luZy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0LWNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2UtIG9yIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGNoYXJhY3RlciBlbmNvZGluZ3MgdGhhdCB0aGUgc2VydmVyIGFjY2VwdHMuIFRoZSBicm93c2VyIHVzZXMgdGhlbSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgbGlzdGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHJlc2VydmVkIHN0cmluZyBgIlVOS05PV04iYCwgaW5kaWNhdGVzIHRoZSBzYW1lIGVuY29kaW5nIGFzIHRoYXQgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIGZvcm0gZWxlbWVudC4gIFxuSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgSFRNTCwgdGhlIGRpZmZlcmVudCBjaGFyYWN0ZXIgZW5jb2RpbmdzIGNvdWxkIGJlIGRlbGltaXRlZCBieSBzcGFjZXMgb3IgY29tbWFzLiBJbiBIVE1MNSwgb25seSBzcGFjZXMgYXJlIGFsbG93ZWQgYXMgZGVsaW1pdGVycy4nfX0se25hbWU6ImFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGZvcm0gaW5mb3JtYXRpb24uIFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1hY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybWFjdGlvbikgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBpbnB1dCBlbGVtZW50cyBjYW4gYnkgZGVmYXVsdCBoYXZlIHRoZWlyIHZhbHVlcyBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlZCBieSB0aGUgYnJvd3Nlci4gVGhpcyBzZXR0aW5nIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFuIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiBhbiBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBvZmZgOiBUaGUgdXNlciBtdXN0IGV4cGxpY2l0bHkgZW50ZXIgYSB2YWx1ZSBpbnRvIGVhY2ggZmllbGQgZm9yIGV2ZXJ5IHVzZSwgb3IgdGhlIGRvY3VtZW50IHByb3ZpZGVzIGl0cyBvd24gYXV0by1jb21wbGV0aW9uIG1ldGhvZDsgdGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSBlbnRyaWVzLlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHZhbHVlcyBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgcHJldmlvdXNseSBlbnRlcmVkIGluIHRoZSBmb3JtLlxuXG5Gb3IgbW9zdCBtb2Rlcm4gYnJvd3NlcnMgKGluY2x1ZGluZyBGaXJlZm94IDM4KywgR29vZ2xlIENocm9tZSAzNCssIElFIDExKykgc2V0dGluZyB0aGUgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSB3aWxsIG5vdCBwcmV2ZW50IGEgYnJvd3NlcidzIHBhc3N3b3JkIG1hbmFnZXIgZnJvbSBhc2tpbmcgdGhlIHVzZXIgaWYgdGhleSB3YW50IHRvIHN0b3JlIGxvZ2luIGZpZWxkcyAodXNlcm5hbWUgYW5kIHBhc3N3b3JkKSwgaWYgdGhlIHVzZXIgcGVybWl0cyB0aGUgc3RvcmFnZSB0aGUgYnJvd3NlciB3aWxsIGF1dG9maWxsIHRoZSBsb2dpbiB0aGUgbmV4dCB0aW1lIHRoZSB1c2VyIHZpc2l0cyB0aGUgcGFnZS4gU2VlIFtUaGUgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBhbmQgbG9naW4gZmllbGRzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TZWN1cmluZ195b3VyX3NpdGUvVHVybmluZ19vZmZfZm9ybV9hdXRvY29tcGxldGlvbiNUaGVfYXV0b2NvbXBsZXRlX2F0dHJpYnV0ZV9hbmRfbG9naW5fZmllbGRzKS4ifX0se25hbWU6ImVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonV2hlbiB0aGUgdmFsdWUgb2YgdGhlIGBtZXRob2RgIGF0dHJpYnV0ZSBpcyBgcG9zdGAsIGVuY3R5cGUgaXMgdGhlIFtNSU1FIHR5cGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbWVfdHlwZSkgb2YgY29udGVudCB0aGF0IGlzIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHRvIHRoZSBzZXJ2ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYDogVGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBtdWx0aXBhcnQvZm9ybS1kYXRhYDogVGhlIHZhbHVlIHVzZWQgZm9yIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgYHR5cGVgIGF0dHJpYnV0ZSBzZXQgdG8gImZpbGUiLlxuKiAgIGB0ZXh0L3BsYWluYDogKEhUTUw1KVxuXG5UaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtZW5jdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtZW5jdHlwZSkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJtZXRob2QiLHZhbHVlU2V0OiJtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW0hUVFBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFApIG1ldGhvZCB0aGF0IHRoZSBicm93c2VyIHVzZXMgdG8gc3VibWl0IHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHBvc3RgOiBDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbUE9TVCBtZXRob2RdKGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzkuaHRtbCNzZWM5LjUpIDsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLlxuKiAgIGBnZXRgOiBDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbR0VUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuMyk7IGZvcm0gZGF0YSBhcmUgYXBwZW5kZWQgdG8gdGhlIGBhY3Rpb25gIGF0dHJpYnV0ZSBVUkkgd2l0aCBhIFwnP1wnIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLlxuKiAgIGBkaWFsb2dgOiBVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYcKgW2A8ZGlhbG9nPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cgIlRoZSBIVE1MIDxkaWFsb2c+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRpYWxvZyBib3ggb3Igb3RoZXIgaW50ZXJhY3RpdmUgY29tcG9uZW50LCBzdWNoIGFzIGFuIGluc3BlY3RvciBvciB3aW5kb3cuIikgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLlxuXG5UaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtbWV0aG9kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1tZXRob2QpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGZvcm0uIEluIEhUTUwgNCwgaXRzIHVzZSBpcyBkZXByZWNhdGVkIChgaWRgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQpLiBJdCBtdXN0IGJlIHVuaXF1ZSBhbW9uZyB0aGUgZm9ybXMgaW4gYSBkb2N1bWVudCBhbmQgbm90IGp1c3QgYW4gZW1wdHkgc3RyaW5nIGluIEhUTUwgNS4ifX0se25hbWU6Im5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgKGFuZCB0aGVyZWZvcmUgdGhlIGZvcm0gaXMgdmFsaWRhdGVkKSwgdGhpcyBkZWZhdWx0IHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1ub3ZhbGlkYXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1ub3ZhbGlkYXRlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCBiZWxvbmdpbmcgdG8gdGhlIGZvcm0uJ319LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgd2hlcmUgdG8gZGlzcGxheSB0aGUgcmVzcG9uc2UgdGhhdCBpcyByZWNlaXZlZCBhZnRlciBzdWJtaXR0aW5nIHRoZSBmb3JtLiBJbiBIVE1MIDQsIHRoaXMgaXMgdGhlIG5hbWUva2V5d29yZCBmb3IgYSBmcmFtZS4gSW4gSFRNTDUsIGl0IGlzIGEgbmFtZS9rZXl3b3JkIGZvciBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgSFRNTCA0IGZyYW1lIChvciBIVE1MNSBicm93c2luZyBjb250ZXh0KSBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgSFRNTCA0IHdpbmRvdyBvciBIVE1MNSBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgSFRNTCA0IGZyYW1lc2V0IHBhcmVudCBvZiB0aGUgY3VycmVudCBmcmFtZSwgb3IgSFRNTDUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBIVE1MIDQ6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIGZ1bGwgb3JpZ2luYWwgd2luZG93LCBhbmQgY2FuY2VsIGFsbCBvdGhlciBmcmFtZXMuIEhUTUw1OiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAoaS5lLiwgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIF9pZnJhbWVuYW1lXzogVGhlIHJlc3BvbnNlIGlzIGRpc3BsYXllZCBpbiBhIG5hbWVkIFtgPGlmcmFtZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lICJUaGUgSFRNTCBJbmxpbmUgRnJhbWUgZWxlbWVudCAoPGlmcmFtZT4pIHJlcHJlc2VudHMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgZW1iZWRkaW5nIGFub3RoZXIgSFRNTCBwYWdlIGludG8gdGhlIGN1cnJlbnQgb25lLiIpLlxuXG5IVE1MNTogVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybXRhcmdldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtdGFyZ2V0KSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImFjY2VwdCIsZGVzY3JpcHRpb246J0EgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29udGVudCB0eXBlcyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy5cblxuKipVc2FnZSBub3RlOioqIFRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgaW4gSFRNTDUgYW5kIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4gSW5zdGVhZCwgdXNlIHRoZSBbYGFjY2VwdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNhdHRyLWFjY2VwdCkgYXR0cmlidXRlIG9mIHRoZSBzcGVjaWZpYyBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub25zdGFuZGFyZCBhdHRyaWJ1dGUgdXNlZCBieSBpT1MgU2FmYXJpIE1vYmlsZSB3aGljaCBjb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGhlIHRleHQgdmFsdWUgZm9yIHRleHR1YWwgZm9ybSBjb250cm9sIGRlc2NlbmRhbnRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBJZiB0aGUgYGF1dG9jYXBpdGFsaXplYCBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIG9uIGFuIGluZGl2aWR1YWwgZm9ybSBjb250cm9sIGRlc2NlbmRhbnQsIGl0IHRydW1wcyB0aGUgZm9ybS13aWRlIGBhdXRvY2FwaXRhbGl6ZWAgc2V0dGluZy4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHNlbnRlbmNlc2AuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbm9uZWA6IENvbXBsZXRlbHkgZGlzYWJsZXMgYXV0b21hdGljIGNhcGl0YWxpemF0aW9uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSJ9XX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGFiZWwgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBpbiBhIHVzZXIgaW50ZXJmYWNlLiBUaGUgY2FwdGlvbiBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZm9ybSBjb250cm9sLCBrbm93biBhcyB0aGUgbGFiZWwgZWxlbWVudCdzIGxhYmVsZWQgY29udHJvbCwgZWl0aGVyIHVzaW5nIHRoZSBmb3IgYXR0cmlidXRlLCBvciBieSBwdXR0aW5nIHRoZSBmb3JtIGNvbnRyb2wgaW5zaWRlIHRoZSBsYWJlbCBlbGVtZW50IGl0c2VsZi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgd2l0aCB3aGljaCB0aGUgbGFiZWwgaXMgYXNzb2NpYXRlZCAoaXRzIF9mb3JtIG93bmVyXykuIElmIHNwZWNpZmllZCwgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgaXMgdGhlIGBpZGAgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGxldHMgeW91IHBsYWNlIGxhYmVsIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiZm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pZCkgb2YgYSBbbGFiZWxhYmxlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9IVE1ML0NvbnRlbnRfY2F0ZWdvcmllcyNGb3JtX2xhYmVsYWJsZSkgZm9ybS1yZWxhdGVkIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMgdGhlIGA8bGFiZWw+YCBlbGVtZW50LiBUaGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhbiBgaWRgIG1hdGNoaW5nIHRoZSB2YWx1ZSBvZiB0aGUgYGZvcmAgYXR0cmlidXRlIGlzIHRoZSBfbGFiZWxlZCBjb250cm9sXyBmb3IgdGhpcyBsYWJlbCBlbGVtZW50LCBpZiBpdCBpcyBhIGxhYmVsYWJsZSBlbGVtZW50LiBJZiBpdCBpc8Kgbm90IGxhYmVsYWJsZSB0aGVuIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC4gSWYgdGhlcmUgYXJlIG90aGVyIGVsZW1lbnRzIHdoaWNoIGFsc28gbWF0Y2ggdGhlIGBpZGAgdmFsdWUsIGxhdGVyIGluIHRoZSBkb2N1bWVudCwgdGhleSBhcmUgbm90IGNvbnNpZGVyZWQuXG5cbioqTm90ZSoqOiBBIGA8bGFiZWw+YCBlbGVtZW50IGNhbiBoYXZlIGJvdGggYSBgZm9yYCBhdHRyaWJ1dGUgYW5kIGEgY29udGFpbmVkIGNvbnRyb2wgZWxlbWVudCwgYXMgbG9uZyBhcyB0aGUgYGZvcmAgYXR0cmlidXRlIHBvaW50cyB0byB0aGUgY29udGFpbmVkIGNvbnRyb2wgZWxlbWVudC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCJ9XX0se25hbWU6ImlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5wdXQgZWxlbWVudCByZXByZXNlbnRzIGEgdHlwZWQgZGF0YSBmaWVsZCwgdXN1YWxseSB3aXRoIGEgZm9ybSBjb250cm9sIHRvIGFsbG93IHRoZSB1c2VyIHRvIGVkaXQgdGhlIGRhdGEuIn0sYXR0cmlidXRlczpbe25hbWU6ImFjY2VwdCJ9LHtuYW1lOiJhbHQifSx7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUifSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJjaGVja2VkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJkaXJuYW1lIn0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJmb3JtIn0se25hbWU6ImZvcm1hY3Rpb24ifSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCJ9LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0ifSx7bmFtZToiZm9ybW5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm10YXJnZXQifSx7bmFtZToiaGVpZ2h0In0se25hbWU6ImlucHV0bW9kZSIsdmFsdWVTZXQ6ImltIn0se25hbWU6Imxpc3QifSx7bmFtZToibWF4In0se25hbWU6Im1heGxlbmd0aCJ9LHtuYW1lOiJtaW4ifSx7bmFtZToibWlubGVuZ3RoIn0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJuYW1lIn0se25hbWU6InBhdHRlcm4ifSx7bmFtZToicGxhY2Vob2xkZXIifSx7bmFtZToicmVhZG9ubHkiLHZhbHVlU2V0OiJ2In0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJzaXplIn0se25hbWU6InNyYyJ9LHtuYW1lOiJzdGVwIn0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJ0In0se25hbWU6InZhbHVlIn0se25hbWU6IndpZHRoIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCJ9XX0se25hbWU6ImJ1dHRvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJ1dHRvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBidXR0b24gbGFiZWxlZCBieSBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IHRoZSBidXR0b24gc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2FkcywgdW5sZXNzIHRoZSB1c2VyIG92ZXJyaWRlcyBpdCwgZm9yIGV4YW1wbGUgYnkgdHlwaW5nIGluIGEgZGlmZmVyZW50IGNvbnRyb2wuIE9ubHkgb25lIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVkLiJ9fSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBidXR0b24uIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBidXR0b24gaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBbYDxmaWVsZHNldD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQgIlRoZSBIVE1MIDxmaWVsZHNldD4gZWxlbWVudCBpcyB1c2VkIHRvIGdyb3VwIHNldmVyYWwgY29udHJvbHMgYXMgd2VsbCBhcyBsYWJlbHMgKDxsYWJlbD4pIHdpdGhpbiBhIHdlYiBmb3JtLiIpOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgKipkaXNhYmxlZCoqIGF0dHJpYnV0ZSBzZXQsIHRoZW4gdGhlIGJ1dHRvbiBpcyBlbmFibGVkLlxuXG5GaXJlZm94IHdpbGwsIHVubGlrZSBvdGhlciBicm93c2VycywgYnkgZGVmYXVsdCwgW3BlcnNpc3QgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBVc2UgdGhlIFtgYXV0b2NvbXBsZXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWF1dG9jb21wbGV0ZSkgYXR0cmlidXRlIHRvIGNvbnRyb2wgdGhpcyBmZWF0dXJlLid9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCB0aGF0IHRoZSBidXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgX2Zvcm0gb3duZXJfKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSB0aGUgKippZCoqIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPGJ1dHRvbj5gIGVsZW1lbnQgd2lsbCBiZSBhc3NvY2lhdGVkIHRvIGFuIGFuY2VzdG9yIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQsIGlmIG9uZSBleGlzdHMuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIGFzc29jaWF0ZSBgPGJ1dHRvbj5gIGVsZW1lbnRzIHRvIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50cy4nfX0se25hbWU6ImZvcm1hY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkkgb2YgYSBwcm9ncmFtIHRoYXQgcHJvY2Vzc2VzIHRoZSBpbmZvcm1hdGlvbiBzdWJtaXR0ZWQgYnkgdGhlIGJ1dHRvbi4gSWYgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgYWN0aW9uYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1hY3Rpb24pIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm1lbmN0eXBlIix2YWx1ZVNldDoiZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgY29udGVudCB0aGF0IGlzIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHRvIHRoZSBzZXJ2ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYDogVGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBtdWx0aXBhcnQvZm9ybS1kYXRhYDogVXNlIHRoaXMgdmFsdWUgaWYgeW91IGFyZSB1c2luZyBhbiBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IHdpdGggdGhlIFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBzZXQgdG8gYGZpbGVgLlxuKiAgIGB0ZXh0L3BsYWluYFxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BlbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1lbmN0eXBlKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvblwncyBmb3JtIG93bmVyLid9fSx7bmFtZToiZm9ybW1ldGhvZCIsdmFsdWVTZXQ6ImZtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBIVFRQIG1ldGhvZCB0aGF0IHRoZSBicm93c2VyIHVzZXMgdG8gc3VibWl0IHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHBvc3RgOiBUaGUgZGF0YSBmcm9tIHRoZSBmb3JtIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLlxuKiAgIGBnZXRgOiBUaGUgZGF0YSBmcm9tIHRoZSBmb3JtIGFyZSBhcHBlbmRlZCB0byB0aGUgKipmb3JtKiogYXR0cmlidXRlIFVSSSwgd2l0aCBhICc/JyBhcyBhIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLlxuXG5JZiBzcGVjaWZpZWQsIHRoaXMgYXR0cmlidXRlIG92ZXJyaWRlcyB0aGUgW2BtZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW1ldGhvZCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybW5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgZm9ybSBpcyBub3QgdG8gYmUgdmFsaWRhdGVkIHdoZW4gaXQgaXMgc3VibWl0dGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2Bub3ZhbGlkYXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1ub3ZhbGlkYXRlKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3JtdGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgYSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIFRoaXMgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlLCB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci10YXJnZXQpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgYnV0dG9uLCB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiJ9fSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6ImJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHN1Ym1pdGA6IFRoZSBidXR0b24gc3VibWl0cyB0aGUgZm9ybSBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoaXMgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBvciBpZiB0aGUgYXR0cmlidXRlIGlzIGR5bmFtaWNhbGx5IGNoYW5nZWQgdG8gYW4gZW1wdHkgb3IgaW52YWxpZCB2YWx1ZS5cbiogICBgcmVzZXRgOiBUaGUgYnV0dG9uIHJlc2V0cyBhbGwgdGhlIGNvbnRyb2xzIHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLlxuKiAgIGBidXR0b25gOiBUaGUgYnV0dG9uIGhhcyBubyBkZWZhdWx0IGJlaGF2aW9yLiBJdCBjYW4gaGF2ZSBjbGllbnQtc2lkZSBzY3JpcHRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudCdzIGV2ZW50cywgd2hpY2ggYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSBldmVudHMgb2NjdXIuIn19LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGJ1dHRvbi4gSXQgZGVmaW5lcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBidXR0b24gd2hpY2ggaXMgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0gZGF0YS4gVGhpcyB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIHNlcnZlciBpbiBwYXJhbXMgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOidUaGUgdXNlIG9mIHRoaXMgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGlzIG5vbnN0YW5kYXJkIGFuZCBGaXJlZm94LXNwZWNpZmljLiBCeSBkZWZhdWx0LCB1bmxpa2Ugb3RoZXIgYnJvd3NlcnMsIFtGaXJlZm94IHBlcnNpc3RzIHRoZSBkeW5hbWljIGRpc2FibGVkIHN0YXRlXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81OTg1ODM5L2J1Zy13aXRoLWZpcmVmb3gtZGlzYWJsZWQtYXR0cmlidXRlLW9mLWlucHV0LW5vdC1yZXNldHRpbmctd2hlbi1yZWZyZXNoaW5nKSBvZiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBhY3Jvc3MgcGFnZSBsb2Fkcy4gU2V0dGluZyB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgdG8gYG9mZmAgKGkuZS4gYGF1dG9jb21wbGV0ZT0ib2ZmImApIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gU2VlIFtidWfCoDY1NDA3Ml0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDcyICJpZiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkIHdpdGggamF2YXNjcmlwdCwgdGhlIG5vcm1hbCBzdGF0ZSBkb2VzblwndCByZXR1cm4gYWZ0ZXIgcmVmcmVzaGluZyB0aGUgcGFnZSIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uIn1dfSx7bmFtZToic2VsZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2VsZWN0IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgZm9yIHNlbGVjdGluZyBhbW9uZ3N0IGEgc2V0IG9mIG9wdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHByb3ZpZGluZyBhIGhpbnQgZm9yIGEgW3VzZXIgYWdlbnRcJ3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvdXNlcl9hZ2VudCAidXNlciBhZ2VudFwnczogQSB1c2VyIGFnZW50IGlzIGEgY29tcHV0ZXIgcHJvZ3JhbSByZXByZXNlbnRpbmcgYSBwZXJzb24sIGZvciBleGFtcGxlLCBhIGJyb3dzZXIgaW4gYSBXZWIgY29udGV4dC4iKSBhdXRvY29tcGxldGUgZmVhdHVyZS4gU2VlIFtUaGUgSFRNTCBhdXRvY29tcGxldGUgYXR0cmlidXRlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlKSBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHZhbHVlcyBhbmQgZGV0YWlscyBvbiBob3cgdG8gdXNlIGF1dG9jb21wbGV0ZS4nfX0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IGEgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMuIE9ubHkgb25lIGZvcm0gZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoZSBgYXV0b2ZvY3VzYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGNvbnRyb2wuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjb250cm9sIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgYGZpZWxkc2V0YDsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdpdGggdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgY29udHJvbCBpcyBlbmFibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgZm9ybSBlbGVtZW50IHRvwqB3aGljaMKgdGhlIHNlbGVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWTCoCh0aGF0IGlzLCBpdHMgImZvcm0gb3duZXIiKS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdHMgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gVGhpcyBlbmFibGVzIHlvdSB0byBwbGFjZSBzZWxlY3QgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJtdWx0aXBsZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgbXVsdGlwbGUgb3B0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhlIGxpc3QuIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gb25seSBvbmUgb3B0aW9uIGNhbiBiZSBzZWxlY3RlZCBhdCBhIHRpbWUuIFdoZW4gYG11bHRpcGxlYCBpcyBzcGVjaWZpZWQsIG1vc3QgYnJvd3NlcnMgd2lsbCBzaG93IGEgc2Nyb2xsaW5nIGxpc3QgYm94IGluc3RlYWQgb2YgYSBzaW5nbGUgbGluZSBkcm9wZG93bi4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoYXQgYW4gb3B0aW9uIHdpdGggYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlIG11c3QgYmUgc2VsZWN0ZWQuIn19LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgY29udHJvbCBpcyBwcmVzZW50ZWQgYXMgYSBzY3JvbGxpbmcgbGlzdCBib3ggKGUuZy4gd2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCksIHRoaXMgYXR0cmlidXRlIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSBsaXN0IHRoYXQgc2hvdWxkIGJlIHZpc2libGUgYXQgb25lIHRpbWUuIEJyb3dzZXJzIGFyZSBub3QgcmVxdWlyZWQgdG8gcHJlc2VudCBhIHNlbGVjdCBlbGVtZW50IGFzIGEgc2Nyb2xsZWQgbGlzdCBib3guIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuXG5cbioqTm90ZToqKiBBY2NvcmRpbmcgdG8gdGhlIEhUTUw1IHNwZWNpZmljYXRpb24sIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBzaXplIHNob3VsZCBiZSAxOyBob3dldmVyLCBpbiBwcmFjdGljZSwgdGhpcyBoYXMgYmVlbiBmb3VuZCB0byBicmVhayBzb21lIHdlYiBzaXRlcywgYW5kIG5vIG90aGVyIGJyb3dzZXIgY3VycmVudGx5IGRvZXMgdGhhdCwgc28gTW96aWxsYSBoYXMgb3B0ZWQgdG8gY29udGludWUgdG8gcmV0dXJuIDAgZm9yIHRoZSB0aW1lIGJlaW5nIHdpdGggRmlyZWZveC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QifV19LHtuYW1lOiJkYXRhbGlzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRhdGFsaXN0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNldCBvZiBvcHRpb24gZWxlbWVudHMgdGhhdCByZXByZXNlbnQgcHJlZGVmaW5lZCBvcHRpb25zIGZvciBvdGhlciBjb250cm9scy4gSW4gdGhlIHJlbmRlcmluZywgdGhlIGRhdGFsaXN0IGVsZW1lbnQgcmVwcmVzZW50cyBub3RoaW5nIGFuZCBpdCwgYWxvbmcgd2l0aCBpdHMgY2hpbGRyZW4sIHNob3VsZCBiZSBoaWRkZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGF0YWxpc3QifV19LHtuYW1lOiJvcHRncm91cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGdyb3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIG9wdGlvbiBlbGVtZW50cyB3aXRoIGEgY29tbW9uIGxhYmVsLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCBub25lIG9mIHRoZSBpdGVtcyBpbiB0aGlzIG9wdGlvbiBncm91cCBpcyBzZWxlY3RhYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvbid0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50cywgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiJ9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBncm91cCBvZiBvcHRpb25zLCB3aGljaCB0aGUgYnJvd3NlciBjYW4gdXNlIHdoZW4gbGFiZWxpbmcgdGhlIG9wdGlvbnMgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYW5kYXRvcnkgaWYgdGhpcyBlbGVtZW50IGlzIHVzZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAifV19LHtuYW1lOiJvcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvcHRpb24gZWxlbWVudCByZXByZXNlbnRzIGFuIG9wdGlvbiBpbiBhIHNlbGVjdCBlbGVtZW50IG9yIGFzIHBhcnQgb2YgYSBsaXN0IG9mIHN1Z2dlc3Rpb25zIGluIGEgZGF0YWxpc3QgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgdGhpcyBvcHRpb24gaXMgbm90IGNoZWNrYWJsZS4gT2Z0ZW4gYnJvd3NlcnMgZ3JleSBvdXQgc3VjaCBjb250cm9sIGFuZCBpdCB3b25cJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnQsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgb25lcy4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGVsZW1lbnQgY2FuIHN0aWxsIGJlIGRpc2FibGVkIGlmIG9uZSBvZiBpdHMgYW5jZXN0b3JzIGlzIGEgZGlzYWJsZWQgW2A8b3B0Z3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGdyb3VwICJUaGUgSFRNTCA8b3B0Z3JvdXA+IGVsZW1lbnQgY3JlYXRlcyBhIGdyb3VwaW5nIG9mIG9wdGlvbnMgd2l0aGluIGEgPHNlbGVjdD4gZWxlbWVudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGlzIHRleHQgZm9yIHRoZSBsYWJlbCBpbmRpY2F0aW5nIHRoZSBtZWFuaW5nIG9mIHRoZSBvcHRpb24uIElmIHRoZSBgbGFiZWxgIGF0dHJpYnV0ZSBpc24ndCBkZWZpbmVkLCBpdHMgdmFsdWUgaXMgdGhhdCBvZiB0aGUgZWxlbWVudCB0ZXh0IGNvbnRlbnQuIn19LHtuYW1lOiJzZWxlY3RlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHByZXNlbnQsIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIG9wdGlvbiBpcyBpbml0aWFsbHkgc2VsZWN0ZWQuIElmIHRoZSBgPG9wdGlvbj5gIGVsZW1lbnQgaXMgdGhlIGRlc2NlbmRhbnQgb2YgYSBbYDxzZWxlY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCAiVGhlIEhUTUwgPHNlbGVjdD4gZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCB0aGF0IHByb3ZpZGVzIGEgbWVudSBvZiBvcHRpb25zIikgZWxlbWVudCB3aG9zZSBbYG11bHRpcGxlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCNhdHRyLW11bHRpcGxlKSBhdHRyaWJ1dGUgaXMgbm90IHNldCwgb25seSBvbmUgc2luZ2xlIGA8b3B0aW9uPmAgb2YgdGhpcyBbYDxzZWxlY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCAiVGhlIEhUTUwgPHNlbGVjdD4gZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCB0aGF0IHByb3ZpZGVzIGEgbWVudSBvZiBvcHRpb25zIikgZWxlbWVudCBtYXkgaGF2ZSB0aGUgYHNlbGVjdGVkYCBhdHRyaWJ1dGUuJ319LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvbnRlbnQgb2YgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgdmFsdWUgdG8gYmUgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0sIHNob3VsZCB0aGlzIG9wdGlvbiBiZSBzZWxlY3RlZC7CoElmIHRoaXMgYXR0cmlidXRlIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIG9wdGlvbiBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGlvbiJ9XX0se25hbWU6InRleHRhcmVhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGV4dGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGEgbXVsdGlsaW5lIHBsYWluIHRleHQgZWRpdCBjb250cm9sIGZvciB0aGUgZWxlbWVudCdzIHJhdyB2YWx1ZS4gVGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlcHJlc2VudCB0aGUgY29udHJvbCdzIGRlZmF1bHQgdmFsdWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgY2FuIGJlIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gdGhpcyBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSBlbnRyeS5cbiogICBgb25gOiBUaGUgYnJvd3NlciBjYW4gYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgdmFsdWUgYmFzZWQgb24gdmFsdWVzIHRoYXQgdGhlIHVzZXIgaGFzIGVudGVyZWQgZHVyaW5nIHByZXZpb3VzIHVzZXMuXG5cbklmIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBvbiBhIGA8dGV4dGFyZWE+YCBlbGVtZW50LCB0aGVuIHRoZSBicm93c2VyIHVzZXMgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSB2YWx1ZSBvZiB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnRcJ3MgZm9ybSBvd25lci4gVGhlIGZvcm0gb3duZXIgaXMgZWl0aGVyIHRoZSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHRoYXQgdGhpcyBgPHRleHRhcmVhPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3IgdGhlIGZvcm0gZWxlbWVudCB3aG9zZSBgaWRgIGlzIHNwZWNpZmllZCBieSB0aGUgYGZvcm1gIGF0dHJpYnV0ZSBvZiB0aGUgaW5wdXQgZWxlbWVudC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWF1dG9jb21wbGV0ZSkgYXR0cmlidXRlIGluIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmlzaWJsZSB3aWR0aCBvZiB0aGUgdGV4dCBjb250cm9sLCBpbiBhdmVyYWdlIGNoYXJhY3RlciB3aWR0aHMuIElmIGl0IGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGAyMGAuIn19LHtuYW1lOiJkaXJuYW1lIn0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBbYDxmaWVsZHNldD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQgIlRoZSBIVE1MIDxmaWVsZHNldD4gZWxlbWVudCBpcyB1c2VkIHRvIGdyb3VwIHNldmVyYWwgY29udHJvbHMgYXMgd2VsbCBhcyBsYWJlbHMgKDxsYWJlbD4pIHdpdGhpbiBhIHdlYiBmb3JtLiIpOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2hlbiB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgaXMgc2V0LCB0aGUgY29udHJvbCBpcyBlbmFibGVkLid9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCB0aGF0IHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyAiZm9ybSBvd25lciIpLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgbXVzdCBiZSBhIGRlc2NlbmRhbnQgb2YgYSBmb3JtIGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIHBsYWNlIGA8dGV4dGFyZWE+YCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6ImlucHV0bW9kZSIsdmFsdWVTZXQ6ImltIn0se25hbWU6Im1heGxlbmd0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKHVuaWNvZGUgY29kZSBwb2ludHMpIHRoYXQgdGhlIHVzZXIgY2FuIGVudGVyLiBJZiB0aGlzIHZhbHVlIGlzbid0IHNwZWNpZmllZCwgdGhlIHVzZXIgY2FuIGVudGVyIGFuIHVubGltaXRlZCBudW1iZXIgb2YgY2hhcmFjdGVycy4ifX0se25hbWU6Im1pbmxlbmd0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKHVuaWNvZGUgY29kZSBwb2ludHMpIHJlcXVpcmVkIHRoYXQgdGhlIHVzZXIgc2hvdWxkIGVudGVyLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJwbGFjZWhvbGRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBoaW50IHRvIHRoZSB1c2VyIG9mIHdoYXQgY2FuIGJlIGVudGVyZWQgaW4gdGhlIGNvbnRyb2wuIENhcnJpYWdlIHJldHVybnMgb3IgbGluZS1mZWVkcyB3aXRoaW4gdGhlIHBsYWNlaG9sZGVyIHRleHQgbXVzdCBiZSB0cmVhdGVkIGFzIGxpbmUgYnJlYWtzIHdoZW4gcmVuZGVyaW5nIHRoZSBoaW50LlxuXG4qKk5vdGU6KiogUGxhY2Vob2xkZXJzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gc2hvdyBhbiBleGFtcGxlIG9mIHRoZSB0eXBlIG9mIGRhdGEgdGhhdCBzaG91bGQgYmUgZW50ZXJlZCBpbnRvIGEgZm9ybTsgdGhleSBhcmUgX25vdF8gYSBzdWJzdGl0dXRlIGZvciBhIHByb3BlciBbYDxsYWJlbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGFiZWwgIlRoZSBIVE1MIDxsYWJlbD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgYW4gaXRlbSBpbiBhIHVzZXIgaW50ZXJmYWNlLiIpIGVsZW1lbnQgdGllZCB0byB0aGUgaW5wdXQuIFNlZSBbTGFiZWxzIGFuZCBwbGFjZWhvbGRlcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNMYWJlbHNfYW5kX3BsYWNlaG9sZGVycyAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGluIFs8aW5wdXQ+OiBUaGUgSW5wdXQgKEZvcm0gSW5wdXQpIGVsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGZvciBhIGZ1bGwgZXhwbGFuYXRpb24uJ319LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IG1vZGlmeSB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wuIFVubGlrZSB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUsIHRoZSBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBkb2VzIG5vdCBwcmV2ZW50IHRoZSB1c2VyIGZyb20gY2xpY2tpbmcgb3Igc2VsZWN0aW5nIGluIHRoZSBjb250cm9sLiBUaGUgdmFsdWUgb2YgYSByZWFkLW9ubHkgY29udHJvbCBpcyBzdGlsbCBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybS4ifX0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIHVzZXIgbXVzdCBmaWxsIGluIGEgdmFsdWUgYmVmb3JlIHN1Ym1pdHRpbmcgYSBmb3JtLiJ9fSx7bmFtZToicm93cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG51bWJlciBvZiB2aXNpYmxlIHRleHQgbGluZXMgZm9yIHRoZSBjb250cm9sLiJ9fSx7bmFtZToid3JhcCIsdmFsdWVTZXQ6InciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBob3cgdGhlIGNvbnRyb2wgd3JhcHMgdGV4dC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBoYXJkYDogVGhlIGJyb3dzZXIgYXV0b21hdGljYWxseSBpbnNlcnRzIGxpbmUgYnJlYWtzIChDUitMRikgc28gdGhhdCBlYWNoIGxpbmUgaGFzIG5vIG1vcmUgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2w7IHRoZSBgY29sc2AgYXR0cmlidXRlIG11c3QgYWxzbyBiZSBzcGVjaWZpZWQgZm9yIHRoaXMgdG8gdGFrZSBlZmZlY3QuXG4qICAgYHNvZnRgOiBUaGUgYnJvd3NlciBlbnN1cmVzIHRoYXQgYWxsIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSBjb25zaXN0IG9mIGEgQ1IrTEYgcGFpciwgYnV0IGRvZXMgbm90IGluc2VydCBhbnkgYWRkaXRpb25hbCBsaW5lIGJyZWFrcy5cbiogICBgb2ZmYCA6IExpa2UgYHNvZnRgIGJ1dCBjaGFuZ2VzIGFwcGVhcmFuY2UgdG8gYHdoaXRlLXNwYWNlOiBwcmVgIHNvIGxpbmUgc2VnbWVudHMgZXhjZWVkaW5nIGBjb2xzYCBhcmUgbm90IHdyYXBwZWQgYW5kIHRoZSBgPHRleHRhcmVhPmAgYmVjb21lcyBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgYHNvZnRgIGlzIGl0cyBkZWZhdWx0IHZhbHVlLiJ9fSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGlzIGEgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZSBzdXBwb3J0ZWQgYnkgV2ViS2l0IG9uIGlPUyAodGhlcmVmb3JlIG5lYXJseSBhbGwgYnJvd3NlcnMgcnVubmluZyBvbiBpT1MsIGluY2x1ZGluZyBTYWZhcmksIEZpcmVmb3gsIGFuZCBDaHJvbWUpLCB3aGljaCBjb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGhlIHRleHQgdmFsdWUgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIFRoZSBub24tZGVwcmVjYXRlZCB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBpbiBpT1MgNSBhbmQgbGF0ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbm9uZWA6IENvbXBsZXRlbHkgZGlzYWJsZXMgYXV0b21hdGljIGNhcGl0YWxpemF0aW9uLlxuKiAgIGBzZW50ZW5jZXNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBzZW50ZW5jZXMuXG4qICAgYHdvcmRzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygd29yZHMuXG4qICAgYGNoYXJhY3RlcnNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgYWxsIGNoYXJhY3RlcnMuXG4qICAgYG9uYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS5cbiogICBgb2ZmYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS4ifSx7bmFtZToic3BlbGxjaGVjayIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBgPHRleHRhcmVhPmAgaXMgc3ViamVjdCB0byBzcGVsbCBjaGVja2luZyBieSB0aGUgdW5kZXJseWluZyBicm93c2VyL09TLiB0aGUgdmFsdWUgY2FuIGJlOlxuXG4qICAgYHRydWVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGl0cyBzcGVsbGluZyBhbmQgZ3JhbW1hciBjaGVja2VkLlxuKiAgIGBkZWZhdWx0YCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIHRvIGFjdCBhY2NvcmRpbmcgdG8gYSBkZWZhdWx0IGJlaGF2aW9yLCBwb3NzaWJseSBiYXNlZCBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyBvd24gYHNwZWxsY2hlY2tgIHZhbHVlLlxuKiAgIGBmYWxzZWAgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgbm90IGJlIHNwZWxsIGNoZWNrZWQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZXh0YXJlYSJ9XX0se25hbWU6Im91dHB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG91dHB1dCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIGNhbGN1bGF0aW9uIHBlcmZvcm1lZCBieSB0aGUgYXBwbGljYXRpb24sIG9yIHRoZSByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG90aGVyIGVsZW1lbnRz4oCZIFtgaWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lkKXMsIGluZGljYXRpbmcgdGhhdCB0aG9zZSBlbGVtZW50cyBjb250cmlidXRlZCBpbnB1dCB2YWx1ZXMgdG8gKG9yIG90aGVyd2lzZSBhZmZlY3RlZCkgdGhlIGNhbGN1bGF0aW9uLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtmb3JtIGVsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtKSB0aGF0IHRoaXMgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyAiZm9ybSBvd25lciIpLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2Ugb3V0cHV0IGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQsIGV4cG9zZWQgaW4gdGhlIFtgSFRNTEZvcm1FbGVtZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxGb3JtRWxlbWVudCAiVGhlIEhUTUxGb3JtRWxlbWVudCBpbnRlcmZhY2UgcmVwcmVzZW50cyBhIDxmb3JtPiBlbGVtZW50IGluIHRoZSBET007IGl0IGFsbG93cyBhY2Nlc3MgdG8gYW5kIGluIHNvbWUgY2FzZXMgbW9kaWZpY2F0aW9uIG9mIGFzcGVjdHMgb2YgdGhlIGZvcm0sIGFzIHdlbGwgYXMgYWNjZXNzIHRvIGl0cyBjb21wb25lbnQgZWxlbWVudHMuIikgQVBJLid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L291dHB1dCJ9XX0se25hbWU6InByb2dyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcHJvZ3Jlc3MgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb21wbGV0aW9uIHByb2dyZXNzIG9mIGEgdGFzay4gVGhlIHByb2dyZXNzIGlzIGVpdGhlciBpbmRldGVybWluYXRlLCBpbmRpY2F0aW5nIHRoYXQgcHJvZ3Jlc3MgaXMgYmVpbmcgbWFkZSBidXQgdGhhdCBpdCBpcyBub3QgY2xlYXIgaG93IG11Y2ggbW9yZSB3b3JrIHJlbWFpbnMgdG8gYmUgZG9uZSBiZWZvcmUgdGhlIHRhc2sgaXMgY29tcGxldGUgKGUuZy4gYmVjYXVzZSB0aGUgdGFzayBpcyB3YWl0aW5nIGZvciBhIHJlbW90ZSBob3N0IHRvIHJlc3BvbmQpLCBvciB0aGUgcHJvZ3Jlc3MgaXMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIHplcm8gdG8gYSBtYXhpbXVtLCBnaXZpbmcgdGhlIGZyYWN0aW9uIG9mIHdvcmsgdGhhdCBoYXMgc28gZmFyIGJlZW4gY29tcGxldGVkLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBtdWNoIG9mIHRoZSB0YXNrIHRoYXQgaGFzIGJlZW4gY29tcGxldGVkLiBJdCBtdXN0IGJlIGEgdmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgYG1heGAsIG9yIGJldHdlZW4gMCBhbmQgMSBpZiBgbWF4YCBpcyBvbWl0dGVkLiBJZiB0aGVyZSBpcyBubyBgdmFsdWVgIGF0dHJpYnV0ZSwgdGhlIHByb2dyZXNzIGJhciBpcyBpbmRldGVybWluYXRlOyB0aGlzIGluZGljYXRlcyB0aGF0IGFuIGFjdGl2aXR5IGlzIG9uZ29pbmcgd2l0aCBubyBpbmRpY2F0aW9uIG9mIGhvdyBsb25nIGl0IGlzIGV4cGVjdGVkIHRvIHRha2UuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlc2NyaWJlcyBob3cgbXVjaCB3b3JrIHRoZSB0YXNrIGluZGljYXRlZCBieSB0aGUgYHByb2dyZXNzYCBlbGVtZW50IHJlcXVpcmVzLiBUaGUgYG1heGAgYXR0cmlidXRlLCBpZiBwcmVzZW50LCBtdXN0IGhhdmUgYSB2YWx1ZSBncmVhdGVyIHRoYW4gemVybyBhbmQgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJvZ3Jlc3MifV19LHtuYW1lOiJtZXRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNjYWxhciBtZWFzdXJlbWVudCB3aXRoaW4gYSBrbm93biByYW5nZSwgb3IgYSBmcmFjdGlvbmFsIHZhbHVlOyBmb3IgZXhhbXBsZSBkaXNrIHVzYWdlLCB0aGUgcmVsZXZhbmNlIG9mIGEgcXVlcnkgcmVzdWx0LCBvciB0aGUgZnJhY3Rpb24gb2YgYSB2b3RpbmcgcG9wdWxhdGlvbiB0byBoYXZlIHNlbGVjdGVkIGEgcGFydGljdWxhciBjYW5kaWRhdGUuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY3VycmVudCBudW1lcmljIHZhbHVlLiBUaGlzIG11c3QgYmUgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgKGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlKSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkIG9yIG1hbGZvcm1lZCwgdGhlIHZhbHVlIGlzIDAuIElmIHNwZWNpZmllZCwgYnV0IG5vdCB3aXRoaW4gdGhlIHJhbmdlIGdpdmVuIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSwgdGhlIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBuZWFyZXN0IGVuZCBvZiB0aGUgcmFuZ2UuXG5cbioqVXNhZ2Ugbm90ZToqKiBVbmxlc3MgdGhlIGB2YWx1ZWAgYXR0cmlidXRlIGlzIGJldHdlZW4gYDBgIGFuZCBgMWAgKGluY2x1c2l2ZSksIHRoZSBgbWluYCBhbmQgYG1heGAgYXR0cmlidXRlcyBzaG91bGQgZGVmaW5lIHRoZSByYW5nZSBzbyB0aGF0IHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHdpdGhpbiBpdC4ifX0se25hbWU6Im1pbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIChgbWF4YCBhdHRyaWJ1dGUpLCBpZiBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCB0aGUgbWluaW11bSB2YWx1ZSBpcyAwLiJ9fSx7bmFtZToibWF4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXBwZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUgKGBtaW5gIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtYXhpbXVtIHZhbHVlIGlzIDEuIn19LHtuYW1lOiJsb3ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBsb3cgZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGhpZ2ggdmFsdWUgYW5kIG1heGltdW0gdmFsdWUgKGBoaWdoYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUsIHRoZSBgbG93YCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4ifX0se25hbWU6ImhpZ2giLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb3dlciBudW1lcmljIGJvdW5kIG9mIHRoZSBoaWdoIGVuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGFuZCBpdCBhbHNvIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBsb3cgdmFsdWUgYW5kIG1pbmltdW0gdmFsdWUgKGBsb3dgIGF0dHJpYnV0ZSBhbmQgKiptaW4qKiBhdHRyaWJ1dGUsIHJlc3BlY3RpdmVseSksIGlmIGFueSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgb3IgaWYgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlLCB0aGUgYGhpZ2hgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZhbHVlLiJ9fSx7bmFtZToib3B0aW11bSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBvcHRpbWFsIG51bWVyaWMgdmFsdWUuIEl0IG11c3QgYmUgd2l0aGluIHRoZSByYW5nZSAoYXMgZGVmaW5lZCBieSB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpLiBXaGVuIHVzZWQgd2l0aCB0aGUgYGxvd2AgYXR0cmlidXRlIGFuZCBgaGlnaGAgYXR0cmlidXRlLCBpdCBnaXZlcyBhbiBpbmRpY2F0aW9uIHdoZXJlIGFsb25nIHRoZSByYW5nZSBpcyBjb25zaWRlcmVkIHByZWZlcmFibGUuIEZvciBleGFtcGxlLCBpZiBpdCBpcyBiZXR3ZWVuIHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIHRoZSBgbG93YCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGxvd2VyIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVycmVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGFzc29jaWF0ZXMgdGhlIGVsZW1lbnQgd2l0aCBhIGBmb3JtYCBlbGVtZW50IHRoYXQgaGFzIG93bmVyc2hpcCBvZiB0aGUgYG1ldGVyYCBlbGVtZW50LiBGb3IgZXhhbXBsZSwgYSBgbWV0ZXJgIG1pZ2h0IGJlIGRpc3BsYXlpbmcgYSByYW5nZSBjb3JyZXNwb25kaW5nIHRvIGFuIGBpbnB1dGAgZWxlbWVudCBvZiBgdHlwZWAgX251bWJlcl8uIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCBpZiB0aGUgYG1ldGVyYCBlbGVtZW50IGlzIGJlaW5nIHVzZWQgYXMgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudDsgZXZlbiB0aGVuLCBpdCBtYXkgYmUgb21pdHRlZCBpZiB0aGUgZWxlbWVudCBhcHBlYXJzIGFzIGEgZGVzY2VuZGFudCBvZiBhIGBmb3JtYCBlbGVtZW50LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0ZXIifV19LHtuYW1lOiJmaWVsZHNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZWxkc2V0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNldCBvZiBmb3JtIGNvbnRyb2xzIG9wdGlvbmFsbHkgZ3JvdXBlZCB1bmRlciBhIGNvbW1vbiBuYW1lLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCBhbGwgZm9ybSBjb250cm9scyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiB0aGUgYDxmaWVsZHNldD5gLCBhcmUgZGlzYWJsZWQsIG1lYW5pbmcgdGhleSBhcmUgbm90IGVkaXRhYmxlIGFuZCB3b24ndCBiZSBzdWJtaXR0ZWQgYWxvbmcgd2l0aCB0aGUgYDxmb3JtPmAuIFRoZXkgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIGV2ZW50cy4gQnkgZGVmYXVsdCBicm93c2VycyBkaXNwbGF5IHN1Y2ggY29udHJvbHMgZ3JheWVkIG91dC4gTm90ZSB0aGF0IGZvcm0gZWxlbWVudHMgaW5zaWRlIHRoZSBbYDxsZWdlbmQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCBcIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi5cIikgZWxlbWVudCB3b24ndCBiZSBkaXNhYmxlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIHRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHlvdSB3YW50IHRoZSBgPGZpZWxkc2V0PmAgdG8gYmUgcGFydCBvZiwgZXZlbiBpZiBpdCBpcyBub3QgaW5zaWRlIHRoZSBmb3JtLid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cC5cblxuKipOb3RlKio6IFRoZSBjYXB0aW9uIGZvciB0aGUgZmllbGRzZXQgaXMgZ2l2ZW4gYnkgdGhlIGZpcnN0IFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kICJUaGUgSFRNTCA8bGVnZW5kPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgY29udGVudCBvZiBpdHMgcGFyZW50IDxmaWVsZHNldD4uIikgZWxlbWVudCBuZXN0ZWQgaW5zaWRlIGl0Lid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0In1dfSx7bmFtZToibGVnZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGVnZW5kIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgbGVnZW5kIGVsZW1lbnQncyBwYXJlbnQgZmllbGRzZXQgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCJ9XX0se25hbWU6ImRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZXRhaWxzIGVsZW1lbnQgcmVwcmVzZW50cyBhIGRpc2Nsb3N1cmUgd2lkZ2V0IGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIG9idGFpbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIGNvbnRyb2xzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGRldGFpbHMg4oCUIHRoYXQgaXMsIHRoZSBjb250ZW50cyBvZiB0aGUgYDxkZXRhaWxzPmAgZWxlbWVudCDigJQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLiBUaGUgZGVmYXVsdCwgYGZhbHNlYCwgbWVhbnMgdGhlIGRldGFpbHMgYXJlIG5vdCB2aXNpYmxlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RldGFpbHMifV19LHtuYW1lOiJzdW1tYXJ5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3VtbWFyeSBlbGVtZW50IHJlcHJlc2VudHMgYSBzdW1tYXJ5LCBjYXB0aW9uLCBvciBsZWdlbmQgZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgc3VtbWFyeSBlbGVtZW50J3MgcGFyZW50IGRldGFpbHMgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1bW1hcnkifV19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaWFsb2cgZWxlbWVudCByZXByZXNlbnRzIGEgcGFydCBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0byBwZXJmb3JtIGEgdGFzaywgZm9yIGV4YW1wbGUgYSBkaWFsb2cgYm94LCBpbnNwZWN0b3IsIG9yIHdpbmRvdy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib3BlbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBkaWFsb2cgaXMgYWN0aXZlIGFuZCBhdmFpbGFibGUgZm9yIGludGVyYWN0aW9uLiBXaGVuIHRoZSBgb3BlbmAgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBkaWFsb2cgc2hvdWxkbid0IGJlIHNob3duIHRvIHRoZSB1c2VyLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGlhbG9nIn1dfSx7bmFtZToic2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2NyaXB0IGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gaW5jbHVkZSBkeW5hbWljIHNjcmlwdCBhbmQgZGF0YSBibG9ja3MgaW4gdGhlaXIgZG9jdW1lbnRzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBVUkkgb2YgYW4gZXh0ZXJuYWwgc2NyaXB0OyB0aGlzIGNhbiBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGVtYmVkZGluZyBhIHNjcmlwdCBkaXJlY3RseSB3aXRoaW4gYSBkb2N1bWVudC5cblxuSWYgYSBgc2NyaXB0YCBlbGVtZW50IGhhcyBhIGBzcmNgIGF0dHJpYnV0ZSBzcGVjaWZpZWQsIGl0IHNob3VsZCBub3QgaGF2ZSBhIHNjcmlwdCBlbWJlZGRlZCBpbnNpZGUgaXRzIHRhZ3MuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHR5cGUgb2Ygc2NyaXB0IHJlcHJlc2VudGVkLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOlxuXG4qICAgKipPbWl0dGVkIG9yIGEgSmF2YVNjcmlwdCBNSU1FIHR5cGU6KiogRm9yIEhUTUw1LWNvbXBsaWFudCBicm93c2VycyB0aGlzIGluZGljYXRlcyB0aGUgc2NyaXB0IGlzIEphdmFTY3JpcHQuIEhUTUw1IHNwZWNpZmljYXRpb24gdXJnZXMgYXV0aG9ycyB0byBvbWl0IHRoZSBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gcHJvdmlkZSBhIHJlZHVuZGFudCBNSU1FIHR5cGUuIEluIGVhcmxpZXIgYnJvd3NlcnMsIHRoaXMgaWRlbnRpZmllZCB0aGUgc2NyaXB0aW5nIGxhbmd1YWdlIG9mIHRoZSBlbWJlZGRlZCBvciBpbXBvcnRlZCAodmlhIHRoZSBgc3JjYCBhdHRyaWJ1dGUpIGNvZGUuIEphdmFTY3JpcHQgTUlNRSB0eXBlcyBhcmUgW2xpc3RlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzI0phdmFTY3JpcHRfdHlwZXMpLlxuKiAgICoqYG1vZHVsZWA6KiogRm9yIEhUTUw1LWNvbXBsaWFudCBicm93c2VycyB0aGUgY29kZSBpcyB0cmVhdGVkIGFzIGEgSmF2YVNjcmlwdCBtb2R1bGUuIFRoZSBwcm9jZXNzaW5nIG9mIHRoZSBzY3JpcHQgY29udGVudHMgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBgY2hhcnNldGAgYW5kIGBkZWZlcmAgYXR0cmlidXRlcy4gRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGBtb2R1bGVgLCBzZWUgW0VTNiBpbiBEZXB0aDogTW9kdWxlc10oaHR0cHM6Ly9oYWNrcy5tb3ppbGxhLm9yZy8yMDE1LzA4L2VzNi1pbi1kZXB0aC1tb2R1bGVzLykuIENvZGUgbWF5IGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIHRoZSBgbW9kdWxlYCBrZXl3b3JkIGlzIHVzZWQuXG4qICAgKipBbnkgb3RoZXIgdmFsdWU6KiogVGhlIGVtYmVkZGVkIGNvbnRlbnQgaXMgdHJlYXRlZCBhcyBhIGRhdGEgYmxvY2sgd2hpY2ggd29uXCd0IGJlIHByb2Nlc3NlZCBieSB0aGUgYnJvd3Nlci4gRGV2ZWxvcGVycyBtdXN0IHVzZSBhIHZhbGlkIE1JTUUgdHlwZSB0aGF0IGlzIG5vdCBhIEphdmFTY3JpcHQgTUlNRSB0eXBlIHRvIGRlbm90ZSBkYXRhIGJsb2Nrcy4gVGhlIGBzcmNgIGF0dHJpYnV0ZSB3aWxsIGJlIGlnbm9yZWQuXG5cbioqTm90ZToqKiBpbiBGaXJlZm94IHlvdSBjb3VsZCBzcGVjaWZ5IHRoZSB2ZXJzaW9uIG9mIEphdmFTY3JpcHQgY29udGFpbmVkIGluIGEgYDxzY3JpcHQ+YCBlbGVtZW50IGJ5IGluY2x1ZGluZyBhIG5vbi1zdGFuZGFyZCBgdmVyc2lvbmAgcGFyYW1ldGVyIGluc2lkZSB0aGUgYHR5cGVgIGF0dHJpYnV0ZSDigJQgZm9yIGV4YW1wbGUgYHR5cGU9InRleHQvamF2YXNjcmlwdDt2ZXJzaW9uPTEuOCJgLiBUaGlzIGhhcyBiZWVuIHJlbW92ZWQgaW4gRmlyZWZveCA1OSAoc2VlIFtidWfCoDE0Mjg3NDVdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg3NDUgIkZJWEVEOiBSZW1vdmUgc3VwcG9ydCBmb3IgdmVyc2lvbiBwYXJhbWV0ZXIgZnJvbSBzY3JpcHQgbG9hZGVyIikpLid9fSx7bmFtZToiY2hhcnNldCJ9LHtuYW1lOiJhc3luYyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaXMgYSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGJyb3dzZXIgc2hvdWxkLCBpZiBwb3NzaWJsZSwgbG9hZCB0aGUgc2NyaXB0IGFzeW5jaHJvbm91c2x5LlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cykuIElmIGl0IGlzIGluY2x1ZGVkIGluIHRoaXMgY2FzZSBpdCB3aWxsIGhhdmUgbm8gZWZmZWN0LlxuXG5Ccm93c2VycyB1c3VhbGx5IGFzc3VtZSB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBhbmQgbG9hZCBzY3JpcHRzIHN5bmNocm9ub3VzbHksIChpLmUuIGBhc3luYz0iZmFsc2UiYCkgZHVyaW5nIEhUTUwgcGFyc2luZy5cblxuRHluYW1pY2FsbHkgaW5zZXJ0ZWQgc2NyaXB0cyAodXNpbmcgW2Bkb2N1bWVudC5jcmVhdGVFbGVtZW50KClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvY3JlYXRlRWxlbWVudCAiSW4gYW4gSFRNTCBkb2N1bWVudCwgdGhlIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKSBtZXRob2QgY3JlYXRlcyB0aGUgSFRNTCBlbGVtZW50IHNwZWNpZmllZCBieSB0YWdOYW1lLCBvciBhbiBIVE1MVW5rbm93bkVsZW1lbnQgaWYgdGFnTmFtZSBpc25cJ3QgcmVjb2duaXplZC4iKSkgbG9hZCBhc3luY2hyb25vdXNseSBieSBkZWZhdWx0LCBzbyB0byB0dXJuIG9uIHN5bmNocm9ub3VzIGxvYWRpbmcgKGkuZS4gc2NyaXB0cyBsb2FkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgaW5zZXJ0ZWQpIHNldCBgYXN5bmM9ImZhbHNlImAuXG5cblNlZSBbQnJvd3NlciBjb21wYXRpYmlsaXR5XSgjQnJvd3Nlcl9jb21wYXRpYmlsaXR5KSBmb3Igbm90ZXMgb24gYnJvd3NlciBzdXBwb3J0LiBTZWUgYWxzbyBbQXN5bmMgc2NyaXB0cyBmb3IgYXNtLmpzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dhbWVzL1RlY2huaXF1ZXMvQXN5bmNfc2NyaXB0cykuJ319LHtuYW1lOiJkZWZlciIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRvIGEgYnJvd3NlciB0aGF0IHRoZSBzY3JpcHQgaXMgbWVhbnQgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBiZWVuIHBhcnNlZCwgYnV0IGJlZm9yZSBmaXJpbmcgW2BET01Db250ZW50TG9hZGVkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL0RPTUNvbnRlbnRMb2FkZWQgIi9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCIpLlxuXG5TY3JpcHRzIHdpdGggdGhlIGBkZWZlcmAgYXR0cmlidXRlIHdpbGwgcHJldmVudCB0aGUgYERPTUNvbnRlbnRMb2FkZWRgIGV2ZW50IGZyb20gZmlyaW5nIHVudGlsIHRoZSBzY3JpcHQgaGFzIGxvYWRlZCBhbmQgZmluaXNoZWQgZXZhbHVhdGluZy5cblxuVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCBpZiB0aGUgYHNyY2AgYXR0cmlidXRlIGlzIGFic2VudCAoaS5lLiBmb3IgaW5saW5lIHNjcmlwdHMpLCBpbiB0aGlzIGNhc2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QuXG5cblRvIGFjaGlldmUgYSBzaW1pbGFyIGVmZmVjdCBmb3IgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgc2NyaXB0cyB1c2UgYGFzeW5jPSJmYWxzZSJgIGluc3RlYWQuIFNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBleGVjdXRlIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGUgZG9jdW1lbnQuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidOb3JtYWwgYHNjcmlwdGAgZWxlbWVudHMgcGFzcyBtaW5pbWFsIGluZm9ybWF0aW9uIHRvIHRoZSBbYHdpbmRvdy5vbmVycm9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0dsb2JhbEV2ZW50SGFuZGxlcnMvb25lcnJvciAiVGhlIG9uZXJyb3IgcHJvcGVydHkgb2YgdGhlIEdsb2JhbEV2ZW50SGFuZGxlcnMgbWl4aW4gaXMgYW4gRXZlbnRIYW5kbGVyIHRoYXQgcHJvY2Vzc2VzIGVycm9yIGV2ZW50cy4iKSBmb3Igc2NyaXB0cyB3aGljaCBkbyBub3QgcGFzcyB0aGUgc3RhbmRhcmQgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSBjaGVja3MuIFRvIGFsbG93IGVycm9yIGxvZ2dpbmcgZm9yIHNpdGVzIHdoaWNoIHVzZSBhIHNlcGFyYXRlIGRvbWFpbiBmb3Igc3RhdGljIG1lZGlhLCB1c2UgdGhpcyBhdHRyaWJ1dGUuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGEgbW9yZSBkZXNjcmlwdGl2ZSBleHBsYW5hdGlvbiBvZiBpdHMgdmFsaWQgYXJndW1lbnRzLid9fSx7bmFtZToibm9uY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY3J5cHRvZ3JhcGhpYyBub25jZSAobnVtYmVyIHVzZWQgb25jZSkgdG8gd2hpdGVsaXN0IGlubGluZSBzY3JpcHRzIGluIGEgW3NjcmlwdC1zcmMgQ29udGVudC1TZWN1cml0eS1Qb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVNlY3VyaXR5LVBvbGljeS9zY3JpcHQtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNlJ3MgcG9saWN5IGlzIG90aGVyd2lzZSB0cml2aWFsLiJ9fSx7bmFtZToiaW50ZWdyaXR5IixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgaW5saW5lIG1ldGFkYXRhIHRoYXQgYSB1c2VyIGFnZW50IGNhbiB1c2UgdG8gdmVyaWZ5IHRoYXQgYSBmZXRjaGVkIHJlc291cmNlIGhhcyBiZWVuIGRlbGl2ZXJlZCBmcmVlIG9mIHVuZXhwZWN0ZWQgbWFuaXB1bGF0aW9uLiBTZWUgW1N1YnJlc291cmNlIEludGVncml0eV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU3VicmVzb3VyY2VfSW50ZWdyaXR5KS4ifSx7bmFtZToibm9tb2R1bGUiLGRlc2NyaXB0aW9uOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzY3JpcHQgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgW0VTMjAxNSBtb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKSDigJQgaW4gZWZmZWN0LCB0aGlzIGNhbiBiZSB1c2VkIHRvIHNlcnZlIGZhbGxiYWNrIHNjcmlwdHMgdG8gb2xkZXIgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtb2R1bGFyIEphdmFTY3JpcHQgY29kZS4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgc2NyaXB0LCBvciByZXNvdXJjZXMgZmV0Y2hlZCBieSB0aGUgc2NyaXB0OlxuXG4qICAgYG5vLXJlZmVycmVyYDogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgKGRlZmF1bHQpOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQgdG8gW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9vcmlnaW4gIm9yaWdpbjogV2ViIGNvbnRlbnRcJ3Mgb3JpZ2luIGlzIGRlZmluZWQgYnkgdGhlIHNjaGVtZSAocHJvdG9jb2wpLCBob3N0IChkb21haW4pLCBhbmQgcG9ydCBvZiB0aGUgVVJMIHVzZWQgdG8gYWNjZXNzIGl0LiBUd28gb2JqZWN0cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBvbmx5IHdoZW4gdGhlIHNjaGVtZSwgaG9zdCwgYW5kIHBvcnQgYWxsIG1hdGNoLiIpcyB3aXRob3V0IFtUTFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVExTICJUTFM6IFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSwgcHJldmlvdXNseSBrbm93biBhcyBTZWN1cmUgU29ja2V0cyBMYXllciAoU1NMKSwgaXMgYSBwcm90b2NvbCB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBjb21tdW5pY2F0ZSBzZWN1cmVseSBhY3Jvc3MgYSBuZXR3b3JrLCBwcmV2ZW50aW5nIHRhbXBlcmluZyB3aXRoIGFuZCBlYXZlc2Ryb3BwaW5nIG9uIGVtYWlsLCB3ZWIgYnJvd3NpbmcsIG1lc3NhZ2luZywgYW5kIG90aGVyIHByb3RvY29scy4iKSAoW0hUVFBTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0hUVFBTICJIVFRQUzogSFRUUFMgKEhUVFAgU2VjdXJlKSBpcyBhbiBlbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUgSFRUUCBwcm90b2NvbC4gSXQgdXN1YWxseSB1c2VzIFNTTCBvciBUTFMgdG8gZW5jcnlwdCBhbGwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGEgY2xpZW50IGFuZCBhIHNlcnZlci4gVGhpcyBzZWN1cmUgY29ubmVjdGlvbiBhbGxvd3MgY2xpZW50cyB0byBzYWZlbHkgZXhjaGFuZ2Ugc2Vuc2l0aXZlIGRhdGEgd2l0aCBhIHNlcnZlciwgZm9yIGV4YW1wbGUgZm9yIGJhbmtpbmcgYWN0aXZpdGllcyBvciBvbmxpbmUgc2hvcHBpbmcuIikpLlxuKiAgIGBvcmlnaW5gOiBUaGUgc2VudCByZWZlcnJlciB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIG9yaWdpbiBvZiB0aGUgcmVmZXJyaW5nIHBhZ2U6IGl0cyBbc2NoZW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0FyY2hpdmUvTW96aWxsYS9VUklTY2hlbWUpLCBbaG9zdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9ob3N0ICJob3N0OiBBIGhvc3QgaXMgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCAob3IgYSBsb2NhbCBuZXR3b3JrKS4gU29tZSBob3N0cyBjYWxsZWQgc2VydmVycyBvZmZlciBhZGRpdGlvbmFsIHNlcnZpY2VzIGxpa2Ugc2VydmluZyB3ZWJwYWdlcyBvciBzdG9yaW5nIGZpbGVzIGFuZCBlbWFpbHMuIiksIGFuZCBbcG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9wb3J0ICJwb3J0OiBGb3IgYSBjb21wdXRlciBjb25uZWN0ZWQgdG8gYSBuZXR3b3JrIHdpdGggYW4gSVAgYWRkcmVzcywgYSBwb3J0IGlzIGEgY29tbXVuaWNhdGlvbiBlbmRwb2ludC4gUG9ydHMgYXJlIGRlc2lnbmF0ZWQgYnkgbnVtYmVycywgYW5kIGJlbG93IDEwMjQgZWFjaCBwb3J0IGlzIGFzc29jaWF0ZWQgYnkgZGVmYXVsdCB3aXRoIGEgc3BlY2lmaWMgcHJvdG9jb2wuIikuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFRoZSByZWZlcnJlciBzZW50IHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuIE5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIHN0aWxsIGluY2x1ZGUgdGhlIHBhdGguXG4qICAgYHNhbWUtb3JpZ2luYDogQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lIG9yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9TYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUgb3JpZ2luOiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4qICAgYHN0cmljdC1vcmlnaW5gOiBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuIEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoZS5nLiBIVFRQU+KGkkhUVFApLlxuKiAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIGJ1dCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoZS5nLkhUVFBT4oaSSFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoZS5nLiBIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLlxuXG4qKk5vdGUqKjogQW4gZW1wdHkgc3RyaW5nIHZhbHVlIChgIiJgKSBpcyBib3RoIHRoZSBkZWZhdWx0IHZhbHVlLCBhbmQgYSBmYWxsYmFjayB2YWx1ZSBpZiBgcmVmZXJyZXJwb2xpY3lgIGlzIG5vdCBzdXBwb3J0ZWQuIElmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9uIHRoZSBgPHNjcmlwdD5gIGVsZW1lbnQsIGl0IHdpbGwgYWRvcHQgYSBoaWdoZXItbGV2ZWwgcmVmZXJyZXIgcG9saWN5LCBpLmUuIG9uZSBzZXQgb24gdGhlIHdob2xlIGRvY3VtZW50IG9yIGRvbWFpbi4gSWYgYSBoaWdoZXItbGV2ZWwgcG9saWN5IGlzIG5vdCBhdmFpbGFibGUswqB0aGUgZW1wdHkgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYmVpbmcgZXF1aXZhbGVudCB0byBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgLid9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjoiTGlrZSB0aGUgYHRleHRDb250ZW50YCBhdHRyaWJ1dGUsIHRoaXMgYXR0cmlidXRlIHNldHMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZWxlbWVudC4gVW5saWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgaG93ZXZlciwgdGhpcyBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkIGFzIGV4ZWN1dGFibGUgY29kZSBhZnRlciB0aGUgbm9kZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBET00uIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zY3JpcHQifV19LHtuYW1lOiJub3NjcmlwdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5vc2NyaXB0IGVsZW1lbnQgcmVwcmVzZW50cyBub3RoaW5nIGlmIHNjcmlwdGluZyBpcyBlbmFibGVkLCBhbmQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4gaWYgc2NyaXB0aW5nIGlzIGRpc2FibGVkLiBJdCBpcyB1c2VkIHRvIHByZXNlbnQgZGlmZmVyZW50IG1hcmt1cCB0byB1c2VyIGFnZW50cyB0aGF0IHN1cHBvcnQgc2NyaXB0aW5nIGFuZCB0aG9zZSB0aGF0IGRvbid0IHN1cHBvcnQgc2NyaXB0aW5nLCBieSBhZmZlY3RpbmcgaG93IHRoZSBkb2N1bWVudCBpcyBwYXJzZWQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbm9zY3JpcHQifV19LHtuYW1lOiJ0ZW1wbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRlbXBsYXRlIGVsZW1lbnQgaXMgdXNlZCB0byBkZWNsYXJlIGZyYWdtZW50cyBvZiBIVE1MIHRoYXQgY2FuIGJlIGNsb25lZCBhbmQgaW5zZXJ0ZWQgaW4gdGhlIGRvY3VtZW50IGJ5IHNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZW1wbGF0ZSJ9XX0se25hbWU6ImNhbnZhcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNhbnZhcyBlbGVtZW50IHByb3ZpZGVzIHNjcmlwdHMgd2l0aCBhIHJlc29sdXRpb24tZGVwZW5kZW50IGJpdG1hcCBjYW52YXMsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciByZW5kZXJpbmcgZ3JhcGhzLCBnYW1lIGdyYXBoaWNzLCBhcnQsIG9yIG90aGVyIHZpc3VhbCBpbWFnZXMgb24gdGhlIGZseS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAzMDAuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGNvb3JkaW5hdGUgc3BhY2UgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdHMgdG8gMTUwLiJ9fSx7bmFtZToibW96LW9wYXF1ZSIsZGVzY3JpcHRpb246IkxldHMgdGhlIGNhbnZhcyBrbm93IHdoZXRoZXIgb3Igbm90IHRyYW5zbHVjZW5jeSB3aWxsIGJlIGEgZmFjdG9yLiBJZiB0aGUgY2FudmFzIGtub3dzIHRoZXJlJ3Mgbm8gdHJhbnNsdWNlbmN5LCBwYWludGluZyBwZXJmb3JtYW5jZSBjYW4gYmUgb3B0aW1pemVkLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IE1vemlsbGEtYmFzZWQgYnJvd3NlcnM7IHVzZSB0aGUgc3RhbmRhcmRpemVkIFtgY2FudmFzLmdldENvbnRleHQoJzJkJywgeyBhbHBoYTogZmFsc2UgfSlgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTENhbnZhc0VsZW1lbnQvZ2V0Q29udGV4dCBcIlRoZSBIVE1MQ2FudmFzRWxlbWVudC5nZXRDb250ZXh0KCkgbWV0aG9kIHJldHVybnMgYSBkcmF3aW5nIGNvbnRleHQgb24gdGhlIGNhbnZhcywgb3IgbnVsbCBpZiB0aGUgY29udGV4dCBpZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuXCIpIGluc3RlYWQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMifV19XSxnbG9iYWxBdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXNza2V5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm92aWRlcyBhIGhpbnQgZm9yIGdlbmVyYXRpbmcgYSBrZXlib2FyZCBzaG9ydGN1dCBmb3IgdGhlIGN1cnJlbnQgZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgY29uc2lzdHMgb2YgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBjaGFyYWN0ZXJzLiBUaGUgYnJvd3NlciBzaG91bGQgdXNlIHRoZSBmaXJzdCBvbmUgdGhhdCBleGlzdHMgb24gdGhlIGNvbXB1dGVyIGtleWJvYXJkIGxheW91dC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2FjY2Vzc2tleSJ9XX0se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGV4dCBpbnB1dCBpcyBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBvZmZgIG9yIGBub25lYCwgbm8gYXV0b2NhcGl0YWxpemF0aW9uIGlzIGFwcGxpZWQgKGFsbCBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlKVxuKiAgIGBvbmAgb3IgYHNlbnRlbmNlc2AsIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBzZW50ZW5jZSBkZWZhdWx0cyB0byBhIGNhcGl0YWwgbGV0dGVyOyBhbGwgb3RoZXIgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZVxuKiAgIGB3b3Jkc2AsIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCB3b3JkIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYGNoYXJhY3RlcnNgLCBhbGwgbGV0dGVycyBzaG91bGQgZGVmYXVsdCB0byB1cHBlcmNhc2UifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2F1dG9jYXBpdGFsaXplIn1dfSx7bmFtZToiY2xhc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNsYXNzZXMgb2YgdGhlIGVsZW1lbnQuIENsYXNzZXMgYWxsb3dzIENTUyBhbmQgSmF2YVNjcmlwdCB0byBzZWxlY3QgYW5kIGFjY2VzcyBzcGVjaWZpYyBlbGVtZW50cyB2aWEgdGhlIFtjbGFzcyBzZWxlY3RvcnNdKC9lbi1VUy9kb2NzL1dlYi9DU1MvQ2xhc3Nfc2VsZWN0b3JzKSBvciBmdW5jdGlvbnMgbGlrZSB0aGUgbWV0aG9kIFtgRG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpYF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICJyZXR1cm5zIGFuIGFycmF5LWxpa2Ugb2JqZWN0IG9mIGFsbCBjaGlsZCBlbGVtZW50cyB3aGljaCBoYXZlIGFsbCBvZiB0aGUgZ2l2ZW4gY2xhc3MgbmFtZXMuIikuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jbGFzcyJ9XX0se25hbWU6ImNvbnRlbnRlZGl0YWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyBpZiB0aGUgZWxlbWVudCBzaG91bGQgYmUgZWRpdGFibGUgYnkgdGhlIHVzZXIuIElmIHNvLCB0aGUgYnJvd3NlciBtb2RpZmllcyBpdHMgd2lkZ2V0IHRvIGFsbG93IGVkaXRpbmcuIFRoZSBhdHRyaWJ1dGUgbXVzdCB0YWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCBvciB0aGUgX2VtcHR5IHN0cmluZ18sIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG11c3QgYmUgZWRpdGFibGU7XG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBub3QgYmUgZWRpdGFibGUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZW50ZWRpdGFibGUifV19LHtuYW1lOiJjb250ZXh0bWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGBbKippZCoqXSgjYXR0ci1pZClgIG9mIGEgW2A8bWVudT5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21lbnUgIlRoZSBIVE1MIDxtZW51PiBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBjb21tYW5kcyB0aGF0IGEgdXNlciBjYW4gcGVyZm9ybSBvciBhY3RpdmF0ZS4gVGhpcyBpbmNsdWRlcyBib3RoIGxpc3QgbWVudXMsIHdoaWNoIG1pZ2h0IGFwcGVhciBhY3Jvc3MgdGhlIHRvcCBvZiBhIHNjcmVlbiwgYXMgd2VsbCBhcyBjb250ZXh0IG1lbnVzLCBzdWNoIGFzIHRob3NlIHRoYXQgbWlnaHQgYXBwZWFyIHVuZGVybmVhdGggYSBidXR0b24gYWZ0ZXIgaXQgaGFzIGJlZW4gY2xpY2tlZC4iKSB0byB1c2UgYXMgdGhlIGNvbnRleHR1YWwgbWVudSBmb3IgdGhpcyBlbGVtZW50Lid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY29udGV4dG1lbnUifV19LHtuYW1lOiJkaXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBlbGVtZW50J3MgdGV4dC4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgbHRyYCwgd2hpY2ggbWVhbnMgX2xlZnQgdG8gcmlnaHRfIGFuZCBpcyB0byBiZSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBhcmUgd3JpdHRlbiBmcm9tIHRoZSBsZWZ0IHRvIHRoZSByaWdodCAobGlrZSBFbmdsaXNoKTtcbiogICBgcnRsYCwgd2hpY2ggbWVhbnMgX3JpZ2h0IHRvIGxlZnRfIGFuZCBpcyB0byBiZSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBhcmUgd3JpdHRlbiBmcm9tIHRoZSByaWdodCB0byB0aGUgbGVmdCAobGlrZSBBcmFiaWMpO1xuKiAgIGBhdXRvYCwgd2hpY2ggbGV0cyB0aGUgdXNlciBhZ2VudCBkZWNpZGUuIEl0IHVzZXMgYSBiYXNpYyBhbGdvcml0aG0gYXMgaXQgcGFyc2VzIHRoZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgZWxlbWVudCB1bnRpbCBpdCBmaW5kcyBhIGNoYXJhY3RlciB3aXRoIGEgc3Ryb25nIGRpcmVjdGlvbmFsaXR5LCB0aGVuIGl0IGFwcGxpZXMgdGhhdCBkaXJlY3Rpb25hbGl0eSB0byB0aGUgd2hvbGUgZWxlbWVudC4ifSx2YWx1ZVNldDoiZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9kaXIifV19LHtuYW1lOiJkcmFnZ2FibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZWxlbWVudCBjYW4gYmUgZHJhZ2dlZCwgdXNpbmcgdGhlIFtEcmFnIGFuZCBEcm9wIEFQSV0oL2VuLXVzL2RvY3MvRHJhZ0Ryb3AvRHJhZ19hbmRfRHJvcCkuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtYXkgYmUgZHJhZ2dlZFxuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBub3QgYmUgZHJhZ2dlZC4ifSx2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9kcmFnZ2FibGUifV19LHtuYW1lOiJkcm9wem9uZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGF0IHR5cGVzIG9mIGNvbnRlbnQgY2FuIGJlIGRyb3BwZWQgb24gYW4gZWxlbWVudCwgdXNpbmcgdGhlIFtEcmFnIGFuZCBEcm9wIEFQSV0oL2VuLVVTL2RvY3MvRHJhZ0Ryb3AvRHJhZ19hbmRfRHJvcCkuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGNvcHlgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCBkcm9wcGluZyB3aWxsIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXMgZHJhZ2dlZFxuKiAgIGBtb3ZlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgdGhhdCB3YXMgZHJhZ2dlZCB3aWxsIGJlIG1vdmVkIHRvIHRoaXMgbmV3IGxvY2F0aW9uLlxuKiAgIGBsaW5rYCwgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBkcmFnZ2VkIGRhdGEuIn19LHtuYW1lOiJleHBvcnRwYXJ0cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlZCB0byB0cmFuc2l0aXZlbHkgZXhwb3J0IHNoYWRvdyBwYXJ0cyBmcm9tIGEgbmVzdGVkIHNoYWRvdyB0cmVlIGludG8gYSBjb250YWluaW5nIGxpZ2h0IHRyZWUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9leHBvcnRwYXJ0cyJ9XX0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgeWV0LCBvciBpcyBubyBsb25nZXIsIF9yZWxldmFudF8uIEZvciBleGFtcGxlLCBpdCBjYW4gYmUgdXNlZCB0byBoaWRlIGVsZW1lbnRzIG9mIHRoZSBwYWdlIHRoYXQgY2FuJ3QgYmUgdXNlZCB1bnRpbCB0aGUgbG9naW4gcHJvY2VzcyBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBicm93c2VyIHdvbid0IHJlbmRlciBzdWNoIGVsZW1lbnRzLiBUaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIHRvIGhpZGUgY29udGVudCB0aGF0IGNvdWxkIGxlZ2l0aW1hdGVseSBiZSBzaG93bi4ifSx2YWx1ZVNldDoidiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9oaWRkZW4ifV19LHtuYW1lOiJpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHVuaXF1ZSBpZGVudGlmaWVyIChJRCkgd2hpY2ggbXVzdCBiZSB1bmlxdWUgaW4gdGhlIHdob2xlIGRvY3VtZW50LiBJdHMgcHVycG9zZSBpcyB0byBpZGVudGlmeSB0aGUgZWxlbWVudCB3aGVuIGxpbmtpbmcgKHVzaW5nIGEgZnJhZ21lbnQgaWRlbnRpZmllciksIHNjcmlwdGluZywgb3Igc3R5bGluZyAod2l0aCBDU1MpLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQifV19LHtuYW1lOiJpbnB1dG1vZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1Byb3ZpZGVzIGEgaGludCB0byBicm93c2VycyBhcyB0byB0aGUgdHlwZSBvZiB2aXJ0dWFsIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHdoZW4gZWRpdGluZyB0aGlzIGVsZW1lbnQgb3IgaXRzIGNvbnRlbnRzLiBVc2VkIHByaW1hcmlseSBvbiBbYDxpbnB1dD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudHMsIGJ1dCBpcyB1c2FibGUgb24gYW55IGVsZW1lbnQgd2hpbGUgaW4gYFtjb250ZW50ZWRpdGFibGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItY29udGVudGVkaXRhYmxlKWAgbW9kZS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lucHV0bW9kZSJ9XX0se25hbWU6ImlzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhhdCBhIHN0YW5kYXJkIEhUTUwgZWxlbWVudCBzaG91bGQgYmVoYXZlIGxpa2UgYSByZWdpc3RlcmVkIGN1c3RvbSBidWlsdC1pbiBlbGVtZW50IChzZWUgW1VzaW5nIGN1c3RvbSBlbGVtZW50c10oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1VzaW5nX2N1c3RvbV9lbGVtZW50cykgZm9yIG1vcmUgZGV0YWlscykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pcyJ9XX0se25hbWU6Iml0ZW1pZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVuaXF1ZSwgZ2xvYmFsIGlkZW50aWZpZXIgb2YgYW4gaXRlbS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1pZCJ9XX0se25hbWU6Iml0ZW1wcm9wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIGFkZCBwcm9wZXJ0aWVzIHRvIGFuIGl0ZW0uIEV2ZXJ5IEhUTUwgZWxlbWVudCBtYXkgaGF2ZSBhbiBgaXRlbXByb3BgIGF0dHJpYnV0ZSBzcGVjaWZpZWQsIHdoZXJlIGFuIGBpdGVtcHJvcGAgY29uc2lzdHMgb2YgYSBuYW1lIGFuZCB2YWx1ZSBwYWlyLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXByb3AifV19LHtuYW1lOiJpdGVtcmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiBhbiBlbGVtZW50IHdpdGggdGhlIGBpdGVtc2NvcGVgIGF0dHJpYnV0ZSBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtIHVzaW5nIGFuIGBpdGVtcmVmYC4gSXQgcHJvdmlkZXMgYSBsaXN0IG9mIGVsZW1lbnQgaWRzIChub3QgYGl0ZW1pZGBzKSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXJlZiJ9XX0se25hbWU6Iml0ZW1zY29wZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiYGl0ZW1zY29wZWAgKHVzdWFsbHkpIHdvcmtzIGFsb25nIHdpdGggYFtpdGVtdHlwZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtdHlwZSlgIHRvIHNwZWNpZnkgdGhhdCB0aGUgSFRNTCBjb250YWluZWQgaW4gYSBibG9jayBpcyBhYm91dCBhIHBhcnRpY3VsYXIgaXRlbS4gYGl0ZW1zY29wZWAgY3JlYXRlcyB0aGUgSXRlbSBhbmQgZGVmaW5lcyB0aGUgc2NvcGUgb2YgdGhlIGBpdGVtdHlwZWAgYXNzb2NpYXRlZCB3aXRoIGl0LiBgaXRlbXR5cGVgIGlzIGEgdmFsaWQgVVJMIG9mIGEgdm9jYWJ1bGFyeSAoc3VjaCBhcyBbc2NoZW1hLm9yZ10oaHR0cHM6Ly9zY2hlbWEub3JnLykpIHRoYXQgZGVzY3JpYmVzIHRoZSBpdGVtIGFuZCBpdHMgcHJvcGVydGllcyBjb250ZXh0LiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1zY29wZSJ9XX0se25hbWU6Iml0ZW10eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIFVSTCBvZiB0aGUgdm9jYWJ1bGFyeSB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZWZpbmUgYGl0ZW1wcm9wYHMgKGl0ZW0gcHJvcGVydGllcykgaW4gdGhlIGRhdGEgc3RydWN0dXJlLiBgW2l0ZW1zY29wZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtc2NvcGUpYCBpcyB1c2VkIHRvIHNldCB0aGUgc2NvcGUgb2Ygd2hlcmUgaW4gdGhlIGRhdGEgc3RydWN0dXJlIHRoZSB2b2NhYnVsYXJ5IHNldCBieSBgaXRlbXR5cGVgIHdpbGwgYmUgYWN0aXZlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXR5cGUifV19LHtuYW1lOiJsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJIZWxwcyBkZWZpbmUgdGhlIGxhbmd1YWdlIG9mIGFuIGVsZW1lbnQ6IHRoZSBsYW5ndWFnZSB0aGF0IG5vbi1lZGl0YWJsZSBlbGVtZW50cyBhcmUgaW4sIG9yIHRoZSBsYW5ndWFnZSB0aGF0IGVkaXRhYmxlIGVsZW1lbnRzIHNob3VsZCBiZSB3cml0dGVuIGluIGJ5IHRoZSB1c2VyLiBUaGUgYXR0cmlidXRlIGNvbnRhaW5zIG9uZSDigJxsYW5ndWFnZSB0YWfigJ0gKG1hZGUgb2YgaHlwaGVuLXNlcGFyYXRlZCDigJxsYW5ndWFnZSBzdWJ0YWdz4oCdKSBpbiB0aGUgZm9ybWF0IGRlZmluZWQgaW4gW19UYWdzIGZvciBJZGVudGlmeWluZyBMYW5ndWFnZXMgKEJDUDQ3KV9dKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0KS4gWyoqeG1sOmxhbmcqKl0oI2F0dHIteG1sOmxhbmcpIGhhcyBwcmlvcml0eSBvdmVyIGl0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZyJ9XX0se25hbWU6InBhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHBhcnQgbmFtZXMgb2YgdGhlIGVsZW1lbnQuIFBhcnQgbmFtZXMgYWxsb3dzIENTUyB0byBzZWxlY3QgYW5kIHN0eWxlIHNwZWNpZmljIGVsZW1lbnRzIGluIGEgc2hhZG93IHRyZWUgdmlhIHRoZSBbYDo6cGFydGBdKC9lbi1VUy9kb2NzL1dlYi9DU1MvOjpwYXJ0ICJUaGUgOjpwYXJ0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHdpdGhpbiBhIHNoYWRvdyB0cmVlIHRoYXQgaGFzIGEgbWF0Y2hpbmcgcGFydCBhdHRyaWJ1dGUuIikgcHNldWRvLWVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9wYXJ0In1dfSx7bmFtZToicm9sZSIsdmFsdWVTZXQ6InJvbGVzIn0se25hbWU6InNsb3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFzc2lnbnMgYSBzbG90IGluIGEgW3NoYWRvdyBET01dKC9lbi1VUy9kb2NzL1dlYi9XZWJfQ29tcG9uZW50cy9TaGFkb3dfRE9NKSBzaGFkb3cgdHJlZSB0byBhbiBlbGVtZW50OiBBbiBlbGVtZW50IHdpdGggYSBgc2xvdGAgYXR0cmlidXRlIGlzIGFzc2lnbmVkIHRvIHRoZSBzbG90IGNyZWF0ZWQgYnkgdGhlIFtgPHNsb3Q+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbG90IFwiVGhlIEhUTUwgPHNsb3Q+IGVsZW1lbnTigJRwYXJ0IG9mIHRoZSBXZWIgQ29tcG9uZW50cyB0ZWNobm9sb2d5IHN1aXRl4oCUaXMgYSBwbGFjZWhvbGRlciBpbnNpZGUgYSB3ZWIgY29tcG9uZW50IHRoYXQgeW91IGNhbiBmaWxsIHdpdGggeW91ciBvd24gbWFya3VwLCB3aGljaCBsZXRzIHlvdSBjcmVhdGUgc2VwYXJhdGUgRE9NIHRyZWVzIGFuZCBwcmVzZW50IHRoZW0gdG9nZXRoZXIuXCIpIGVsZW1lbnQgd2hvc2UgYFtuYW1lXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QjYXR0ci1uYW1lKWAgYXR0cmlidXRlJ3MgdmFsdWUgbWF0Y2hlcyB0aGF0IGBzbG90YCBhdHRyaWJ1dGUncyB2YWx1ZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3Nsb3QifV19LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBkZWZpbmVzIHdoZXRoZXIgdGhlIGVsZW1lbnQgbWF5IGJlIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycy4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSwgaWYgcG9zc2libGUsIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycztcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgbm90IGJlIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycy4ifSx2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zcGVsbGNoZWNrIn1dfSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0NvbnRhaW5zIFtDU1NdKC9lbi1VUy9kb2NzL1dlYi9DU1MpIHN0eWxpbmcgZGVjbGFyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQuIE5vdGUgdGhhdCBpdCBpcyByZWNvbW1lbmRlZCBmb3Igc3R5bGVzIHRvIGJlIGRlZmluZWQgaW4gYSBzZXBhcmF0ZSBmaWxlIG9yIGZpbGVzLiBUaGlzIGF0dHJpYnV0ZSBhbmQgdGhlIFtgPHN0eWxlPmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUgIlRoZSBIVE1MIDxzdHlsZT4gZWxlbWVudCBjb250YWlucyBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgYSBkb2N1bWVudCwgb3IgcGFydCBvZiBhIGRvY3VtZW50LiIpIGVsZW1lbnQgaGF2ZSBtYWlubHkgdGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgZm9yIHF1aWNrIHN0eWxpbmcsIGZvciBleGFtcGxlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc3R5bGUifV19LHtuYW1lOiJ0YWJpbmRleCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gaW50ZWdlciBhdHRyaWJ1dGUgaW5kaWNhdGluZyBpZiB0aGUgZWxlbWVudCBjYW4gdGFrZSBpbnB1dCBmb2N1cyAoaXMgX2ZvY3VzYWJsZV8pLCBpZiBpdCBzaG91bGQgcGFydGljaXBhdGUgdG8gc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLCBhbmQgaWYgc28sIGF0IHdoYXQgcG9zaXRpb24uIEl0IGNhbiB0YWtlIHNldmVyYWwgdmFsdWVzOlxuXG4qICAgYSBfbmVnYXRpdmUgdmFsdWVfIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSwgYnV0IHNob3VsZCBub3QgYmUgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb247XG4qICAgYDBgIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBhbmQgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGJ1dCBpdHMgcmVsYXRpdmUgb3JkZXIgaXMgZGVmaW5lZCBieSB0aGUgcGxhdGZvcm0gY29udmVudGlvbjtcbiogICBhIF9wb3NpdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjsgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBlbGVtZW50cyBhcmUgZm9jdXNlZCBpcyB0aGUgaW5jcmVhc2luZyB2YWx1ZSBvZiB0aGUgWyoqdGFiaW5kZXgqKl0oI2F0dHItdGFiaW5kZXgpLiBJZiBzZXZlcmFsIGVsZW1lbnRzIHNoYXJlIHRoZSBzYW1lIHRhYmluZGV4LCB0aGVpciByZWxhdGl2ZSBvcmRlciBmb2xsb3dzIHRoZWlyIHJlbGF0aXZlIHBvc2l0aW9ucyBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCJ9XX0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIHRleHQgcmVwcmVzZW50aW5nIGFkdmlzb3J5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIGVsZW1lbnQgaXQgYmVsb25ncyB0by4gU3VjaCBpbmZvcm1hdGlvbiBjYW4gdHlwaWNhbGx5LCBidXQgbm90IG5lY2Vzc2FyaWx5LCBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgYXMgYSB0b29sdGlwLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGl0bGUifV19LHtuYW1lOiJ0cmFuc2xhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIHRoYXQgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXRoZXIgYW4gZWxlbWVudCdzIGF0dHJpYnV0ZSB2YWx1ZXMgYW5kIHRoZSB2YWx1ZXMgb2YgaXRzIFtgVGV4dGBdKC9lbi1VUy9kb2NzL1dlYi9BUEkvVGV4dCBcIlRoZSBUZXh0IGludGVyZmFjZSByZXByZXNlbnRzIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb2YgRWxlbWVudCBvciBBdHRyLiBJZiBhbiBlbGVtZW50IGhhcyBubyBtYXJrdXAgd2l0aGluIGl0cyBjb250ZW50LCBpdCBoYXMgYSBzaW5nbGUgY2hpbGQgaW1wbGVtZW50aW5nIFRleHQgdGhhdCBjb250YWlucyB0aGUgZWxlbWVudCdzIHRleHQuIEhvd2V2ZXIsIGlmIHRoZSBlbGVtZW50IGNvbnRhaW5zIG1hcmt1cCwgaXQgaXMgcGFyc2VkIGludG8gaW5mb3JtYXRpb24gaXRlbXMgYW5kIFRleHQgbm9kZXMgdGhhdCBmb3JtIGl0cyBjaGlsZHJlbi5cIikgbm9kZSBjaGlsZHJlbiBhcmUgdG8gYmUgdHJhbnNsYXRlZCB3aGVuIHRoZSBwYWdlIGlzIGxvY2FsaXplZCwgb3Igd2hldGhlciB0byBsZWF2ZSB0aGVtIHVuY2hhbmdlZC4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBlbXB0eSBzdHJpbmcgYW5kIGB5ZXNgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIGJlIHRyYW5zbGF0ZWQuXG4qICAgYG5vYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgd2lsbCBub3QgYmUgdHJhbnNsYXRlZC4ifSx2YWx1ZVNldDoieSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90cmFuc2xhdGUifV19LHtuYW1lOiJvbmFib3J0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG9hZGluZyBvZiBhIHJlc291cmNlIGhhcyBiZWVuIGFib3J0ZWQuIn19LHtuYW1lOiJvbmJsdXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaGFzIGxvc3QgZm9jdXMgKGRvZXMgbm90IGJ1YmJsZSkuIn19LHtuYW1lOiJvbmNhbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGNhbiBwbGF5IHRoZSBtZWRpYSwgYnV0IGVzdGltYXRlcyB0aGF0IG5vdCBlbm91Z2ggZGF0YSBoYXMgYmVlbiBsb2FkZWQgdG8gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jYW5wbGF5dGhyb3VnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhIHVwIHRvIGl0cyBlbmQgd2l0aG91dCBoYXZpbmcgdG8gc3RvcCBmb3IgZnVydGhlciBidWZmZXJpbmcgb2YgY29udGVudC4ifX0se25hbWU6Im9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIGZvciA8aW5wdXQ+LCA8c2VsZWN0PiwgYW5kIDx0ZXh0YXJlYT4gZWxlbWVudHMgd2hlbiBhIGNoYW5nZSB0byB0aGUgZWxlbWVudCdzIHZhbHVlIGlzIGNvbW1pdHRlZCBieSB0aGUgdXNlci4ifX0se25hbWU6Im9uY2xpY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkIGFuZCByZWxlYXNlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25jb250ZXh0bWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJpZ2h0IGJ1dHRvbiBvZiB0aGUgbW91c2UgaXMgY2xpY2tlZCAoYmVmb3JlIHRoZSBjb250ZXh0IG1lbnUgaXMgZGlzcGxheWVkKS4ifX0se25hbWU6Im9uZGJsY2xpY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyBjbGlja2VkIHR3aWNlIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmRyYWciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCAoZXZlcnkgMzUwbXMpLiJ9fSx7bmFtZToib25kcmFnZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWcgb3BlcmF0aW9uIGlzIGJlaW5nIGVuZGVkIChieSByZWxlYXNpbmcgYSBtb3VzZSBidXR0b24gb3IgaGl0dGluZyB0aGUgZXNjYXBlIGtleSkuIn19LHtuYW1lOiJvbmRyYWdlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnZ2VkIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gZW50ZXJzIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmRyYWdsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnZ2VkIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gbGVhdmVzIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmRyYWdvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGlzIGJlaW5nIGRyYWdnZWQgb3ZlciBhIHZhbGlkIGRyb3AgdGFyZ2V0IChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nIGFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24uIn19LHtuYW1lOiJvbmRyb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaXMgZHJvcHBlZCBvbiBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kdXJhdGlvbmNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR1cmF0aW9uIGF0dHJpYnV0ZSBoYXMgYmVlbiB1cGRhdGVkLiJ9fSx7bmFtZToib25lbXB0aWVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWVkaWEgaGFzIGJlY29tZSBlbXB0eTsgZm9yIGV4YW1wbGUsIHRoaXMgZXZlbnQgaXMgc2VudCBpZiB0aGUgbWVkaWEgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQgKG9yIHBhcnRpYWxseSBsb2FkZWQpLCBhbmQgdGhlIGxvYWQoKSBtZXRob2QgaXMgY2FsbGVkIHRvIHJlbG9hZCBpdC4ifX0se25hbWU6Im9uZW5kZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBzdG9wcGVkIGJlY2F1c2UgdGhlIGVuZCBvZiB0aGUgbWVkaWEgd2FzIHJlYWNoZWQuIn19LHtuYW1lOiJvbmVycm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGZhaWxlZCB0byBsb2FkLiJ9fSx7bmFtZToib25mb2N1cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgcmVjZWl2ZWQgZm9jdXMgKGRvZXMgbm90IGJ1YmJsZSkuIn19LHtuYW1lOiJvbmZvcm1jaGFuZ2UifSx7bmFtZToib25mb3JtaW5wdXQifSx7bmFtZToib25pbnB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhbHVlIG9mIGFuIGVsZW1lbnQgY2hhbmdlcyBvciB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IHdpdGggdGhlIGF0dHJpYnV0ZSBjb250ZW50ZWRpdGFibGUgaXMgbW9kaWZpZWQuIn19LHtuYW1lOiJvbmludmFsaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3VibWl0dGFibGUgZWxlbWVudCBoYXMgYmVlbiBjaGVja2VkIGFuZCBkb2Vzbid0IHNhdGlzZnkgaXRzIGNvbnN0cmFpbnRzLiJ9fSx7bmFtZToib25rZXlkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyBwcmVzc2VkIGRvd24uIn19LHtuYW1lOiJvbmtleXByZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyBwcmVzc2VkIGRvd24gYW5kIHRoYXQga2V5IG5vcm1hbGx5IHByb2R1Y2VzIGEgY2hhcmFjdGVyIHZhbHVlICh1c2UgaW5wdXQgaW5zdGVhZCkuIn19LHtuYW1lOiJvbmtleXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyByZWxlYXNlZC4ifX0se25hbWU6Im9ubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSByZXNvdXJjZSBhbmQgaXRzIGRlcGVuZGVudCByZXNvdXJjZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLiJ9fSx7bmFtZToib25sb2FkZWRkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlyc3QgZnJhbWUgb2YgdGhlIG1lZGlhIGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9fSx7bmFtZToib25sb2FkZWRtZXRhZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGFkYXRhIGhhcyBiZWVuIGxvYWRlZC4ifX0se25hbWU6Im9ubG9hZHN0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm9ncmVzcyBoYXMgYmVndW4uIn19LHtuYW1lOiJvbm1vdXNlZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uICh1c3VhbGx5IGEgbW91c2UpIGlzIHByZXNzZWQgb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2Vtb3ZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvdmVyIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNlb3V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvZmYgdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkIG9yIG9mZiBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZW92ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9udG8gdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkIG9yIG9udG8gb25lIG9mIGl0cyBjaGlsZHJlbi4ifX0se25hbWU6Im9ubW91c2V1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIHJlbGVhc2VkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2V3aGVlbCJ9LHtuYW1lOiJvbm1vdXNlZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9udG8gdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkLiJ9fSx7bmFtZToib25tb3VzZWxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvZmYgdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkLiJ9fSx7bmFtZToib25wYXVzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIGJlZW4gcGF1c2VkLiJ9fSx7bmFtZToib25wbGF5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVndW4uIn19LHtuYW1lOiJvbnBsYXlpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGlzIHJlYWR5IHRvIHN0YXJ0IGFmdGVyIGhhdmluZyBiZWVuIHBhdXNlZCBvciBkZWxheWVkIGR1ZSB0byBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnByb2dyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbiBwcm9ncmVzcy4ifX0se25hbWU6Im9ucmF0ZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBsYXliYWNrIHJhdGUgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnJlc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGZvcm0gaXMgcmVzZXQuIn19LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRvY3VtZW50IHZpZXcgaGFzIGJlZW4gcmVzaXplZC4ifX0se25hbWU6Im9ucmVhZHlzdGF0ZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIG9mIGEgZG9jdW1lbnQgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnNjcm9sbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRvY3VtZW50IHZpZXcgb3IgYW4gZWxlbWVudCBoYXMgYmVlbiBzY3JvbGxlZC4ifX0se25hbWU6Im9uc2Vla2VkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGNvbXBsZXRlZC4ifX0se25hbWU6Im9uc2Vla2luZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzZWVrIG9wZXJhdGlvbiBiZWdhbi4ifX0se25hbWU6Im9uc2VsZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTb21lIHRleHQgaXMgYmVpbmcgc2VsZWN0ZWQuIn19LHtuYW1lOiJvbnNob3ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY29udGV4dG1lbnUgZXZlbnQgd2FzIGZpcmVkIG9uL2J1YmJsZWQgdG8gYW4gZWxlbWVudCB0aGF0IGhhcyBhIGNvbnRleHRtZW51IGF0dHJpYnV0ZSJ9fSx7bmFtZToib25zdGFsbGVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBpcyB0cnlpbmcgdG8gZmV0Y2ggbWVkaWEgZGF0YSwgYnV0IGRhdGEgaXMgdW5leHBlY3RlZGx5IG5vdCBmb3J0aGNvbWluZy4ifX0se25hbWU6Im9uc3VibWl0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGZvcm0gaXMgc3VibWl0dGVkLiJ9fSx7bmFtZToib25zdXNwZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJNZWRpYSBkYXRhIGxvYWRpbmcgaGFzIGJlZW4gc3VzcGVuZGVkLiJ9fSx7bmFtZToib250aW1ldXBkYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGltZSBpbmRpY2F0ZWQgYnkgdGhlIGN1cnJlbnRUaW1lIGF0dHJpYnV0ZSBoYXMgYmVlbiB1cGRhdGVkLiJ9fSx7bmFtZToib252b2x1bWVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2b2x1bWUgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbndhaXRpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBzdG9wcGVkIGJlY2F1c2Ugb2YgYSB0ZW1wb3JhcnkgbGFjayBvZiBkYXRhLiJ9fSx7bmFtZToib25wb2ludGVyY2FuY2VsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGFueSBtb3JlIGV2ZW50cy4ifX0se25hbWU6Im9ucG9pbnRlcmRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGVudGVycyB0aGUgYWN0aXZlIGJ1dHRvbnMgc3RhdGUuIn19LHtuYW1lOiJvbnBvaW50ZXJlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIGluc2lkZSB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG91dCBvZiB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciB3YXMgbG9ja2VkIG9yIHJlbGVhc2VkLiJ9fSx7bmFtZToib25wb2ludGVybG9ja2Vycm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJdCB3YXMgaW1wb3NzaWJsZSB0byBsb2NrIHRoZSBwb2ludGVyIGZvciB0ZWNobmljYWwgcmVhc29ucyBvciBiZWNhdXNlIHRoZSBwZXJtaXNzaW9uIHdhcyBkZW5pZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJtb3ZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBjaGFuZ2VkIGNvb3JkaW5hdGVzLiJ9fSx7bmFtZToib25wb2ludGVyb3V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRpbmcgZGV2aWNlIG1vdmVkIG91dCBvZiBoaXQtdGVzdGluZyBib3VuZGFyeSBvciBsZWF2ZXMgZGV0ZWN0YWJsZSBob3ZlciByYW5nZS4ifX0se25hbWU6Im9ucG9pbnRlcm92ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW50byB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJ1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgbGVhdmVzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6ImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWFjdGl2ZWRlc2NlbmRhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBlbGVtZW50IHdoZW4gRE9NIGZvY3VzIGlzIG9uIGEgW2Bjb21wb3NpdGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNjb21wb3NpdGUpIHdpZGdldCwgW2B0ZXh0Ym94YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGV4dGJveCksIFtgZ3JvdXBgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncm91cCksIG9yIFtgYXBwbGljYXRpb25gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcHBsaWNhdGlvbikuIn19LHtuYW1lOiJhcmlhLWF0b21pYyIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgW2Fzc2lzdGl2ZSB0ZWNobm9sb2dpZXNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1hc3Npc3RpdmUtdGVjaG5vbG9neSkgd2lsbCBwcmVzZW50IGFsbCwgb3Igb25seSBwYXJ0cyBvZiwgdGhlIGNoYW5nZWQgcmVnaW9uIGJhc2VkIG9uIHRoZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBbYGFyaWEtcmVsZXZhbnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlbGV2YW50KSBhdHRyaWJ1dGUuIn19LHtuYW1lOiJhcmlhLWF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImF1dG9jb21wbGV0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF1dG9jb21wbGV0ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBpbnB1dHRpbmcgdGV4dCBjb3VsZCB0cmlnZ2VyIGRpc3BsYXkgb2Ygb25lIG9yIG1vcmUgcHJlZGljdGlvbnMgb2YgdGhlIHVzZXIncyBpbnRlbmRlZCB2YWx1ZSBmb3IgYW4gaW5wdXQgYW5kIHNwZWNpZmllcyBob3cgcHJlZGljdGlvbnMgd291bGQgYmUgcHJlc2VudGVkIGlmIHRoZXkgYXJlIG1hZGUuIn19LHtuYW1lOiJhcmlhLWJ1c3kiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYnVzeSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgYW4gZWxlbWVudCBpcyBiZWluZyBtb2RpZmllZCBhbmQgdGhhdCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzIF9NQVlfIHdhbnQgdG8gd2FpdCB1bnRpbCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29tcGxldGUgYmVmb3JlIGV4cG9zaW5nIHRoZW0gdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJhcmlhLWNoZWNrZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJjaGVja2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgYW5kIG90aGVyIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXByZXNzZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQpIGFuZCBbYGFyaWEtc2VsZWN0ZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkKS4nfX0se25hbWU6ImFyaWEtY29sY291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xjb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29saW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4KS4ifX0se25hbWU6ImFyaWEtY29saW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBjb2x1bW4gaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGNvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xjb3VudCkgYW5kIFtgYXJpYS1jb2xzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xzcGFuKS4ifX0se25hbWU6ImFyaWEtY29sc3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpIGFuZCBbYGFyaWEtcm93c3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93c3BhbikuIn19LHtuYW1lOiJhcmlhLWNvbnRyb2xzIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29udHJvbHMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIHdob3NlIGNvbnRlbnRzIG9yIHByZXNlbmNlIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBjdXJyZW50IGVsZW1lbnQuIFNlZSByZWxhdGVkIFtgYXJpYS1vd25zYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1vd25zKS4ifX0se25hbWU6ImFyaWEtY3VycmVudCIsdmFsdWVTZXQ6ImN1cnJlbnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jdXJyZW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgaXRlbSB3aXRoaW4gYSBjb250YWluZXIgb3Igc2V0IG9mIHJlbGF0ZWQgZWxlbWVudHMuIn19LHtuYW1lOiJhcmlhLWRlc2NyaWJlZGF0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYXQifV19LHtuYW1lOiJhcmlhLWRlc2NyaWJlZGJ5IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYnkifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIHRoYXQgZGVzY3JpYmVzIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWxhYmVsbGVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsbGVkYnkpLiJ9fSx7bmFtZToiYXJpYS1kaXNhYmxlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kaXNhYmxlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBbcGVyY2VpdmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1wZXJjZWl2YWJsZSkgYnV0IGRpc2FibGVkLCBzbyBpdCBpcyBub3QgZWRpdGFibGUgb3Igb3RoZXJ3aXNlIFtvcGVyYWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9wZXJhYmxlKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWhpZGRlbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaGlkZGVuKSBhbmQgW2BhcmlhLXJlYWRvbmx5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWFkb25seSkuIn19LHtuYW1lOiJhcmlhLWRyb3BlZmZlY3QiLHZhbHVlU2V0OiJkcm9wZWZmZWN0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZHJvcGVmZmVjdCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJcXFtEZXByZWNhdGVkIGluIEFSSUEgMS4xXFxdIEluZGljYXRlcyB3aGF0IGZ1bmN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIHdoZW4gYSBkcmFnZ2VkIG9iamVjdCBpcyByZWxlYXNlZCBvbiB0aGUgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJhcmlhLWVycm9ybWVzc2FnZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWVycm9ybWVzc2FnZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcHJvdmlkZXMgYW4gZXJyb3IgbWVzc2FnZSBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaW52YWxpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaW52YWxpZCkgYW5kIFtgYXJpYS1kZXNjcmliZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYnkpLiJ9fSx7bmFtZToiYXJpYS1leHBhbmRlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1leHBhbmRlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCwgb3IgYW5vdGhlciBncm91cGluZyBlbGVtZW50IGl0IGNvbnRyb2xzLCBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiJ9fSx7bmFtZToiYXJpYS1mbG93dG8iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1mbG93dG8ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgbmV4dCBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgaW4gYW4gYWx0ZXJuYXRlIHJlYWRpbmcgb3JkZXIgb2YgY29udGVudCB3aGljaCwgYXQgdGhlIHVzZXIncyBkaXNjcmV0aW9uLCBhbGxvd3MgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdG8gb3ZlcnJpZGUgdGhlIGdlbmVyYWwgZGVmYXVsdCBvZiByZWFkaW5nIGluIGRvY3VtZW50IHNvdXJjZSBvcmRlci4ifX0se25hbWU6ImFyaWEtZ3JhYmJlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1ncmFiYmVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6YFxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIGFuIGVsZW1lbnQncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uYH19LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1rYmRzaG9ydGN1dHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1rYmRzaG9ydGN1dHMifV19LHtuYW1lOiJhcmlhLWxhYmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsbGVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtbGV2ZWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sZXZlbCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aXRoaW4gYSBzdHJ1Y3R1cmUuIn19LHtuYW1lOiJhcmlhLWxpdmUiLHZhbHVlU2V0OiJsaXZlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGl2ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHdpbGwgYmUgdXBkYXRlZCwgYW5kIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgdXBkYXRlcyB0aGUgW3VzZXIgYWdlbnRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tdXNlci1hZ2VudCksIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIFtsaXZlIHJlZ2lvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWxpdmUtcmVnaW9uKS4ifX0se25hbWU6ImFyaWEtbW9kYWwiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbW9kYWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBtb2RhbCB3aGVuIGRpc3BsYXllZC4ifX0se25hbWU6ImFyaWEtbXVsdGlsaW5lIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpbGluZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBhIHRleHQgYm94IGFjY2VwdHMgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQgb3Igb25seSBhIHNpbmdsZSBsaW5lLiJ9fSx7bmFtZToiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbXVsdGlzZWxlY3RhYmxlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4ifX0se25hbWU6ImFyaWEtb3JpZW50YXRpb24iLHZhbHVlU2V0OiJvcmllbnRhdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50J3Mgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbCwgdmVydGljYWwsIG9yIHVua25vd24vYW1iaWd1b3VzLiJ9fSx7bmFtZToiYXJpYS1vd25zIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIFtyZWxhdGlvbnNoaXBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1yZWxhdGlvbnNoaXApIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29udHJvbHNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzKS4ifX0se25hbWU6ImFyaWEtcGxhY2Vob2xkZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4gQSBoaW50IGNvdWxkIGJlIGEgc2FtcGxlIHZhbHVlIG9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIGZvcm1hdC4ifX0se25hbWU6ImFyaWEtcG9zaW5zZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wb3NpbnNldCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtc2V0c2l6ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSkuIn19LHtuYW1lOiJhcmlhLXByZXNzZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJwcmVzc2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdG9nZ2xlIGJ1dHRvbnMuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLXJlYWRvbmx5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIG5vdCBlZGl0YWJsZSwgYnV0IGlzIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1yZWxldmFudCIsdmFsdWVTZXQ6InJlbGV2YW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLiBTZWUgcmVsYXRlZCBbYGFyaWEtYXRvbWljYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMpLiJ9fSx7bmFtZToiYXJpYS1yZXF1aXJlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGJlZm9yZSBhIGZvcm0gbWF5IGJlIHN1Ym1pdHRlZC4ifX0se25hbWU6ImFyaWEtcm9sZWRlc2NyaXB0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm9sZWRlc2NyaXB0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtyb2xlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcm9sZSkgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtcm93Y291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KS4ifX0se25hbWU6ImFyaWEtcm93aW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSByb3cgaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2NvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtcm93c3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3dpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLXNlbGVjdGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAic2VsZWN0ZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiB2YXJpb3VzIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNoZWNrZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQpIGFuZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkuJ319LHtuYW1lOiJhcmlhLXNldHNpemUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZXRzaXplIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY3VycmVudCBzZXQgb2YgbGlzdGl0ZW1zIG9yIHRyZWVpdGVtcy4gTm90IHJlcXVpcmVkIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgc2V0IGFyZSBwcmVzZW50IGluIHRoZSBET00uIFNlZSByZWxhdGVkIFtgYXJpYS1wb3NpbnNldGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQpLiJ9fSx7bmFtZToiYXJpYS1zb3J0Iix2YWx1ZVNldDoic29ydCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNvcnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW1heCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbWF4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4ifX0se25hbWU6ImFyaWEtdmFsdWVtaW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1pbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbm93IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXZhbHVldGV4dGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0KS4ifX0se25hbWU6ImFyaWEtdmFsdWV0ZXh0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgW2BhcmlhLXZhbHVlbm93YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW5vdykgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLWRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhIGRldGFpbGVkLCBleHRlbmRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEta2V5c2hvcnRjdXRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuIn19XSx2YWx1ZVNldHM6W3tuYW1lOiJiIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToidSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJvIix2YWx1ZXM6W3tuYW1lOiJvbiJ9LHtuYW1lOiJvZmYifV19LHtuYW1lOiJ5Iix2YWx1ZXM6W3tuYW1lOiJ5ZXMifSx7bmFtZToibm8ifV19LHtuYW1lOiJ3Iix2YWx1ZXM6W3tuYW1lOiJzb2Z0In0se25hbWU6ImhhcmQifV19LHtuYW1lOiJkIix2YWx1ZXM6W3tuYW1lOiJsdHIifSx7bmFtZToicnRsIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJtIix2YWx1ZXM6W3tuYW1lOiJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgJz8nIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToicG9zdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KTsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYSBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZykgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLiJ9fV19LHtuYW1lOiJmbSIsdmFsdWVzOlt7bmFtZToiZ2V0In0se25hbWU6InBvc3QifV19LHtuYW1lOiJzIix2YWx1ZXM6W3tuYW1lOiJyb3cifSx7bmFtZToiY29sIn0se25hbWU6InJvd2dyb3VwIn0se25hbWU6ImNvbGdyb3VwIn1dfSx7bmFtZToidCIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InRleHQifSx7bmFtZToic2VhcmNoIn0se25hbWU6InRlbCJ9LHtuYW1lOiJ1cmwifSx7bmFtZToiZW1haWwifSx7bmFtZToicGFzc3dvcmQifSx7bmFtZToiZGF0ZXRpbWUifSx7bmFtZToiZGF0ZSJ9LHtuYW1lOiJtb250aCJ9LHtuYW1lOiJ3ZWVrIn0se25hbWU6InRpbWUifSx7bmFtZToiZGF0ZXRpbWUtbG9jYWwifSx7bmFtZToibnVtYmVyIn0se25hbWU6InJhbmdlIn0se25hbWU6ImNvbG9yIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn0se25hbWU6ImZpbGUifSx7bmFtZToic3VibWl0In0se25hbWU6ImltYWdlIn0se25hbWU6InJlc2V0In0se25hbWU6ImJ1dHRvbiJ9XX0se25hbWU6ImltIix2YWx1ZXM6W3tuYW1lOiJ2ZXJiYXRpbSJ9LHtuYW1lOiJsYXRpbiJ9LHtuYW1lOiJsYXRpbi1uYW1lIn0se25hbWU6ImxhdGluLXByb3NlIn0se25hbWU6ImZ1bGwtd2lkdGgtbGF0aW4ifSx7bmFtZToia2FuYSJ9LHtuYW1lOiJrYW5hLW5hbWUifSx7bmFtZToia2F0YWthbmEifSx7bmFtZToibnVtZXJpYyJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToiZW1haWwifSx7bmFtZToidXJsIn1dfSx7bmFtZToiYnQiLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJzdWJtaXQifSx7bmFtZToicmVzZXQifSx7bmFtZToibWVudSJ9XX0se25hbWU6Imx0Iix2YWx1ZXM6W3tuYW1lOiIxIn0se25hbWU6ImEifSx7bmFtZToiQSJ9LHtuYW1lOiJpIn0se25hbWU6IkkifV19LHtuYW1lOiJtdCIsdmFsdWVzOlt7bmFtZToiY29udGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn1dfSx7bmFtZToibWl0Iix2YWx1ZXM6W3tuYW1lOiJjb21tYW5kIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn1dfSx7bmFtZToiZXQiLHZhbHVlczpbe25hbWU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHtuYW1lOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn0se25hbWU6InRleHQvcGxhaW4ifV19LHtuYW1lOiJ0ayIsdmFsdWVzOlt7bmFtZToic3VidGl0bGVzIn0se25hbWU6ImNhcHRpb25zIn0se25hbWU6ImRlc2NyaXB0aW9ucyJ9LHtuYW1lOiJjaGFwdGVycyJ9LHtuYW1lOiJtZXRhZGF0YSJ9XX0se25hbWU6InBsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1ldGFkYXRhIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJzaCIsdmFsdWVzOlt7bmFtZToiY2lyY2xlIn0se25hbWU6ImRlZmF1bHQifSx7bmFtZToicG9seSJ9LHtuYW1lOiJyZWN0In1dfSx7bmFtZToieG8iLHZhbHVlczpbe25hbWU6ImFub255bW91cyJ9LHtuYW1lOiJ1c2UtY3JlZGVudGlhbHMifV19LHtuYW1lOiJzYiIsdmFsdWVzOlt7bmFtZToiYWxsb3ctZm9ybXMifSx7bmFtZToiYWxsb3ctbW9kYWxzIn0se25hbWU6ImFsbG93LXBvaW50ZXItbG9jayJ9LHtuYW1lOiJhbGxvdy1wb3B1cHMifSx7bmFtZToiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94In0se25hbWU6ImFsbG93LXNhbWUtb3JpZ2luIn0se25hbWU6ImFsbG93LXNjcmlwdHMifSx7bmFtZToiYWxsb3ctdG9wLW5hdmlnYXRpb24ifV19LHtuYW1lOiJ0cmlzdGF0ZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJtaXhlZCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJpbnB1dGF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwxIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwyIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwzIn0se25hbWU6ImFkZHJlc3MtbGV2ZWw0In0se25hbWU6ImFkZHJlc3MtbGluZTEifSx7bmFtZToiYWRkcmVzcy1saW5lMiJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUzIn0se25hbWU6ImJkYXkifSx7bmFtZToiYmRheS15ZWFyIn0se25hbWU6ImJkYXktZGF5In0se25hbWU6ImJkYXktbW9udGgifSx7bmFtZToiYmlsbGluZyJ9LHtuYW1lOiJjYy1hZGRpdGlvbmFsLW5hbWUifSx7bmFtZToiY2MtY3NjIn0se25hbWU6ImNjLWV4cCJ9LHtuYW1lOiJjYy1leHAtbW9udGgifSx7bmFtZToiY2MtZXhwLXllYXIifSx7bmFtZToiY2MtZmFtaWx5LW5hbWUifSx7bmFtZToiY2MtZ2l2ZW4tbmFtZSJ9LHtuYW1lOiJjYy1uYW1lIn0se25hbWU6ImNjLW51bWJlciJ9LHtuYW1lOiJjYy10eXBlIn0se25hbWU6ImNvdW50cnkifSx7bmFtZToiY291bnRyeS1uYW1lIn0se25hbWU6ImN1cnJlbnQtcGFzc3dvcmQifSx7bmFtZToiZW1haWwifSx7bmFtZToiZmFtaWx5LW5hbWUifSx7bmFtZToiZmF4In0se25hbWU6ImdpdmVuLW5hbWUifSx7bmFtZToiaG9tZSJ9LHtuYW1lOiJob25vcmlmaWMtcHJlZml4In0se25hbWU6Imhvbm9yaWZpYy1zdWZmaXgifSx7bmFtZToiaW1wcCJ9LHtuYW1lOiJsYW5ndWFnZSJ9LHtuYW1lOiJtb2JpbGUifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJuZXctcGFzc3dvcmQifSx7bmFtZToibmlja25hbWUifSx7bmFtZToib3JnYW5pemF0aW9uIn0se25hbWU6Im9yZ2FuaXphdGlvbi10aXRsZSJ9LHtuYW1lOiJwYWdlciJ9LHtuYW1lOiJwaG90byJ9LHtuYW1lOiJwb3N0YWwtY29kZSJ9LHtuYW1lOiJzZXgifSx7bmFtZToic2hpcHBpbmcifSx7bmFtZToic3RyZWV0LWFkZHJlc3MifSx7bmFtZToidGVsLWFyZWEtY29kZSJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidGVsLWNvdW50cnktY29kZSJ9LHtuYW1lOiJ0ZWwtZXh0ZW5zaW9uIn0se25hbWU6InRlbC1sb2NhbCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtcHJlZml4In0se25hbWU6InRlbC1sb2NhbC1zdWZmaXgifSx7bmFtZToidGVsLW5hdGlvbmFsIn0se25hbWU6InRyYW5zYWN0aW9uLWFtb3VudCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1jdXJyZW5jeSJ9LHtuYW1lOiJ1cmwifSx7bmFtZToidXNlcm5hbWUifSx7bmFtZToid29yayJ9XX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6Imxpc3QifSx7bmFtZToiYm90aCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiY3VycmVudCIsdmFsdWVzOlt7bmFtZToicGFnZSJ9LHtuYW1lOiJzdGVwIn0se25hbWU6ImxvY2F0aW9uIn0se25hbWU6ImRhdGUifSx7bmFtZToidGltZSJ9LHtuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToiZHJvcGVmZmVjdCIsdmFsdWVzOlt7bmFtZToiY29weSJ9LHtuYW1lOiJtb3ZlIn0se25hbWU6ImxpbmsifSx7bmFtZToiZXhlY3V0ZSJ9LHtuYW1lOiJwb3B1cCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiaW52YWxpZCIsdmFsdWVzOlt7bmFtZToiZ3JhbW1hciJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJzcGVsbGluZyJ9LHtuYW1lOiJ0cnVlIn1dfSx7bmFtZToibGl2ZSIsdmFsdWVzOlt7bmFtZToib2ZmIn0se25hbWU6InBvbGl0ZSJ9LHtuYW1lOiJhc3NlcnRpdmUifV19LHtuYW1lOiJvcmllbnRhdGlvbiIsdmFsdWVzOlt7bmFtZToidmVydGljYWwifSx7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJyZWxldmFudCIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25zIn0se25hbWU6InJlbW92YWxzIn0se25hbWU6InRleHQifSx7bmFtZToiYWxsIn0se25hbWU6ImFkZGl0aW9ucyB0ZXh0In1dfSx7bmFtZToic29ydCIsdmFsdWVzOlt7bmFtZToiYXNjZW5kaW5nIn0se25hbWU6ImRlc2NlbmRpbmcifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdGhlciJ9XX0se25hbWU6InJvbGVzIix2YWx1ZXM6W3tuYW1lOiJhbGVydCJ9LHtuYW1lOiJhbGVydGRpYWxvZyJ9LHtuYW1lOiJidXR0b24ifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGlhbG9nIn0se25hbWU6ImdyaWRjZWxsIn0se25hbWU6ImxpbmsifSx7bmFtZToibG9nIn0se25hbWU6Im1hcnF1ZWUifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW1jaGVja2JveCJ9LHtuYW1lOiJtZW51aXRlbXJhZGlvIn0se25hbWU6Im9wdGlvbiJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXIifSx7bmFtZToic2VhcmNoYm94In0se25hbWU6InNsaWRlciJ9LHtuYW1lOiJzcGluYnV0dG9uIn0se25hbWU6InN0YXR1cyJ9LHtuYW1lOiJzd2l0Y2gifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVsIn0se25hbWU6InRleHRib3gifSx7bmFtZToidGltZXIifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJjb21ib2JveCJ9LHtuYW1lOiJncmlkIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudSJ9LHtuYW1lOiJtZW51YmFyIn0se25hbWU6InJhZGlvZ3JvdXAifSx7bmFtZToidGFibGlzdCJ9LHtuYW1lOiJ0cmVlIn0se25hbWU6InRyZWVncmlkIn0se25hbWU6ImFwcGxpY2F0aW9uIn0se25hbWU6ImFydGljbGUifSx7bmFtZToiY2VsbCJ9LHtuYW1lOiJjb2x1bW5oZWFkZXIifSx7bmFtZToiZGVmaW5pdGlvbiJ9LHtuYW1lOiJkaXJlY3RvcnkifSx7bmFtZToiZG9jdW1lbnQifSx7bmFtZToiZmVlZCJ9LHtuYW1lOiJmaWd1cmUifSx7bmFtZToiZ3JvdXAifSx7bmFtZToiaGVhZGluZyJ9LHtuYW1lOiJpbWcifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtYXRoIn0se25hbWU6Im5vbmUifSx7bmFtZToibm90ZSJ9LHtuYW1lOiJwcmVzZW50YXRpb24ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJvdyJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJyb3doZWFkZXIifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InRhYmxlIn0se25hbWU6InRlcm0ifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6ImJhbm5lciJ9LHtuYW1lOiJjb21wbGVtZW50YXJ5In0se25hbWU6ImNvbnRlbnRpbmZvIn0se25hbWU6ImZvcm0ifSx7bmFtZToibWFpbiJ9LHtuYW1lOiJuYXZpZ2F0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJzZWFyY2gifSx7bmFtZToiZG9jLWFic3RyYWN0In0se25hbWU6ImRvYy1hY2tub3dsZWRnbWVudHMifSx7bmFtZToiZG9jLWFmdGVyd29yZCJ9LHtuYW1lOiJkb2MtYXBwZW5kaXgifSx7bmFtZToiZG9jLWJhY2tsaW5rIn0se25hbWU6ImRvYy1iaWJsaW9lbnRyeSJ9LHtuYW1lOiJkb2MtYmlibGlvZ3JhcGh5In0se25hbWU6ImRvYy1iaWJsaW9yZWYifSx7bmFtZToiZG9jLWNoYXB0ZXIifSx7bmFtZToiZG9jLWNvbG9waG9uIn0se25hbWU6ImRvYy1jb25jbHVzaW9uIn0se25hbWU6ImRvYy1jb3ZlciJ9LHtuYW1lOiJkb2MtY3JlZGl0In0se25hbWU6ImRvYy1jcmVkaXRzIn0se25hbWU6ImRvYy1kZWRpY2F0aW9uIn0se25hbWU6ImRvYy1lbmRub3RlIn0se25hbWU6ImRvYy1lbmRub3RlcyJ9LHtuYW1lOiJkb2MtZXBpZ3JhcGgifSx7bmFtZToiZG9jLWVwaWxvZ3VlIn0se25hbWU6ImRvYy1lcnJhdGEifSx7bmFtZToiZG9jLWV4YW1wbGUifSx7bmFtZToiZG9jLWZvb3Rub3RlIn0se25hbWU6ImRvYy1mb3Jld29yZCJ9LHtuYW1lOiJkb2MtZ2xvc3NhcnkifSx7bmFtZToiZG9jLWdsb3NzcmVmIn0se25hbWU6ImRvYy1pbmRleCJ9LHtuYW1lOiJkb2MtaW50cm9kdWN0aW9uIn0se25hbWU6ImRvYy1ub3RlcmVmIn0se25hbWU6ImRvYy1ub3RpY2UifSx7bmFtZToiZG9jLXBhZ2VicmVhayJ9LHtuYW1lOiJkb2MtcGFnZWxpc3QifSx7bmFtZToiZG9jLXBhcnQifSx7bmFtZToiZG9jLXByZWZhY2UifSx7bmFtZToiZG9jLXByb2xvZ3VlIn0se25hbWU6ImRvYy1wdWxscXVvdGUifSx7bmFtZToiZG9jLXFuYSJ9LHtuYW1lOiJkb2Mtc3VidGl0bGUifSx7bmFtZToiZG9jLXRpcCJ9LHtuYW1lOiJkb2MtdG9jIn1dfSx7bmFtZToibWV0YW5hbWVzIix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi1uYW1lIn0se25hbWU6ImF1dGhvciJ9LHtuYW1lOiJkZXNjcmlwdGlvbiJ9LHtuYW1lOiJmb3JtYXQtZGV0ZWN0aW9uIn0se25hbWU6ImdlbmVyYXRvciJ9LHtuYW1lOiJrZXl3b3JkcyJ9LHtuYW1lOiJwdWJsaXNoZXIifSx7bmFtZToicmVmZXJyZXIifSx7bmFtZToicm9ib3RzIn0se25hbWU6InRoZW1lLWNvbG9yIn0se25hbWU6InZpZXdwb3J0In1dfSx7bmFtZToiaGFzcG9wdXAiLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiIoZGVmYXVsdCkgSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwb3B1cC4ifX0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIG1lbnUuIn19LHtuYW1lOiJsaXN0Ym94IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbGlzdGJveC4ifX0se25hbWU6InRyZWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSB0cmVlLiJ9fSx7bmFtZToiZ3JpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGdyaWQuIn19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBkaWFsb2cuIn19XX1dfSxhYT0ob2EucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSx0KXt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IG9pKCJodG1sNSIsaWEpKSwoZT10aGlzLmRhdGFQcm92aWRlcnMpLnB1c2guYXBwbHkoZSx0KX0sb2EucHJvdG90eXBlLmdldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhUHJvdmlkZXJzfSxvYSk7ZnVuY3Rpb24gb2EoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PWUudXNlRGVmYXVsdERhdGFQcm92aWRlcixlLmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX12YXIgc2E9e307dmFyIGxhPWNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5sYW5ndWFnZVNldHRpbmdzLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO3ZhciBuLHIsaSxhPXRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZGF0YSxlPWE/LnVzZURlZmF1bHREYXRhUHJvdmlkZXI7Y29uc3Qgbz1bXTtpZihhPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBzIGluIGEuZGF0YVByb3ZpZGVycylvLnB1c2goKG49cyxyPWEuZGF0YVByb3ZpZGVyc1tzXSxuZXcgb2kobixyKSkpO3RoaXMuX2xhbmd1YWdlU2VydmljZT0odD17dXNlRGVmYXVsdERhdGFQcm92aWRlcjplLGN1c3RvbURhdGFQcm92aWRlcnM6b30sZT1uZXcgYWEodD12b2lkIDA9PT10P3NhOnQpLGk9bmV3IHhpKHQsZSksdD1uZXcgd2kodCxlKSx7c2V0RGF0YVByb3ZpZGVyczplLnNldERhdGFQcm92aWRlcnMuYmluZChlKSxjcmVhdGVTY2FubmVyOkZyLHBhcnNlSFRNTERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiAkcihlLmdldFRleHQoKSl9LGRvQ29tcGxldGU6dC5kb0NvbXBsZXRlLmJpbmQodCksZG9Db21wbGV0ZTI6dC5kb0NvbXBsZXRlMi5iaW5kKHQpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6dC5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQodCksZG9Ib3ZlcjppLmRvSG92ZXIuYmluZChpKSxmb3JtYXQ6SGksZmluZERvY3VtZW50SGlnaGxpZ2h0czpqaSxmaW5kRG9jdW1lbnRMaW5rczpLaSxmaW5kRG9jdW1lbnRTeW1ib2xzOlhpLGdldEZvbGRpbmdSYW5nZXM6dGEsZ2V0U2VsZWN0aW9uUmFuZ2VzOm5hLGRvUXVvdGVDb21wbGV0ZTp0LmRvUXVvdGVDb21wbGV0ZS5iaW5kKHQpLGRvVGFnQ29tcGxldGU6dC5kb1RhZ0NvbXBsZXRlLmJpbmQodCksZG9SZW5hbWU6UWksZmluZE1hdGNoaW5nVGFnUG9zaXRpb246WmksZmluZE9uVHlwZVJlbmFtZVJhbmdlczplYSxmaW5kTGlua2VkRWRpdGluZ1JhbmdlczplYX0pfWFzeW5jIGRvQ29tcGxldGUoZSx0KXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQoZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db21wbGV0ZShlLHQsbix0aGlzLl9sYW5ndWFnZVNldHRpbmdzJiZ0aGlzLl9sYW5ndWFnZVNldHRpbmdzLnN1Z2dlc3QpKX1hc3luYyBmb3JtYXQoZSx0LG4pe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO249ey4uLnRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZm9ybWF0LC4uLm59LGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZvcm1hdChlLHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBkb0hvdmVyKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGUpLGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvSG92ZXIoZSx0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO3ZhciBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCxuKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfWFzeW5jIGZpbmREb2N1bWVudExpbmtzKGUpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO2U9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudExpbmtzKGUsbnVsbCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO3ZhciB0PXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRTeW1ib2xzKGUsdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBnZXRGb2xkaW5nUmFuZ2VzKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuW107ZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuW107ZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBkb1JlbmFtZShlLHQsbil7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGUpLGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKGUsdCxuLHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9X2dldFRleHREb2N1bWVudChlKXt2YXIgdDtmb3IodCBvZiB0aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCkpaWYodC51cmkudG9TdHJpbmcoKT09PWUpcmV0dXJuIF9yLmNyZWF0ZShlLHRoaXMuX2xhbmd1YWdlSWQsdC52ZXJzaW9uLHQuZ2V0VmFsdWUoKSk7cmV0dXJuIG51bGx9fTtzZWxmLm9ubWVzc2FnZT0oKT0+e1duKChlLHQpPT5uZXcgbGEoZSx0KSl9fSgpOwoK', null, false);
4
4
  /* eslint-enable */
5
5
 
6
6
  export { WorkerFactory as default };