{"format":"rivetin-package-v1","manifest":{"manifestVersion":1,"id":"rivetin-disk-smart-info","version":"0.1.6","name":{"zh-CN":"磁盘健康展示","en-US":"Disk SMART information"},"description":{"zh-CN":"CloudTower 4.9.0 受控验收候选：物理盘 SMART 与每日历史、本地化和劣化风险；真实主机采集尚未验收。","en-US":"CloudTower 4.9.0 controlled acceptance candidate: localized disk SMART, daily history and deterioration. Live host collection remains unverified."},"author":"Rivetin contributors","license":"MIT","repository":"https://github.com/sephirothchang/rivetin","homepage":"https://github.com/sephirothchang/rivetin/tree/main/plugins/rivetin-disk-smart-info","compatibility":{"schemaVersion":2,"frameworkApi":1,"frameworkMinVersion":"0.2.0","frameworkMaxVersionExclusive":"0.3.0","tower":"CloudTower 4.9.0 controlled candidate; real SMART collection remains unverified.","towerBuilds":["4.9.0"],"smtx":"none"},"frontend":{"format":"rivetin-global-v1","entry":"web/plugin.js"},"permissions":["inventory.read","ssh.channel.use","disk.smart.read"],"locales":["zh-CN","en-US"],"configuration":{"version":1,"schema":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"integer","enum":[1]},"enabled":{"type":"boolean"}},"required":["version","enabled"]},"defaults":{"version":1,"enabled":true}},"lifecycle":{"reset":"defaults","uninstall":"retain-config"},"releaseNotes":{"zh-CN":"0.1.6：明确显示磁盘采集命令范式、目标类别、新鲜主机库存参数来源及 all/custom 逐盘展开边界。用途声明不绑定固定设备路径，不增加执行命令或权限；物理盘样本及每日采集仍待真实环境测试。","en-US":"0.1.6: show the disk collection template, category, fresh host inventory argument source and all/custom per-disk expansion. The declaration selects no fixed path and adds no executable operation or permission. Physical samples and daily collection await real-environment testing."},"ssh":{"version":1,"commands":[{"id":"daily-smart","operation":"disk.smart.read","purpose":{"zh-CN":"读取各目标主机授权物理盘 SMART，按策略逐盘展开并保留人工审批。参数要求来自本机新鲜库存；旧v1仅原可信映射待核验，不自动扩权。命令范式：sudo -n -- /usr/sbin/smartctl --json=c --all <disk>","en-US":"Read each target host's authorized physical disks under all/custom policy and administrator approval. Require fresh host inventory; legacy v1 uses configured mappings pending verification without automatic widening. Template: sudo -n -- /usr/sbin/smartctl --json=c --all <disk>"},"hostScope":"configured","deviceScope":"configured","intervalSeconds":86400}]}},"files":[{"path":"web/plugin.js","sha256":"6c80bf2501df73cf5443a24684a1007f139cf792e474e457c727da7bacb1e3eb","data":"KCgpPT57InVzZSBzdHJpY3QiO2NvbnN0IGU9e2Q6KHQsbik9Pntmb3IodmFyIHIgaW4gbillLm8obixyKSYmIWUubyh0LHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtlbnVtZXJhYmxlOiEwLGdldDpuW3JdfSl9LG86KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLHI6ZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9fTtsZXQgdD17fTtlLnIodCksZS5kKHQse2RlZmF1bHQ6KCk9Pl9lfSk7Y29uc3Qgbj0icml2ZXRpbi1kaXNrLXNtYXJ0LWluZm8iLHI9Ii9hcGkvcml2ZXRpbi92MS9jb25maWciO2Z1bmN0aW9uIG8oZSl7aWYoIWV8fCJlbmFibGVkLHZlcnNpb24iIT09T2JqZWN0LmtleXMoZSkuc29ydCgpLmpvaW4oKXx8MSE9PWUudmVyc2lvbnx8ImJvb2xlYW4iIT10eXBlb2YgZS5lbmFibGVkKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TRVRUSU5HUyIpO3JldHVybnt2ZXJzaW9uOjEsZW5hYmxlZDplLmVuYWJsZWR9fWNvbnN0IGE9e2lkOm4sZGVmYXVsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/e3ZlcnNpb246MSxlbmFibGVkOiEwfTpvKGUpfSx2YWxpZGF0ZTpvLGVxdWFsOihlLHQpPT5lLnZlcnNpb249PT10LnZlcnNpb24mJmUuZW5hYmxlZD09PXQuZW5hYmxlZCxzZWVkOmU9PmV9LGk9InJpdmV0aW4ucGVyc29uYWwudjEiLHM9L15yaXZldGluLVthLXowLTldKyg/Oi1bYS16MC05XSspKiQvLGw9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aDw9MTAwJiZzLnRlc3QoZSksZD0iL2FwaS9yaXZldGluL3YxIjtmdW5jdGlvbiBjKGUpe3RyeXtjb25zdCB0PUpTT04ucGFyc2UoZS5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oInRva2VuIil8fCJudWxsIik/LnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGg8ODE5MiYmIS9bXHJcbl0vLnRlc3QodCkpcmV0dXJue0F1dGhvcml6YXRpb246dH19Y2F0Y2h7fXJldHVybnt9fWZ1bmN0aW9uIHUoZSx0KXtpZighZXx8IU51bWJlci5pc1NhZmVJbnRlZ2VyKGUucmV2aXNpb24pfHxlLnJldmlzaW9uPDB8fG51bGwhPT1lLnVwZGF0ZWRBdCYmInN0cmluZyIhPXR5cGVvZiBlLnVwZGF0ZWRBdCl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfQ09ORklHX1JFU1BPTlNFIik7cmV0dXJuey4uLmUsc2V0dGluZ3M6dChlLnNldHRpbmdzKX19ZnVuY3Rpb24gcChlLHQsbj0iL2FwaS9yaXZldGluL3YxL2NvbmZpZyIpe2NvbnN0e2RlZmF1bHRzOnIsdmFsaWRhdGU6b309dCxhPWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9QTFVHSU5fSUQiKTtyZXR1cm4gZX0odC5pZCksaT1uZXcgVVJMKG4sZS5sb2NhdGlvbi5vcmlnaW4pO2lmKGkub3JpZ2luIT09ZS5sb2NhdGlvbi5vcmlnaW4pdGhyb3cgbmV3IEVycm9yKCJDT05GSUdVUkFUSU9OX09SSUdJTl9NSVNNQVRDSCIpO2lmKCIvYXBpL3JpdmV0aW4vdjEvY29uZmlnIiE9PWkucGF0aG5hbWV8fGkuc2VhcmNoKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9DT05GSUdVUkFUSU9OX0VORFBPSU5UIik7Y29uc3Qgcz1mdW5jdGlvbihlKXtjb25zdCB0PWFzeW5jKHQsbj0iR0VUIixyLHtzaWduYWw6b309e30pPT57aWYoInN0cmluZyIhPXR5cGVvZiB0fHwhdC5zdGFydHNXaXRoKCIvIil8fHQuc3RhcnRzV2l0aCgiLy8iKSl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfQVBJX1JPVVRFIik7Y29uc3QgYT1uZXcgVVJMKHQsImh0dHA6Ly9yaXZldGluLmludmFsaWQiKS5zZWFyY2hQYXJhbXMuZ2V0KCJwbHVnaW5JZCIpO2lmKG51bGwhPT1hJiYhbChhKXx8ciYmIm9iamVjdCI9PXR5cGVvZiByJiZPYmplY3QuaGFzT3duKHIsInBsdWdpbklkIikmJiFsKHIucGx1Z2luSWQpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9QTFVHSU5fSUQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIWUucmVzcG9uc2Uub2spe2NvbnN0IHQ9bmV3IEVycm9yKC9eW0EtWl1bQS1aMC05X117MCw5OX0kLy50ZXN0KGUudmFsdWU/LmVycm9yfHwiIik/ZS52YWx1ZS5lcnJvcjo0MDQ9PT1lLnJlc3BvbnNlLnN0YXR1cz8iTk9UX0ZPVU5EIjoiUkVRVUVTVF9GQUlMRUQiKTt0aHJvdyB0LmNvZGU9dC5tZXNzYWdlLHQuc3RhdHVzPWUucmVzcG9uc2Uuc3RhdHVzLHR9cmV0dXJuIGUudmFsdWV9KGF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsbj0iR0VUIixyLG8pe2NvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcixpPXNldFRpbWVvdXQoKCk9PmEuYWJvcnQoKSw4ZTMpLHM9KCk9PmEuYWJvcnQoKTtvPy5hYm9ydGVkJiZhLmFib3J0KCksbz8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMse29uY2U6ITB9KTt0cnl7Y29uc3Qgbz1hd2FpdCBlLmZldGNoKHQse21ldGhvZDpuLGNyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiIsY2FjaGU6Im5vLXN0b3JlIixyZWRpcmVjdDoiZXJyb3IiLHNpZ25hbDphLnNpZ25hbCxoZWFkZXJzOnsuLi5jKGUpLC4uLnZvaWQgMCE9PXI/eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn06e319LC4uLnZvaWQgMCE9PXI/e2JvZHk6InN0cmluZyI9PXR5cGVvZiByP3I6SlNPTi5zdHJpbmdpZnkocil9Ont9fSk7bGV0IGk7dHJ5e2k9YXdhaXQgby5qc29uKCl9Y2F0Y2h7aWYoNDA0PT09by5zdGF0dXMpcmV0dXJue3Jlc3BvbnNlOm8sdmFsdWU6bnVsbH07dGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0FQSV9SRVNQT05TRSIpfXJldHVybntyZXNwb25zZTpvLHZhbHVlOml9fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KGkpLG8/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixzKX19KGQrdCxuLHIsbykpfTtyZXR1cm4gdC5hc3NldFVybD1hc3luYyhlLHQpPT57aWYoIWwoZS5pZCkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1BMVUdJTl9JRCIpO3JldHVybmAke2R9L2Fzc2V0cy8ke2UuaWR9LyR7ZS5wYWNrYWdlSWR9LyR7dH1gfSx0fShlKTthc3luYyBmdW5jdGlvbiBwKGUsdCl7Y29uc3Qgbj1hd2FpdCBzKCIvY29uZmlnIixlLHQ/e3BsdWdpbklkOmEsc2V0dGluZ3M6dH06dm9pZCAwKTtpZigxIT09bj8udmVyc2lvbnx8IW4ucGx1Z2luc3x8QXJyYXkuaXNBcnJheShuLnBsdWdpbnMpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9DT05GSUdfUkVTUE9OU0UiKTtpZihuLmVycm9ycz8uW2FdKXRocm93IG5ldyBFcnJvcigiQ09ORklHVVJBVElPTl9VTkFWQUlMQUJMRSIpO3JldHVybiB1KE9iamVjdC5oYXNPd24obi5wbHVnaW5zLGEpP24ucGx1Z2luc1thXTp7cmV2aXNpb246MCx1cGRhdGVkQXQ6bnVsbCxzZXR0aW5nczpyKCl9LG8pfXJldHVybntsb2FkOigpPT5wKCJHRVQiKSxzYXZlOmU9PnAoIlBVVCIsZSl9fW5ldyBXZWFrTWFwO2NvbnN0IF89ZT0+ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKSxBPWU9PiJzdHJpbmciPT10eXBlb2YgZT9lLnNsaWNlKDAsMTYwKToiIjtmdW5jdGlvbiBtKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9OdW1iZXIuaXNTYWZlSW50ZWdlcihlKSYmZT49MD9TdHJpbmcoZSk6bnVsbDoic3RyaW5nIj09dHlwZW9mIGUmJi9eXGR7MSw0MH0kLy50ZXN0KGUpP0JpZ0ludChlKS50b1N0cmluZygpOm51bGx9Y29uc3QgaD0oZSx0KT0+bShlPy5bYCR7dH1fc2BdKT8/bShlPy5bdF0pLFQ9ZT0+Im51bWJlciI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUoZSk/ZTpudWxsLGY9e3Vua25vd246LTEsbm9ybWFsOjAseWVsbG93OjEscmVkOjIsZGFya3JlZDozfSxnPWU9PmUucmVkdWNlKChlLHQpPT5mW3RdPmZbZV0/dDplLCJ1bmtub3duIiksRT1uZXcgTWFwKFtbIlJlYWxsb2NhdGVkX1NlY3Rvcl9DdCIsNV0sWyJSZWFsbG9jYXRlZF9FdmVudF9Db3VudCIsMTk2XSxbIkN1cnJlbnRfUGVuZGluZ19TZWN0b3IiLDE5N10sWyJPZmZsaW5lX1VuY29ycmVjdGFibGUiLDE5OF0sWyJSZXBvcnRlZF9VbmNvcnJlY3QiLDE4N10sWyJVRE1BX0NSQ19FcnJvcl9Db3VudCIsMTk5XV0pO2Z1bmN0aW9uIFMoZSl7aWYoIV8oZSkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1NNQVJUX0RPQ1VNRU5UIik7Y29uc3QgdD1lLnNtYXJ0Y3RsPy5leGl0X3N0YXR1cztpZih2b2lkIDAhPT10JiYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MHx8dD4yNTV8fDcmdCkpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIpO2lmKCExPT09ZS5zbWFydF9zdXBwb3J0Py5hdmFpbGFibGV8fCExPT09ZS5zbWFydF9zdXBwb3J0Py5lbmFibGVkKXRocm93IG5ldyBFcnJvcigiU01BUlRfVU5BVkFJTEFCTEUiKTtjb25zdCBuPVtdO2Z1bmN0aW9uIHIoZSx0LHIsbz0iIixhPXt9KXtuLnB1c2goe2lkOmUsbmFtZTp0LHZhbHVlOnIsdW5pdDpvLGRpcmVjdGlvbjpudWxsLHJpc2s6bnVsbD09PXI/InVua25vd24iOiJub3JtYWwiLHJlYXNvbjoiaW5mb3JtYXRpb25hbCIsLi4uYX0pfWlmKCJib29sZWFuIj09dHlwZW9mIGUuc21hcnRfc3RhdHVzPy5wYXNzZWR8fDgmdCl7Y29uc3Qgbj0hMD09PWUuc21hcnRfc3RhdHVzPy5wYXNzZWQmJiEoOCZ0KTtyKCJoZWFsdGgiLCJoZWFsdGgiLG4/IjEiOiIwIiwiIix7cmlzazpuPyJub3JtYWwiOiJkYXJrcmVkIixyZWFzb246bj8iaW5mb3JtYXRpb25hbCI6ImZhaWxlZCJ9KX0xNiZ0P3IoImF0YV90aHJlc2hvbGRfc3RhdHVzIiwiYXRhX3RocmVzaG9sZF9zdGF0dXMiLCIxIiwiIix7cmlzazoiZGFya3JlZCIscmVhc29uOiJ0aHJlc2hvbGQifSk6MzImdCYmcigiYXRhX3RocmVzaG9sZF9zdGF0dXMiLCJhdGFfdGhyZXNob2xkX3N0YXR1cyIsIjEiLCIiLHtyaXNrOiJyZWQiLHJlYXNvbjoiaGlzdG9yaWNhbCJ9KSwxMjgmdCYmcigic2VsZl90ZXN0X2Vycm9ycyIsInNlbGZfdGVzdF9lcnJvcnMiLCIxIiwiIix7cmlzazoieWVsbG93IixyZWFzb246Imhpc3RvcmljYWwifSksbnVsbCE9PVQoZS50ZW1wZXJhdHVyZT8uY3VycmVudCkmJnIoInRlbXBlcmF0dXJlIiwidGVtcGVyYXR1cmUiLFN0cmluZyhlLnRlbXBlcmF0dXJlLmN1cnJlbnQpLCLCsEMiKSx2b2lkIDA9PT1lLnBvd2VyX29uX3RpbWU/LmhvdXJzJiZ2b2lkIDA9PT1lLnBvd2VyX29uX3RpbWU/LmhvdXJzX3N8fHIoInBvd2VyX29uX2hvdXJzIiwicG93ZXJfb25faG91cnMiLGgoZS5wb3dlcl9vbl90aW1lLCJob3VycyIpLCJoIiksdm9pZCAwPT09ZS5wb3dlcl9jeWNsZV9jb3VudCYmdm9pZCAwPT09ZS5wb3dlcl9jeWNsZV9jb3VudF9zfHxyKCJwb3dlcl9jeWNsZXMiLCJwb3dlcl9jeWNsZXMiLGgoZSwicG93ZXJfY3ljbGVfY291bnQiKSk7Y29uc3Qgbz1lLm52bWVfc21hcnRfaGVhbHRoX2luZm9ybWF0aW9uX2xvZztpZihfKG8pKXtmb3IoY29uc3QgZSBvZlsiY3JpdGljYWxfd2FybmluZyIsImF2YWlsYWJsZV9zcGFyZSIsInBlcmNlbnRhZ2VfdXNlZCIsIm1lZGlhX2Vycm9ycyIsIm51bV9lcnJfbG9nX2VudHJpZXMiLCJ1bnNhZmVfc2h1dGRvd25zIiwiZGF0YV91bml0c19yZWFkIiwiZGF0YV91bml0c193cml0dGVuIiwicG93ZXJfb25faG91cnMiLCJwb3dlcl9jeWNsZXMiXSl7aWYodm9pZCAwPT09b1tlXSYmdm9pZCAwPT09b1tgJHtlfV9zYF0pY29udGludWU7aWYobi5zb21lKHQ9PnQuaWQ9PT1lKSljb250aW51ZTtjb25zdCB0PWgobyxlKSxhPW51bGw9PT10P251bGw6QmlnSW50KHQpLGk9e307aWYoImNyaXRpY2FsX3dhcm5pbmciPT09ZSYmbnVsbCE9PWEmJk9iamVjdC5hc3NpZ24oaSx7cmlzazowbj09PWE/Im5vcm1hbCI6ImRhcmtyZWQiLHJlYXNvbjowbj09PWE/ImluZm9ybWF0aW9uYWwiOiJjcml0aWNhbCJ9KSwicGVyY2VudGFnZV91c2VkIj09PWUmJm51bGwhPT1hJiZPYmplY3QuYXNzaWduKGkse2RpcmVjdGlvbjoidXAiLHJpc2s6YT49MTAwbj8iZGFya3JlZCI6YT49OTBuPyJyZWQiOmE+PTgwbj8ieWVsbG93Ijoibm9ybWFsIixyZWFzb246YT49ODBuPyJlbmR1cmFuY2UiOiJpbmZvcm1hdGlvbmFsIn0pLCJhdmFpbGFibGVfc3BhcmUiPT09ZSYmbnVsbCE9PWEpe2NvbnN0IGU9aChvLCJhdmFpbGFibGVfc3BhcmVfdGhyZXNob2xkIik7T2JqZWN0LmFzc2lnbihpLHtkaXJlY3Rpb246ImRvd24iLHRocmVzaG9sZDplLHJpc2s6bnVsbCE9PWUmJmE8QmlnSW50KGUpPyJkYXJrcmVkIjoibm9ybWFsIixyZWFzb246bnVsbCE9PWUmJmE8QmlnSW50KGUpPyJ0aHJlc2hvbGQiOiJpbmZvcm1hdGlvbmFsIn0pfSJtZWRpYV9lcnJvcnMiPT09ZSYmbnVsbCE9PWEmJk9iamVjdC5hc3NpZ24oaSx7ZGlyZWN0aW9uOiJ1cCIscmlzazphPjBuPyJyZWQiOiJub3JtYWwiLHJlYXNvbjphPjBuPyJjb3VudGVyIjoiaW5mb3JtYXRpb25hbCIsY291bnRlcjohMH0pLHIoZSxlLHQsWyJwZXJjZW50YWdlX3VzZWQiLCJhdmFpbGFibGVfc3BhcmUiXS5pbmNsdWRlcyhlKT8iJSI6InBvd2VyX29uX2hvdXJzIj09PWU/ImgiOiIiLGkpfW4uc29tZShlPT4idGVtcGVyYXR1cmUiPT09ZS5pZCl8fG51bGw9PT1UKG8udGVtcGVyYXR1cmUpfHxyKCJ0ZW1wZXJhdHVyZSIsInRlbXBlcmF0dXJlIixTdHJpbmcoby50ZW1wZXJhdHVyZSksIsKwQyIpfWNvbnN0IGE9ZS5hdGFfc21hcnRfYXR0cmlidXRlcz8udGFibGU7aWYodm9pZCAwIT09YSYmKCFBcnJheS5pc0FycmF5KGEpfHxhLmxlbmd0aD4yNTYpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9BVEFfVEFCTEUiKTtjb25zdCBpPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgYXx8W10pe2lmKCFfKGUpfHwhTnVtYmVyLmlzSW50ZWdlcihlLmlkKXx8ZS5pZDwxfHxlLmlkPjI1NXx8aS5oYXMoZS5pZCkpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0FUQV9BVFRSSUJVVEUiKTtpLmFkZChlLmlkKTtjb25zdCB0PUEoZS5uYW1lKXx8YEF0dHJpYnV0ZV8ke2UuaWR9YCxuPVQoZS52YWx1ZSksbz1UKGUudGhyZXNoKSxhPWgoZS5yYXcsInZhbHVlIikscz1FLmdldCh0KT09PWUuaWQsbD1udWxsIT09biYmbnVsbCE9PW8mJm8+MCYmbjw9byxkPSJzdHJpbmciPT10eXBlb2YgZS53aGVuX2ZhaWxlZCYmIVsiIiwiLSJdLmluY2x1ZGVzKGUud2hlbl9mYWlsZWQudHJpbSgpKTtsZXQgYz1udWxsPT09YSYmbnVsbD09PW4/InVua25vd24iOiJub3JtYWwiLHU9InZlbmRvciI7bHx8Im5vdyI9PT1lLndoZW5fZmFpbGVkPyhjPSJkYXJrcmVkIix1PSJ0aHJlc2hvbGQiKTpkPyhjPSJyZWQiLHU9Imhpc3RvcmljYWwiKTpzJiZudWxsIT09YSYmQmlnSW50KGEpPjBuJiYoYz0iVURNQV9DUkNfRXJyb3JfQ291bnQiPT09dD8ieWVsbG93IjoicmVkIix1PSJjb3VudGVyIikscihgYXRhOiR7ZS5pZH1gLHQsYSwiIix7bm9ybWFsaXplZDpuLHdvcnN0OlQoZS53b3JzdCksdGhyZXNob2xkOm8scmF3VGV4dDpBKGUucmF3Py5zdHJpbmcpLGRpcmVjdGlvbjpzPyJ1cCI6bnVsbCxjb3VudGVyOnMscmlzazpjLHJlYXNvbjp1fSl9aWYodm9pZCAwIT09ZS5zY3NpX2dyb3duX2RlZmVjdF9saXN0fHx2b2lkIDAhPT1lLnNjc2lfZ3Jvd25fZGVmZWN0X2xpc3Rfcyl7Y29uc3QgdD1oKGUsInNjc2lfZ3Jvd25fZGVmZWN0X2xpc3QiKTtyKCJzY3NpX2dyb3duX2RlZmVjdF9saXN0Iiwic2NzaV9ncm93bl9kZWZlY3RfbGlzdCIsdCwiIix7ZGlyZWN0aW9uOiJ1cCIsY291bnRlcjohMCxyaXNrOm51bGw9PT10PyJ1bmtub3duIjpCaWdJbnQodCk+MG4/InJlZCI6Im5vcm1hbCIscmVhc29uOm51bGwhPT10JiZCaWdJbnQodCk+MG4/ImNvdW50ZXIiOiJpbmZvcm1hdGlvbmFsIn0pfWZvcihjb25zdCB0IG9mWyJyZWFkIiwid3JpdGUiLCJ2ZXJpZnkiXSl7Y29uc3Qgbj1lLnNjc2lfZXJyb3JfY291bnRlcl9sb2c/Llt0XTtpZighbnx8dm9pZCAwPT09bi50b3RhbF91bmNvcnJlY3RlZF9lcnJvcnMmJnZvaWQgMD09PW4udG90YWxfdW5jb3JyZWN0ZWRfZXJyb3JzX3MpY29udGludWU7Y29uc3Qgbz1oKG4sInRvdGFsX3VuY29ycmVjdGVkX2Vycm9ycyIpO3IoYHNjc2lfJHt0fV9lcnJvcnNgLGBzY3NpXyR7dH1fZXJyb3JzYCxvLCIiLHtkaXJlY3Rpb246InVwIixjb3VudGVyOiEwLHJpc2s6bnVsbD09PW8/InVua25vd24iOkJpZ0ludChvKT4wbj8icmVkIjoibm9ybWFsIixyZWFzb246bnVsbCE9PW8mJkJpZ0ludChvKT4wbj8iY291bnRlciI6ImluZm9ybWF0aW9uYWwifSl9aWYoIW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU01BUlRfVU5BVkFJTEFCTEUiKTtyZXR1cm57cHJvdG9jb2w6bz8iTlZNZSI6YT8iQVRBIjpbIkFUQSIsIk5WTWUiLCJTQ1NJIl0uaW5jbHVkZXMoZS5kZXZpY2U/LnByb3RvY29sKT9lLmRldmljZS5wcm90b2NvbDoiVW5rbm93biIsbWV0cmljczpuLGV4aXRTdGF0dXM6dD8/bnVsbH19ZnVuY3Rpb24gSShlLHQpe2NvbnN0IG49bmV3IE1hcCgodHx8W10pLm1hcChlPT5bZS5pZCxlXSkpO3JldHVybiBlLm1hcChlPT57Y29uc3QgdD1uLmdldChlLmlkKTtsZXQgcj1udWxsLG89bnVsbCxhPW51bGwsaT0ibm8tYmFzZWxpbmUiLHM9ZS5yaXNrLGw9ZS5yZWFzb247aWYodCYmZS5uYW1lPT09dC5uYW1lJiZudWxsIT09ZS52YWx1ZSYmbnVsbCE9PXQudmFsdWUmJi9eXGQrJC8udGVzdChlLnZhbHVlKSYmL15cZCskLy50ZXN0KHQudmFsdWUpKXtjb25zdCBuPUJpZ0ludChlLnZhbHVlKS1CaWdJbnQodC52YWx1ZSk7cj1uLnRvU3RyaW5nKCksaT0wbj09PW4/InVuY2hhbmdlZCI6ImNoYW5nZWQiLCJ1cCI9PT1lLmRpcmVjdGlvbiYmbjwwbj9pPSJjb3VudGVyLXJlc2V0IjplLmRpcmVjdGlvbiYmKCJ1cCI9PT1lLmRpcmVjdGlvbj9uPjBuOm48MG4pJiYobz0objwwbj8tbjpuKS50b1N0cmluZygpLGk9ImRldGVyaW9yYXRlZCIscz1nKFtzLGUuY291bnRlciYmInJlZCI9PT1lLnJpc2s/ImRhcmtyZWQiOiJ5ZWxsb3ciXSksImRhcmtyZWQiIT09ZS5yaXNrJiYobD0iaW5jcmVhc2VkIikpfXJldHVybiB0Py5uYW1lPT09ZS5uYW1lJiZudWxsIT09ZS5ub3JtYWxpemVkJiZ2b2lkIDAhPT1lLm5vcm1hbGl6ZWQmJm51bGwhPT10Lm5vcm1hbGl6ZWQmJnZvaWQgMCE9PXQubm9ybWFsaXplZCYmZS5ub3JtYWxpemVkPHQubm9ybWFsaXplZCYmKGk9ImRldGVyaW9yYXRlZCIsbz1TdHJpbmcodC5ub3JtYWxpemVkLWUubm9ybWFsaXplZCksYT0ibm9ybWFsaXplZCIscz1nKFtzLCJ5ZWxsb3ciXSksImRhcmtyZWQiIT09ZS5yaXNrJiYobD0ibm9ybWFsaXplZCIpKSx7Li4uZSxkZWx0YTpyLGRldGVyaW9yYXRpb246byxkZXRlcmlvcmF0aW9uS2luZDphLHRyZW5kOmkscmlzazpzLHJlYXNvbjpsfX0pfWNvbnN0IHc9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXig/OlZNd2FyZXxWaXJ0dWFsW18gXWRpc2spL2kudGVzdChlLnRyaW1TdGFydCgpKTtmdW5jdGlvbiB2KGUsdD1EYXRlLm5vdygpKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlLmRpc2tJZHx8IS9eW0EtWmEtejAtOV8tXXsxLDEyOH0kLy50ZXN0KGUuZGlza0lkKXx8IXcoZS5tb2RlbCkpdGhyb3cgbmV3IEVycm9yKCJWSVJUVUFMX0RFTU9fTU9ERUxfVU5WRVJJRklFRCIpO2NvbnN0IG49Uyh7c21hcnRjdGw6e2V4aXRfc3RhdHVzOjB9LHNtYXJ0X3N0YXR1czp7cGFzc2VkOiEwfSx0ZW1wZXJhdHVyZTp7Y3VycmVudDozNX0scG93ZXJfb25fdGltZTp7aG91cnM6MjQwMH0sLi4uL252bWUvaS50ZXN0KGUubW9kZWwpP3tudm1lX3NtYXJ0X2hlYWx0aF9pbmZvcm1hdGlvbl9sb2c6e2NyaXRpY2FsX3dhcm5pbmc6MCxhdmFpbGFibGVfc3BhcmU6MTAwLGF2YWlsYWJsZV9zcGFyZV90aHJlc2hvbGQ6MTAscGVyY2VudGFnZV91c2VkOjEyLG1lZGlhX2Vycm9yczowfX06e2RldmljZTp7cHJvdG9jb2w6IkFUQSJ9LGF0YV9zbWFydF9hdHRyaWJ1dGVzOnt0YWJsZTpbe2lkOjUsbmFtZToiUmVhbGxvY2F0ZWRfU2VjdG9yX0N0Iix2YWx1ZToxMDAsd29yc3Q6MTAwLHRocmVzaDoxMCxyYXc6e3ZhbHVlOjB9fSx7aWQ6MTk3LG5hbWU6IkN1cnJlbnRfUGVuZGluZ19TZWN0b3IiLHZhbHVlOjEwMCx3b3JzdDoxMDAsdGhyZXNoOjAscmF3Ont2YWx1ZTowfX0se2lkOjE5OSxuYW1lOiJVRE1BX0NSQ19FcnJvcl9Db3VudCIsdmFsdWU6MjAwLHdvcnN0OjIwMCx0aHJlc2g6MCxyYXc6e3ZhbHVlOjB9fV19fX0pLHI9SShuLm1ldHJpY3MsbnVsbCk7cmV0dXJue3ZpcnR1YWxEZW1vOiEwLGludmVudG9yeTp7ZGlza0lkOmUuZGlza0lkLG1vZGVsOmUubW9kZWwuc2xpY2UoMCwxNjApfSxleGFtcGxlOnsuLi5uLG1ldHJpY3M6cixyaXNrOmcoci5tYXAoZT0+ZS5yaXNrKSksc3RhdHVzOiJvayIsc291cmNlOiJsb2NhbC12aXJ0dWFsLWRlbW8iLGdlbmVyYXRlZEF0Om5ldyBEYXRlKHQpLnRvSVNPU3RyaW5nKCl9LGhhc01vcmU6ITF9fWNvbnN0IGI9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXltBLVphLXowLTlfLV17MSwxMjh9JC8udGVzdChlKSxrPShlLHQpPT5Cb29sZWFuKGUmJnQmJlsiZGlza0lkIiwiaG9zdElkIiwiZGV2aWNlSWQiLCJnZW5lcmF0aW9uIl0uZXZlcnkobj0+ZVtuXT09PXRbbl0pKSxDPWU9PiJzdHJpbmciPT10eXBlb2YgZSYmL15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQoPzpcLlxkezEsM30pP1okLy50ZXN0KGUpJiZOdW1iZXIuaXNGaW5pdGUoRGF0ZS5wYXJzZShlKSkmJm5ldyBEYXRlKGUpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxOSk9PT1lLnNsaWNlKDAsMTkpLFI9bmV3IFNldChbIm1vY2siLCJob3N0LXNtYXJ0Y3RsIl0pLE49bmV3IFNldChbIlNNQVJUX0NPTExFQ1RJT05fRkFJTEVEIiwiU01BUlRfVU5BVkFJTEFCTEUiLCJTTUFSVF9VTlNVUFBPUlRFRCIsIlNNQVJUX0lOVkFMSURfREFUQSIsIlNNQVJUX0RFVklDRV9DSEFOR0VEIiwiU01BUlRfSURFTlRJVFlfTUlTTUFUQ0giLCJTTUFSVF9FWEVDVVRJT05fVElNRU9VVCIsIlNNQVJUX0VYRUNVVElPTl9DQU5DRUxMRUQiLCJTTUFSVF9PVVRQVVRfSU5WQUxJRCJdKSx5PW5ldyBTZXQoWyJTTUFSVF9OT19TQU1QTEUiLCJTTUFSVF9ESVNLX1VOQk9VTkQiLCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsIlNNQVJUX1VOQVZBSUxBQkxFIiwiU01BUlRfVU5TVVBQT1JURUQiLCJTTUFSVF9JTlZBTElEX0RBVEEiLCJTTUFSVF9ERVZJQ0VfQ0hBTkdFRCIsIlNNQVJUX0lERU5USVRZX01JU01BVENIIiwiU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTTUFSVF9FWEVDVVRJT05fQ0FOQ0VMTEVEIiwiU01BUlRfT1VUUFVUX0lOVkFMSUQiXSksTD1uZXcgU2V0KFsiU01BUlRfR0VORVJBVElPTl9DSEFOR0VEIiwiU01BUlRfSElTVE9SWV9DVVJTT1JfU1RBTEUiLCJTTUFSVF9CSU5ESU5HX0NIQU5HRUQiLCJTTUFSVF9ESVNLX0ZPUkJJRERFTiIsIkFVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIiwiU01BUlRfUExVR0lOX0RJU0FCTEVEIiwuLi55XSksTT1lPT5bZT8uY29kZSxlPy5tZXNzYWdlXS5maW5kKGU9PkwuaGFzKGUpKXx8IlNNQVJUX1JFQURfRkFJTEVEIixPPWU9PntpZihlLmFib3J0ZWQpdGhyb3cgbmV3IEVycm9yKCJSRVFVRVNUX0NBTkNFTExFRCIpfSxEPWU9Plsib2siLCJzdGFsZSJdLmluY2x1ZGVzKGUuc3RhdHVzKTtmdW5jdGlvbiBVKGUsdCxuPURhdGUubm93KCkpe2lmKCEoZSYmMT09PWUuc2NoZW1hVmVyc2lvbiYmUi5oYXMoZS5zb3VyY2UpJiZrKGUuaWRlbnRpdHksdCkmJlsib2siLCJzdGFsZSIsInVuYXZhaWxhYmxlIiwidW5zdXBwb3J0ZWQiXS5pbmNsdWRlcyhlLnN0YXR1cykpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TTUFSVF9SRVNQT05TRSIpO2lmKCEodm9pZCAwPT09ZS5nYXBDb2RlfHxEKGUpJiZOLmhhcyhlLmdhcENvZGUpKSl0aHJvdyBuZXcgRXJyb3IoIklOVkFMSURfU01BUlRfUkVTUE9OU0UiKTtjb25zdCByPUMoZS5jb2xsZWN0ZWRBdCkmJkRhdGUucGFyc2UoZS5jb2xsZWN0ZWRBdCk8PW4rM2U1O2lmKCFEKGUpKXtpZihudWxsIT09ZS5jb2xsZWN0ZWRBdCYmIXIpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX1NNQVJUX1JFU1BPTlNFIik7cmV0dXJue3NjaGVtYVZlcnNpb246MSxzb3VyY2U6ZS5zb3VyY2Usc3RhdHVzOmUuc3RhdHVzLGlkZW50aXR5OnQsY29sbGVjdGVkQXQ6ZS5jb2xsZWN0ZWRBdCxjb2RlOnkuaGFzKGUuY29kZSk/ZS5jb2RlOiJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsbWV0cmljczpbXSxyaXNrOiJ1bmtub3duIn19aWYoIXJ8fCFlLnNtYXJ0fHxKU09OLnN0cmluZ2lmeShlLnNtYXJ0KS5sZW5ndGg+NTI0Mjg4KXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9TTUFSVF9SRVNQT05TRSIpO2NvbnN0IG89UyhlLnNtYXJ0KSxhPSJzdGFsZSI9PT1lLnN0YXR1c3x8bi1EYXRlLnBhcnNlKGUuY29sbGVjdGVkQXQpPjEyOTZlNT8ic3RhbGUiOiJvayI7cmV0dXJue3NjaGVtYVZlcnNpb246MSxzb3VyY2U6ZS5zb3VyY2Usc3RhdHVzOmEsaWRlbnRpdHk6dCxjb2xsZWN0ZWRBdDplLmNvbGxlY3RlZEF0LC4uLnZvaWQgMD09PWUuZ2FwQ29kZT97fTp7Z2FwQ29kZTplLmdhcENvZGV9LC4uLm8scmlzazpnKG8ubWV0cmljcy5tYXAoZT0+ZS5yaXNrKSl9fWZ1bmN0aW9uIEgoZSx0KXtjb25zdCBuPUQoZSkmJnQuZmluZCh0PT5EKHQpJiZrKHQuaWRlbnRpdHksZS5pZGVudGl0eSkmJkRhdGUucGFyc2UodC5jb2xsZWN0ZWRBdCk8RGF0ZS5wYXJzZShlLmNvbGxlY3RlZEF0KSl8fG51bGwscj1JKGUubWV0cmljcyxuPy5tZXRyaWNzKTtyZXR1cm57c2FtcGxlOnsuLi5lLG1ldHJpY3M6cixyaXNrOmcoci5tYXAoZT0+ZS5yaXNrKSl9LHByZXZpb3VzOm59fWFzeW5jIGZ1bmN0aW9uIHgoZSx0LG4scixvPURhdGUubm93KCkpe2lmKHQudmlydHVhbERlbW8pdGhyb3cgbmV3IEVycm9yKCJWSVJUVUFMX0RFTU9fSEFTX05PX0hJU1RPUlkiKTtPKHIpO2NvbnN0IGE9YXdhaXQgZS5yZWFkSGlzdG9yeSh7aWRlbnRpdHk6dC5pZGVudGl0eSxsaW1pdDozMCxjdXJzb3I6bixzaWduYWw6cn0pO2lmKE8ociksIWF8fDEhPT1hLnNjaGVtYVZlcnNpb258fGEuc291cmNlIT09dC5sYXRlc3Quc291cmNlfHwhayhhLmlkZW50aXR5LHQuaWRlbnRpdHkpfHwhQXJyYXkuaXNBcnJheShhLml0ZW1zKXx8YS5pdGVtcy5sZW5ndGg+MzB8fCEobnVsbD09PWEubmV4dEN1cnNvcnx8InN0cmluZyI9PXR5cGVvZiBhLm5leHRDdXJzb3ImJmEubmV4dEN1cnNvci5sZW5ndGg+MCYmYS5uZXh0Q3Vyc29yLmxlbmd0aDw9NDA5Nil8fG51bGwhPT1hLm5leHRDdXJzb3ImJihhLm5leHRDdXJzb3I9PT1ufHwwPT09YS5pdGVtcy5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9ISVNUT1JZX1JFU1BPTlNFIik7Y29uc3QgaT1uP3QuaGlzdG9yeTpbXSxzPW5ldyBTZXQoaS5tYXAoZT0+ZS5jb2xsZWN0ZWRBdC5zbGljZSgwLDEwKSkpLGw9YS5pdGVtcy5tYXAoZT0+e2NvbnN0IG49VShlLHQuaWRlbnRpdHksbyk7aWYobi5zb3VyY2UhPT1hLnNvdXJjZSl0aHJvdyBuZXcgRXJyb3IoIkhJU1RPUllfU09VUkNFX01JU01BVENIIik7aWYoIW4uY29sbGVjdGVkQXQpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0hJU1RPUllfUkVTUE9OU0UiKTtjb25zdCByPW4uY29sbGVjdGVkQXQuc2xpY2UoMCwxMCk7aWYocy5oYXMocikpdGhyb3cgbmV3IEVycm9yKCJEVVBMSUNBVEVfSElTVE9SWV9USU1FU1RBTVAiKTtyZXR1cm4gcy5hZGQociksbn0pO2lmKG4mJmwuc29tZShlPT5EYXRlLnBhcnNlKGUuY29sbGVjdGVkQXQpPj1EYXRlLnBhcnNlKGkuYXQoLTEpPy5jb2xsZWN0ZWRBdCkpKXRocm93IG5ldyBFcnJvcigiSU5WQUxJRF9ISVNUT1JZX09SREVSIik7Y29uc3QgZD1bLi4uaSwuLi5sXS5zb3J0KChlLHQpPT5EYXRlLnBhcnNlKHQuY29sbGVjdGVkQXQpLURhdGUucGFyc2UoZS5jb2xsZWN0ZWRBdCkpO2lmKGQubGVuZ3RoPjM2NXx8MzY1PT09ZC5sZW5ndGgmJm51bGwhPT1hLm5leHRDdXJzb3IpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0hJU1RPUllfUkVTUE9OU0UiKTtjb25zdHtzYW1wbGU6YyxwcmV2aW91czp1fT1IKHQubGF0ZXN0LGQpO3JldHVybnsuLi50LGxhdGVzdDpjLHByZXZpb3VzOnUsaGlzdG9yeTpkLGhpc3RvcnlVbmF2YWlsYWJsZTohMSxuZXh0Q3Vyc29yOmEubmV4dEN1cnNvcixoYXNNb3JlOm51bGwhPT1hLm5leHRDdXJzb3J9fWZ1bmN0aW9uIEIoZSl7Y29uc3QgdD1mdW5jdGlvbihlKXt0cnl7Y29uc3RbdCxuPSIiXT1lLmxvY2F0aW9uLmhhc2guc2xpY2UoMSkuc3BsaXQoIj8iKTtpZighL15cLyhjbHVzdGVyc3xob3N0cylcL1tBLVphLXowLTlfLV17MSwxMjh9XC8/JC8udGVzdCh0KSlyZXR1cm4gbnVsbDtjb25zdCByPW5ldyBVUkxTZWFyY2hQYXJhbXMobiksbz1KU09OLnBhcnNlKHIuZ2V0KCJzaWRlYmFyIikpO3JldHVybiJkaXNrcyI9PT1KU09OLnBhcnNlKHIuZ2V0KCJ2aWV3IikpJiYiZGlzayI9PT1vPy50eXBlJiZiKG8uaWQpP28uaWQ6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19KGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IG49Wy4uLmUuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRyYXdlci1jb250ZW50LWlubmVyIildLmZpbHRlcihlPT4hZS5jbG9zZXN0KCdbaGlkZGVuXSxbYXJpYS1oaWRkZW49InRydWUiXScpKTtpZigxIT09bi5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcj1uWzBdLG89ci5xdWVyeVNlbGVjdG9yKCIuZGV0YWlsLXRhYnMiKTtpZighb3x8MSE9PXIucXVlcnlTZWxlY3RvckFsbCgiLmRldGFpbC10YWJzIikubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGE9by5jbG9zZXN0KCIuZGV0YWlsLXNpZGViYXItaGVhZGVyIik7bGV0IGk7aWYoYSl7Y29uc3QgZT1hLnBhcmVudEVsZW1lbnQsdD1hLm5leHRFbGVtZW50U2libGluZztpZihpPXQ/Lm5leHRFbGVtZW50U2libGluZywhKGUmJnIuY29udGFpbnMoZSkmJm8ucGFyZW50RWxlbWVudD09PWEmJjE9PT1yLnF1ZXJ5U2VsZWN0b3JBbGwoIi5kZXRhaWwtc2lkZWJhci1oZWFkZXIiKS5sZW5ndGgmJnQ/Lm1hdGNoZXMoIi50YWItYm9yZGVyLWJvdHRvbSIpJiZpPy5tYXRjaGVzKCIudGFiLWNvbnRlbnQiKSYmMT09PXIucXVlcnlTZWxlY3RvckFsbCgiLnRhYi1jb250ZW50IikubGVuZ3RoKSlyZXR1cm4gbnVsbDtjb25zdCBuPVsuLi5lLmNoaWxkcmVuXS5maWx0ZXIoZT0+IWUubWF0Y2hlcygiI3BrLXNtYXJ0LWluZm8tcGFuZWxbZGF0YS1way1zbWFydC1wYW5lbF0iKSk7aWYoMyE9PW4ubGVuZ3RofHxuWzBdIT09YXx8blsxXSE9PXR8fG5bMl0hPT1pKXJldHVybiBudWxsfWVsc2UgaWYoaT1vLm5leHRFbGVtZW50U2libGluZyxyLnF1ZXJ5U2VsZWN0b3IoIi5kZXRhaWwtc2lkZWJhci1oZWFkZXIiKXx8IWk/Lm1hdGNoZXMoIi5kZXRhaWwtdGFiLWNvbnRlbnQsLmRldGFpbC1jb250ZW50IikpcmV0dXJuIG51bGw7Y29uc3Qgcz1bLi4uZS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0cltkYXRhLXJvdy1rZXldIildLmZpbHRlcihlPT5lLmdldEF0dHJpYnV0ZSgiZGF0YS1yb3cta2V5Iik9PT10KSxsPTE9PT1zLmxlbmd0aD9zWzBdLnF1ZXJ5U2VsZWN0b3IoJ3RkW3VuaXF1ZT0icGF0aCJdLHRkLmNlbGxfcGF0aCcpOm51bGwsZD1yLnF1ZXJ5U2VsZWN0b3IoIi50aXRsZS13cmFwcGVyIC5oZWFkZXItdGl0bGUiKSxjPWw/LnRleHRDb250ZW50LnRyaW0oKTtyZXR1cm4gYyYmZD8udGV4dENvbnRlbnQudHJpbSgpPT09YyYmL15cL2RldlwvW0EtWmEtejAtOS9fLV17MSwxMDB9JC8udGVzdChjKT97ZGlza0lkOnQscGF0aDpjLHJvb3Q6cix0YWJzOm8sY29udGVudDppfTpudWxsfWNvbnN0IFY9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC9pLnRlc3QoZSksUD1uZXcgU2V0KFsicnVubmluZyIsInN1Y2NlZWRlZCIsImZhaWxlZCIsInVua25vd24iXSksRz1uZXcgU2V0KFsiU01BUlRfRElTS19VTkJPVU5EIiwiU01BUlRfR0VORVJBVElPTl9DSEFOR0VEIiwiU01BUlRfQklORElOR19DSEFOR0VEIiwiU01BUlRfRElTS19GT1JCSURERU4iLCJTTUFSVF9QTFVHSU5fRElTQUJMRUQiLCJTTUFSVF9DT0xMRUNUSU9OX0ZBSUxFRCIsIlNNQVJUX0NPTExFQ1RJT05fQlVTWSIsIlNNQVJUX0NPTExFQ1RJT05fVU5BVkFJTEFCTEUiLCJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfVElNRU9VVCIsIlNNQVJUX0NPTExFQ1RJT05fVU5LTk9XTiIsIlNNQVJUX0NPTExFQ1RJT05fSU5URVJSVVBURUQiLCJTTUFSVF9VTlNVUFBPUlRFRCIsIlNNQVJUX09VVFBVVF9JTlZBTElEIiwiU01BUlRfSURFTlRJVFlfTUlTTUFUQ0giLCJTTUFSVF9QUk9GSUxFX1VOQVZBSUxBQkxFIiwiU01BUlRfREVWSUNFX1VOQVZBSUxBQkxFIiwiU1NIX0NIQU5ORUxfRElTQUJMRUQiLCJTU0hfVEFSR0VUX1VOQVZBSUxBQkxFIiwiU1NIX0RFVklDRV9VTkFWQUlMQUJMRSIsIlNTSF9UUkFOU1BPUlRfVU5BVkFJTEFCTEUiLCJTU0hfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTU0hfRVhFQ1VUSU9OX0NBTkNFTExFRCIsIlNNQVJUX0VYRUNVVElPTl9USU1FT1VUIiwiU01BUlRfRVhFQ1VUSU9OX0NBTkNFTExFRCIsIlNTSF9SRUdJU1RSQVRJT05fQ0hBTkdFRCIsIlNTSF9DT05DVVJSRU5DWV9MSU1JVCIsIkFVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIiwiQURNSU5fUkVRVUlSRUQiLCJTTUFSVF9CQVRDSF9OT19UQVJHRVRTIiwiU01BUlRfQkFUQ0hfTk9fQVBQUk9WRURfVEFSR0VUUyIsIlNNQVJUX0JBVENIX1RBUkdFVF9MSU1JVCIsIlNNQVJUX0JBVENIX05PVF9BUFBST1ZFRCIsIlNNQVJUX0JBVENIX0FNQklHVU9VU19DT01NQU5EIiwiU01BUlRfQkFUQ0hfU05BUFNIT1RfQ0hBTkdFRCIsIlNNQVJUX0JBVENIX0ZPUkJJRERFTiIsIlNNQVJUX0JBVENIX1RBUkdFVF9VTkFWQUlMQUJMRSIsIlNNQVJUX0JBVENIX0NPTkZMSUNUIiwiU01BUlRfQkFUQ0hfREVBRExJTkUiLCJTTUFSVF9CQVRDSF9JTlRFUlJVUFRFRCIsIlNNQVJUX0JBVENIX0NISUxEX1VOS05PV04iLCJTTUFSVF9CQVRDSF9CVVNZIiwiU01BUlRfQkFUQ0hfQ0FQQUNJVFlfRVhDRUVERUQiLCJTTUFSVF9CQVRDSF9OT1RfRk9VTkQiLCJTTUFSVF9CQVRDSF9BQ0NFU1NfQ0hBTkdFRCIsIlNNQVJUX0JBVENIX0FDQ0VTU19VTkFWQUlMQUJMRSIsIlNNQVJUX0JBVENIX0FDQ0VTU19USU1FT1VUIiwiU01BUlRfQ09MTEVDVElPTl9TTkFQU0hPVF9DSEFOR0VEIl0pO2Z1bmN0aW9uICQoZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGU/LnJhbmRvbVVVSUQpcmV0dXJuIGUucmFuZG9tVVVJRCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5nZXRSYW5kb21WYWx1ZXMpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9DT0xMRUNUSU9OX1VOQVZBSUxBQkxFIik7Y29uc3QgdD1lLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxNikpO3RbNl09MTUmdFs2XXw2NCx0WzhdPTYzJnRbOF18MTI4O2NvbnN0IG49Wy4uLnRdLm1hcChlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpO3JldHVybmAke24uc2xpY2UoMCw4KX0tJHtuLnNsaWNlKDgsMTIpfS0ke24uc2xpY2UoMTIsMTYpfS0ke24uc2xpY2UoMTYsMjApfS0ke24uc2xpY2UoMjApfWB9ZnVuY3Rpb24gRihlKXtmb3IoY29uc3QgdCBvZltlPy5jb2RlLGU/Lm1lc3NhZ2VdKXtpZigiU1NIX1RBUkdFVF9OT1RfQVBQUk9WRUQiPT09dClyZXR1cm4iU1NIX0FQUFJPVkFMX1JFUVVJUkVEIjtpZigiU1NIX0FETUlOX1JFUVVJUkVEIj09PXQpcmV0dXJuIkFETUlOX1JFUVVJUkVEIjtpZigiU01BUlRfQ09MTEVDVElPTl9DT05DVVJSRU5DWV9MSU1JVCI9PT10KXJldHVybiJTTUFSVF9DT0xMRUNUSU9OX0JVU1kiO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmL15TU0hfQVBQUk9WQUxfW0EtWl9dKyQvLnRlc3QodCkpcmV0dXJuIlNTSF9BUFBST1ZBTF9SRVFVSVJFRCI7aWYoRy5oYXModCkpcmV0dXJuIHR9cmV0dXJuIlNNQVJUX0NPTExFQ1RJT05fVU5LTk9XTiJ9Y29uc3Qgej1lPT5bIlNNQVJUX0dFTkVSQVRJT05fQ0hBTkdFRCIsIlNNQVJUX0JJTkRJTkdfQ0hBTkdFRCIsIlNNQVJUX0RJU0tfRk9SQklEREVOIiwiU01BUlRfUExVR0lOX0RJU0FCTEVEIiwiQVVUSEVOVElDQVRJT05fUkVRVUlSRUQiLCJBRE1JTl9SRVFVSVJFRCIsIlNNQVJUX0JBVENIX0ZPUkJJRERFTiIsIlNNQVJUX0JBVENIX0FDQ0VTU19DSEFOR0VEIl0uaW5jbHVkZXMoZSk7ZnVuY3Rpb24gaihlLHQpe2lmKCFlfHwxIT09ZS5zY2hlbWFWZXJzaW9ufHwhVihlLm9wZXJhdGlvbklkKXx8dCYmZS5vcGVyYXRpb25JZCE9PXR8fCFQLmhhcyhlLnN0YXR1cykpdGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0NPTExFQ1RJT05fUkVTUE9OU0UiKTtyZXR1cm57c2NoZW1hVmVyc2lvbjoxLG9wZXJhdGlvbklkOmUub3BlcmF0aW9uSWQsc3RhdHVzOmUuc3RhdHVzLC4uLnZvaWQgMD09PWUuY29kZT97fTp7Y29kZTpGKHtjb2RlOmUuY29kZX0pfX19Y29uc3QgcT0oKT0+T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoIlJFUVVFU1RfQ0FOQ0VMTEVEIikse25hbWU6IkFib3J0RXJyb3IiLGNvZGU6IlJFUVVFU1RfQ0FOQ0VMTEVEIn0pO2FzeW5jIGZ1bmN0aW9uIFkoZSx7aWRlbnRpdHk6dCxyZXF1ZXN0SWQ6bixzaWduYWw6cixvblByb2dyZXNzOm89KCk9Pnt9LHRpbWVvdXRNczphPTQ1ZTMsaW50ZXJ2YWxNczppPTE1MDAsdmFsaWRhdGU6cz1qfSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNvbGxlY3R8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNvbGxlY3Rpb258fCFWKG4pKXRocm93IG5ldyBFcnJvcigiU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRSIpO2lmKHIuYWJvcnRlZCl0aHJvdyBxKCk7Y29uc3QgbD1uZXcgQWJvcnRDb250cm9sbGVyO2xldCBkLGMsdTtjb25zdCBwPWU9Pih7c2NoZW1hVmVyc2lvbjoxLG9wZXJhdGlvbklkOmQ/Lm9wZXJhdGlvbklkPz9udWxsLHN0YXR1czoidW5rbm93biIsY29kZTplfSksXz0oKT0+e2lmKGwuc2lnbmFsLmFib3J0ZWQpdGhyb3cgcSgpfSxBPSgpPT5uZXcgUHJvbWlzZSgoZSx0KT0+e2NvbnN0IG49c2V0VGltZW91dCgoKT0+e2wuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixyKSxlKCl9LGkpLHI9KCk9PntjbGVhclRpbWVvdXQobiksbC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHIpLHQocSgpKX07bC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHIse29uY2U6ITB9KSxsLnNpZ25hbC5hYm9ydGVkJiZyKCl9KSxtPWFzeW5jKCk9PntkPXMoYXdhaXQgZS5jb2xsZWN0KHtpZGVudGl0eTp0LHJlcXVlc3RJZDpuLHNpZ25hbDpsLnNpZ25hbH0pKSxfKCksbyhkKTtmb3IobGV0IG49MDsicnVubmluZyI9PT1kLnN0YXR1cyYmbjwzMDtuKyspYXdhaXQgQSgpLF8oKSxkPXMoYXdhaXQgZS5jb2xsZWN0aW9uKHtpZGVudGl0eTp0LG9wZXJhdGlvbklkOmQub3BlcmF0aW9uSWQsc2lnbmFsOmwuc2lnbmFsfSksZC5vcGVyYXRpb25JZCksXygpLG8oZCk7cmV0dXJuInJ1bm5pbmciPT09ZC5zdGF0dXM/cCgiU01BUlRfQ09MTEVDVElPTl9XQUlUX1RJTUVPVVQiKTpkfTt0cnl7cmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbbSgpLG5ldyBQcm9taXNlKGU9PntjPXNldFRpbWVvdXQoKCk9PntlKHAoIlNNQVJUX0NPTExFQ1RJT05fV0FJVF9USU1FT1VUIikpLGwuYWJvcnQoKX0sYSl9KSxuZXcgUHJvbWlzZSgoZSx0KT0+e3U9KCk9Pnt0KHEoKSksbC5hYm9ydCgpfSxyLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0Iix1LHtvbmNlOiEwfSksci5hYm9ydGVkJiZ1KCl9KV0pfWNhdGNoKGUpe2lmKHIuYWJvcnRlZCl0aHJvdyBxKCk7Y29uc3QgdD1GKGUpO2lmKHoodCkpdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IodCkse2NvZGU6dH0pO3JldHVybnsuLi5wKHQpLHN0YXR1czohZCYmTnVtYmVyLmlzSW50ZWdlcihlLnN0YXR1cykmJmUuc3RhdHVzPj00MDAmJmUuc3RhdHVzPDUwMD8iZmFpbGVkIjoidW5rbm93biJ9fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KGMpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHUpLGwuYWJvcnQoKX19Y29uc3QgVz0oZSx0LG4pPT4iZW4tVVMiPT09ZT9uOnQ7ZnVuY3Rpb24gSyhlLHQpe2lmKCJydW5uaW5nIj09PWUuc3RhdHVzKXJldHVybiBXKHQsIuato+WcqOmHh+mbhuW9k+WJjeejgeebmOKApuemu+W8gOatpOmhteWPquWBnOatoumhtemdouetieW+he+8jOS4jeS/neivgei/nOerr+S7u+WKoeWPlua2iOOAgiIsIkNvbGxlY3RpbmcgdGhpcyBkaXNr4oCmIExlYXZpbmcgdGhpcyBwYWdlIG9ubHkgc3RvcHMgd2FpdGluZzsgdGhlIHJlbW90ZSB0YXNrIG1heSBjb250aW51ZS4iKTtpZigic3VjY2VlZGVkIj09PWUuc3RhdHVzKXJldHVybiBXKHQsIumHh+mbhuS7u+WKoeW3suWujOaIkOOAgiIsIkNvbGxlY3Rpb24gY29tcGxldGVkLiIpO2lmKCJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfQ0FOQ0VMTEVEIj09PWUuY29kZSlyZXR1cm4gVyh0LCLlt7LlgZzmraLpobXpnaLnrYnlvoXvvIzlkI7lj7Dph4fpm4blj6/og73nu6fnu63vvJvor7fph43mlrDor7vlj5bmiJbogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJTdG9wcGVkIHdhaXRpbmcuIENvbGxlY3Rpb24gbWF5IGNvbnRpbnVlIGluIHRoZSBiYWNrZ3JvdW5kOyByZWxvYWQgb3IgYXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5LiIpO2NvbnN0IG49e1NNQVJUX0JBVENIX05PX1RBUkdFVFM6WyLmsqHmnInlt7Lnu5HlrprnmoTno4Hnm5jvvIzmnKrlj5HotbflhajlsYDph4fpm4bjgILor7fphY3nva7lj6/kv6Horr7lpIfnu5HlrprjgIIiLCJObyBkaXNrcyBhcmUgYm91bmQuIEdsb2JhbCBjb2xsZWN0aW9uIHdhcyBub3Qgc3RhcnRlZC4gQ29uZmlndXJlIHRydXN0ZWQgZGV2aWNlIGJpbmRpbmdzLiJdLFNNQVJUX0JBVENIX05PX0FQUFJPVkVEX1RBUkdFVFM6WyLmsqHmnInojrfmibnnmoTph4fpm4bnm67moIfvvIzmnKrlj5HotbflhajlsYDph4fpm4bjgILor7fogZTns7vnrqHnkIblkZjlrqHmoLjjgIIiLCJObyBjb2xsZWN0aW9uIHRhcmdldHMgYXJlIGFwcHJvdmVkLiBHbG9iYWwgY29sbGVjdGlvbiB3YXMgbm90IHN0YXJ0ZWQuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIHJldmlldyBhcHByb3ZhbHMuIl0sU01BUlRfQkFUQ0hfVEFSR0VUX0xJTUlUOlsi6YeH6ZuG55uu5qCH6LaF6L+HIDEwMCDkuKrvvIzmnKrlj5HotbfmibnmrKHvvJvkuI3kvJrpnZnpu5jlv73nlaXotoXlh7rpg6jliIbjgILor7fogZTns7vnrqHnkIblkZjosIPmlbTojIPlm7TjgIIiLCJUaGVyZSBhcmUgbW9yZSB0aGFuIDEwMCB0YXJnZXRzLiBObyBiYXRjaCB3YXMgc3RhcnRlZCBvciBzaWxlbnRseSB0cnVuY2F0ZWQuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIGFkanVzdCB0aGUgc2NvcGUuIl0sU01BUlRfQkFUQ0hfTk9UX0FQUFJPVkVEOlsi6K+l55uu5qCH5pyq6I635b6X5pyJ5pWI6YeH6ZuG5o6I5p2D77yM5pyq5omn6KGM44CCIiwiVGhpcyB0YXJnZXQgbGFja3MgYSB2YWxpZCBjb2xsZWN0aW9uIGFwcHJvdmFsIGFuZCB3YXMgc2tpcHBlZC4iXSxTTUFSVF9CQVRDSF9BTUJJR1VPVVNfQ09NTUFORDpbIuivpeebruagh+ayoeacieWUr+S4gOeahOW3suaJueWHhumHh+mbhuWjsOaYju+8jOacquaJp+ihjOOAgiIsIlRoaXMgdGFyZ2V0IGhhcyBubyB1bmlxdWUgYXBwcm92ZWQgY29sbGVjdGlvbiBkZWNsYXJhdGlvbiBhbmQgd2FzIHNraXBwZWQuIl0sU01BUlRfQkFUQ0hfU05BUFNIT1RfQ0hBTkdFRDpbIuebruagh+e7keWumuaIluWuoeaJueW3suWPmOWMlu+8jOacqui3n+maj+aWsOebruagh+aJp+ihjOOAgiIsIlRoZSBiaW5kaW5nIG9yIGFwcHJvdmFsIGNoYW5nZWQuIEV4ZWN1dGlvbiBkaWQgbm90IGZvbGxvdyBhIG5ldyB0YXJnZXQuIl0sU01BUlRfQ09MTEVDVElPTl9TTkFQU0hPVF9DSEFOR0VEOlsi55uu5qCH57uR5a6a5oiW5a6h5om55bey5Y+Y5YyW77yM5pys5qyh6YeH6ZuG5pyq57un57ut44CCIiwiVGhlIGJpbmRpbmcgb3IgYXBwcm92YWwgY2hhbmdlZC4gVGhpcyBjb2xsZWN0aW9uIGRpZCBub3QgY29udGludWUuIl0sU01BUlRfQkFUQ0hfRk9SQklEREVOOlsi5rKh5pyJ6K+75Y+W6K+l56OB55uY5oiW5om55qyh55qE5p2D6ZmQ77yM6K+36IGU57O7566h55CG5ZGY44CCIiwiQWNjZXNzIHRvIHRoaXMgZGlzayBvciBiYXRjaCBpcyBkZW5pZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTTUFSVF9CQVRDSF9BQ0NFU1NfQ0hBTkdFRDpbIuejgeebmOe7keWumuaIluivu+WPluadg+mZkOW3suWPmOWMlu+8jOW3sua4heepuuaJueasoeWxleekuuOAguivt+aguOWunuOAgiIsIlRoZSBkaXNrIGJpbmRpbmcgb3IgcmVhZCBhY2Nlc3MgY2hhbmdlZC4gQmF0Y2ggZGV0YWlscyB3ZXJlIGNsZWFyZWQuIFZlcmlmeSBhY2Nlc3MuIl0sU01BUlRfQkFUQ0hfVEFSR0VUX1VOQVZBSUxBQkxFOlsi6YeH6ZuG55uu5qCH5pqC5LiN5Y+v55So77yM5pyq5omn6KGM44CCIiwiVGhlIGNvbGxlY3Rpb24gdGFyZ2V0IGlzIHVuYXZhaWxhYmxlIGFuZCB3YXMgc2tpcHBlZC4iXSxTTUFSVF9CQVRDSF9DT05GTElDVDpbIuS4juW3suaciemHh+mbhuS7u+WKoeWGsueqge+8jOacquiHquWKqOmHjeivleOAguivt+WFiOaguOWunui/kOihjOeKtuaAgeOAgiIsIkFub3RoZXIgY29sbGVjdGlvbiBjb25mbGljdHMgd2l0aCB0aGlzIHRhcmdldC4gSXQgd2FzIG5vdCByZXRyaWVkLiBDaGVjayB0aGUgYWN0aXZlIHRhc2suIl0sU01BUlRfQkFUQ0hfQlVTWTpbIuW3suacieWFqOWxgOaJueasoei/kOihjOS4re+8jOacquWPkei1t+aWsOaJueasoeOAguivt+WFiOaguOWunui/kOihjOeKtuaAgeOAgiIsIkEgZ2xvYmFsIGJhdGNoIGlzIGFscmVhZHkgcnVubmluZy4gTm8gbmV3IGJhdGNoIHdhcyBzdGFydGVkLiBDaGVjayBpdHMgc3RhdHVzLiJdLFNNQVJUX0JBVENIX0RFQURMSU5FOlsi5om55qyh6L6+5Yiw5ZCO5Y+w562J5b6F5pe26ZmQ77yM5bCa5pyq5byA5aeL55qE55uu5qCH5pyq5omn6KGM44CCIiwiVGhlIGJhdGNoIHJlYWNoZWQgaXRzIGJhY2tncm91bmQgZGVhZGxpbmUuIFRhcmdldHMgdGhhdCBoYWQgbm90IHN0YXJ0ZWQgd2VyZSBza2lwcGVkLiJdLFNNQVJUX0JBVENIX0lOVEVSUlVQVEVEOlsi5om55qyh6KKr5Lit5pat77yM57uT5p6c5b6F56Gu6K6k44CC5pyq6Ieq5Yqo6YeN5Y+R5ZG95Luk44CCIiwiVGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCBhbmQgaXRzIG91dGNvbWUgaXMgdW5rbm93bi4gQ29tbWFuZHMgd2VyZSBub3QgcmVzZW50LiJdLFNNQVJUX0JBVENIX0NISUxEX1VOS05PV046WyLor6Xno4Hnm5jnmoTph4fpm4bnu5PmnpzlvoXnoa7orqTvvIzmnKroh6rliqjph43lj5Hlkb3ku6TjgIIiLCJUaGlzIGRpc2vigJlzIGNvbGxlY3Rpb24gb3V0Y29tZSBpcyB1bmtub3duLiBUaGUgY29tbWFuZCB3YXMgbm90IHJlc2VudC4iXSxTTUFSVF9CQVRDSF9DQVBBQ0lUWV9FWENFRURFRDpbIuaJueasoeiusOW9leWuuemHj+W3sua7oe+8jOacquWPkei1t+aWsOaJueasoeOAguivt+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgiIsIkJhdGNoIHJlY29yZCBjYXBhY2l0eSBpcyBmdWxsLiBObyBuZXcgYmF0Y2ggd2FzIHN0YXJ0ZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTTUFSVF9CQVRDSF9OT1RfRk9VTkQ6WyLmibnmrKHorrDlvZXkuI3lj6/nlKjvvIzmnKrph43mlrDlj5Hotbfph4fpm4bjgILor7fogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJUaGUgYmF0Y2ggcmVjb3JkIGlzIHVuYXZhaWxhYmxlLiBDb2xsZWN0aW9uIHdhcyBub3QgcmVzdWJtaXR0ZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTU0hfQVBQUk9WQUxfUkVRVUlSRUQ6WyLph4fpm4blkb3ku6TlsJrmnKrlrqHmoLjmiJbmjojmnYPlt7LlpLHmlYjvvIzor7fogZTns7vnrqHnkIblkZjlrqHmoLjjgIIiLCJUaGUgY29sbGVjdGlvbiBjb21tYW5kIGlzIG5vdCBhcHByb3ZlZCwgb3IgYXBwcm92YWwgZXhwaXJlZC4gQXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gcmV2aWV3IGl0LiJdLFNTSF9SRUdJU1RSQVRJT05fQ0hBTkdFRDpbIumHh+mbhuWjsOaYjuW3suWPmOWMlu+8jOmcgOimgeeuoeeQhuWRmOmHjeaWsOWuoeaguOaOiOadg+OAgiIsIlRoZSBjb2xsZWN0aW9uIGRlY2xhcmF0aW9uIGNoYW5nZWQgYW5kIHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgYXBwcm92YWwgYWdhaW4uIl0sU1NIX0NIQU5ORUxfRElTQUJMRUQ6WyLnu5/kuIAgU1NIIOmAmumBk+acquWQr+eUqOaIluacqumFjee9ru+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIlRoZSBzaGFyZWQgU1NIIGNoYW5uZWwgaXMgZGlzYWJsZWQgb3IgdW5jb25maWd1cmVkLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU1NIX1RBUkdFVF9VTkFWQUlMQUJMRTpbIuWwmuacqumFjee9ruWPr+eUqOmHh+mbhuebruagh++8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIk5vIGNvbGxlY3Rpb24gdGFyZ2V0IGlzIGNvbmZpZ3VyZWQuIENvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4iXSxTU0hfREVWSUNFX1VOQVZBSUxBQkxFOlsi6YeH6ZuG6K6+5aSH5bCa5pyq6YWN572u5oiW5bey5LiN5Y+v55So77yM6K+36IGU57O7566h55CG5ZGY44CCIiwiVGhlIGNvbGxlY3Rpb24gZGV2aWNlIGlzIHVuY29uZmlndXJlZCBvciB1bmF2YWlsYWJsZS4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yLiJdLFNNQVJUX1BST0ZJTEVfVU5BVkFJTEFCTEU6WyLlj6/kv6Hph4fpm4bkuLvmnLrphY3nva7kuI3lj6/nlKjvvIzor7fogZTns7vnrqHnkIblkZjjgIIiLCJUaGUgdHJ1c3RlZCBjb2xsZWN0aW9uIGhvc3QgcHJvZmlsZSBpcyB1bmF2YWlsYWJsZS4gQ29udGFjdCBhbiBhZG1pbmlzdHJhdG9yLiJdLFNNQVJUX0RFVklDRV9VTkFWQUlMQUJMRTpbIuWPr+S/oemHh+mbhuiuvuWkh+S4jeWPr+eUqO+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIlRoZSB0cnVzdGVkIGNvbGxlY3Rpb24gZGV2aWNlIGlzIHVuYXZhaWxhYmxlLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU01BUlRfQ09MTEVDVElPTl9VTkFWQUlMQUJMRTpbIuW9k+WJjeahhuaetuWwmuacquaPkOS+m+eri+WNs+mHh+mbhu+8jOivt+iBlOezu+euoeeQhuWRmOOAgiIsIkNvbGxlY3Qgbm93IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZnJhbWV3b3JrLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU1NIX0NPTkNVUlJFTkNZX0xJTUlUOlsi5bey5pyJ6YeH6ZuG5Lu75Yqh6L+Q6KGM5Lit77yM6K+356iN5ZCO5qC45a6e54q25oCB44CCIiwiQSBjb2xsZWN0aW9uIGlzIGFscmVhZHkgcnVubmluZy4gQ2hlY2sgaXRzIHN0YXR1cyBiZWZvcmUgdHJ5aW5nIGFnYWluLiJdLFNNQVJUX0NPTExFQ1RJT05fQlVTWTpbIuW3suaciemHh+mbhuS7u+WKoei/kOihjOS4re+8jOivt+eojeWQjuaguOWunueKtuaAgeOAgiIsIkEgY29sbGVjdGlvbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIENoZWNrIGl0cyBzdGF0dXMgYmVmb3JlIHRyeWluZyBhZ2Fpbi4iXSxBRE1JTl9SRVFVSVJFRDpbIueri+WNs+mHh+mbhumcgOimgeeuoeeQhuWRmOadg+mZkOOAgiIsIkNvbGxlY3Qgbm93IHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgYWNjZXNzLiJdLFNNQVJUX1VOU1VQUE9SVEVEOlsi6K+l6K6+5aSH5LiN5pSv5oyBIFNNQVJUIOmHh+mbhuaIluacqumAj+S8oO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIlNNQVJUIGNvbGxlY3Rpb24gaXMgdW5zdXBwb3J0ZWQgb3Igbm90IHBhc3NlZCB0aHJvdWdoOyBoZWFsdGggaXMgdW5rbm93bi4iXX07aWYoInVua25vd24iPT09ZS5zdGF0dXMpe2NvbnN0IHI9Vyh0LCLph4fpm4bnu5PmnpzlvoXnoa7orqTvvIzku7vliqHlj6/og73ku43lnKjmiafooYzjgILmnKroh6rliqjph43lj5Hor7fmsYLvvJvor7fph43mlrDor7vlj5bmiJbogZTns7vnrqHnkIblkZjmoLjlrp7jgIIiLCJDb2xsZWN0aW9uIG91dGNvbWUgaXMgdW5rbm93bjsgdGhlIHRhc2sgbWF5IHN0aWxsIGJlIHJ1bm5pbmcuIFRoZSByZXF1ZXN0IHdhcyBub3QgcmVzZW50LiBSZWxvYWQgb3IgYXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5LiIpO3JldHVybiBuW2UuY29kZV0/YCR7cn0gJHtXKHQsLi4ubltlLmNvZGVdKX1gOnJ9cmV0dXJuIG5bZS5jb2RlXT9XKHQsLi4ubltlLmNvZGVdKTplLmNvZGUmJiJTTUFSVF9DT0xMRUNUSU9OX1VOS05PV04iIT09ZS5jb2RlP1EoZS5jb2RlLHQpOlcodCwi6YeH6ZuG5Lu75Yqh5aSx6LSl77yM5pyq5o+Q5L6b6K+m57uG5Y6f5Zug44CC6K+36YeN5paw6K+75Y+W5bm26IGU57O7566h55CG5ZGY5qC45a6e44CCIiwiQ29sbGVjdGlvbiBmYWlsZWQgd2l0aG91dCBhIGRldGFpbGVkIHJlYXNvbi4gUmVsb2FkIGFuZCBhc2sgYW4gYWRtaW5pc3RyYXRvciB0byB2ZXJpZnkuIil9ZnVuY3Rpb24gUShlLHQpe3JldHVybiBXKHQsLi4ue1NNQVJUX0dFTkVSQVRJT05fQ0hBTkdFRDpbIuejgeebmOW3suabtOaNouaIlui6q+S7veW3suWPmOWMlu+8jOivt+mHjeaWsOivu+WPluOAgiIsIlRoZSBkaXNrIHdhcyByZXBsYWNlZCBvciBpdHMgaWRlbnRpdHkgY2hhbmdlZC4gUmVsb2FkIHRvIHZlcmlmeSBpdC4iXSxTTUFSVF9CSU5ESU5HX0NIQU5HRUQ6WyLlj6/kv6Hph4fpm4bnu5Hlrprlt7Llj5jljJbvvIzlt7LmuIXnqbrml6fmlbDmja7jgILor7fogZTns7vnrqHnkIblkZjph43mlrDmoLjpqozorr7lpIfnu5HlrprkuI7ph4fpm4bmjojmnYPlkI7lho3or7vlj5bjgIIiLCJUaGUgdHJ1c3RlZCBjb2xsZWN0aW9uIGJpbmRpbmcgY2hhbmdlZC4gUHJldmlvdXMgZGF0YSB3YXMgY2xlYXJlZC4gQXNrIGFuIGFkbWluaXN0cmF0b3IgdG8gdmVyaWZ5IHRoZSBiaW5kaW5nIGFuZCBjb2xsZWN0aW9uIGFwcHJvdmFsIGJlZm9yZSByZWxvYWRpbmcuIl0sU01BUlRfRElTS19GT1JCSURERU46WyLmsqHmnInor7vlj5bor6Xno4Hnm5jnmoTmnYPpmZDvvIzlt7LmuIXnqbrml6fmlbDmja7jgILor7fogZTns7vnrqHnkIblkZjmoLjlrp7lr7nosaHmnYPpmZDjgIIiLCJZb3Ugbm8gbG9uZ2VyIGhhdmUgcmVhZCBhY2Nlc3MgdG8gdGhpcyBkaXNrLiBQcmV2aW91cyBkYXRhIHdhcyBjbGVhcmVkLiBBc2sgYW4gYWRtaW5pc3RyYXRvciB0byB2ZXJpZnkgb2JqZWN0IGFjY2Vzcy4iXSxBVVRIRU5USUNBVElPTl9SRVFVSVJFRDpbIkNsb3VkVG93ZXIg55m75b2V54q25oCB5bey5aSx5pWI77yM5bey5riF56m65pen5pWw5o2u44CC6K+36YeN5paw55m75b2V5ZCO6K+75Y+W77yb5Li75py6IFNTSCDorqTor4Hnu5Pmnpzor7fmn6XnnIvpgJrpgZPni6znq4vmo4Dmn6XjgIIiLCJZb3VyIENsb3VkVG93ZXIgc2Vzc2lvbiBpcyBubyBsb25nZXIgdmFsaWQuIFByZXZpb3VzIGRhdGEgd2FzIGNsZWFyZWQuIFNpZ24gaW4gYWdhaW4gYmVmb3JlIHJlbG9hZGluZzsgY2hlY2sgdGhlIFNTSCBjaGFubmVsIHNlcGFyYXRlbHkgZm9yIGhvc3QgYXV0aGVudGljYXRpb24gcmVzdWx0cy4iXSxTTUFSVF9QTFVHSU5fRElTQUJMRUQ6WyLno4Hnm5jlgaXlurfmj5Lku7blt7LlgZznlKjmiJblvZPliY3kuI3lj6/nlKjvvIzlt7LmuIXnqbrml6fmlbDmja7jgILor7fogZTns7vnrqHnkIblkZjmoLjlrp7mj5Lku7blkK/nlKjnirbmgIHkuI7mnYPpmZDjgIIiLCJUaGUgRGlzayBTTUFSVCBwbHVnaW4gaXMgZGlzYWJsZWQgb3IgdW5hdmFpbGFibGUuIFByZXZpb3VzIGRhdGEgd2FzIGNsZWFyZWQuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIHZlcmlmeSBwbHVnaW4gYWN0aXZhdGlvbiBhbmQgcGVybWlzc2lvbnMuIl0sU01BUlRfSElTVE9SWV9DVVJTT1JfU1RBTEU6WyLljoblj7LorrDlvZXlt7Lmm7TmlrDvvIzor7fph43mlrDor7vlj5bpppbpobXlkI7nu6fnu63nv7vpobXjgIIiLCJIaXN0b3J5IGNoYW5nZWQuIFJlbG9hZCB0aGUgZmlyc3QgcGFnZSBiZWZvcmUgY29udGludWluZy4iXSxTTUFSVF9ESVNLX1VOQk9VTkQ6WyLor6Xno4Hnm5jlsJrmnKrnu5Hlrprlj6/kv6Hph4fpm4borr7lpIfvvIzor7fogZTns7vnrqHnkIblkZjjgIIiLCJUaGlzIGRpc2sgaGFzIG5vIHRydXN0ZWQgY29sbGVjdGlvbiBiaW5kaW5nLiBDb250YWN0IGFuIGFkbWluaXN0cmF0b3IuIl0sU01BUlRfTk9fU0FNUExFOlsi5bCa5peg6YeH5qC377yM562J5b6F5bey5o6I5p2D55qE5ZCO5Y+w6YeH6ZuG44CCIiwiTm8gc2FtcGxlIHlldC4gQXdhaXQgYXV0aG9yaXplZCBiYWNrZ3JvdW5kIGNvbGxlY3Rpb24uIl0sU01BUlRfQ09MTEVDVElPTl9GQUlMRUQ6WyLmnKzmrKHph4fpm4blpLHotKXvvJpTTUFSVCDmlbDmja7kuI3lj6/nlKjvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJDb2xsZWN0aW9uIGZhaWxlZDogU01BUlQgZGF0YSBpcyB1bmF2YWlsYWJsZTsgaGVhbHRoIGlzIHVua25vd24uIl0sU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQ6WyLph4fpm4botoXml7bvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJDb2xsZWN0aW9uIHRpbWVkIG91dDsgaGVhbHRoIGlzIHVua25vd24uIl0sU01BUlRfRVhFQ1VUSU9OX0NBTkNFTExFRDpbIumHh+mbhuW3suWPlua2iO+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIkNvbGxlY3Rpb24gd2FzIGNhbmNlbGxlZDsgaGVhbHRoIGlzIHVua25vd24uIl0sU01BUlRfSURFTlRJVFlfTUlTTUFUQ0g6WyLph4fpm4borr7lpIfouqvku73kuI3nrKbvvIzmnKrkvb/nlKjor6Xnu5PmnpzvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJDb2xsZWN0ZWQgZGV2aWNlIGlkZW50aXR5IGRpZCBub3QgbWF0Y2guIFRoZSByZXN1bHQgd2FzIGRpc2NhcmRlZDsgaGVhbHRoIGlzIHVua25vd24uIl0sU01BUlRfT1VUUFVUX0lOVkFMSUQ6WyLph4fpm4bmlbDmja7ml6DmlYjvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJDb2xsZWN0ZWQgZGF0YSBpcyBpbnZhbGlkOyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9JTlZBTElEX0RBVEE6WyLph4fpm4bmlbDmja7ml6DmlYjvvIzlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJDb2xsZWN0ZWQgZGF0YSBpcyBpbnZhbGlkOyBoZWFsdGggaXMgdW5rbm93bi4iXSxTTUFSVF9ERVZJQ0VfQ0hBTkdFRDpbIumHh+mbhuiuvuWkh+W3suWPmOWMlu+8jOWBpeW6t+eKtuaAgeacquefpeOAgiIsIlRoZSBjb2xsZWN0ZWQgZGV2aWNlIGNoYW5nZWQ7IGhlYWx0aCBpcyB1bmtub3duLiJdLFNNQVJUX1VOQVZBSUxBQkxFOlsi5rKh5pyJ5Y+v55So6YeH5qC377yM5YGl5bq354q25oCB5pyq55+l44CCIiwiTm8gc2FtcGxlIGlzIGF2YWlsYWJsZTsgaGVhbHRoIGlzIHVua25vd24uIl19W2VdfHxbIlNNQVJUIOS/oeaBr+aaguS4jeWPr+eUqOOAguivt+iBlOezu+euoeeQhuWRmOajgOafpemHh+mbhuacjeWKoeWSjOWvueixoeadg+mZkOWQjumHjeivleOAgiIsIlNNQVJUIGluZm9ybWF0aW9uIGlzIHVuYXZhaWxhYmxlLiBBc2sgYW4gYWRtaW5pc3RyYXRvciB0byBjaGVjayBjb2xsZWN0aW9uIGFuZCBvYmplY3QgYWNjZXNzLCB0aGVuIHJldHJ5LiJdKX1mdW5jdGlvbiBYKGUpe3JldHVybiBXKGUsIlNNQVJUIOivu+WPluWksei0peS4jeetieS6jiBTU0gg6K6k6K+B5aSx6LSl77yM5Lmf5LiN6IO95o2u5q2k5Yik5a6a5Z2P55uY44CC6K6k6K+B57uT5p6c6K+35p+l55yLIFNTSCDpgJrpgZPnmoTni6znq4vmo4Dmn6XjgILlj6/og73ljp/lm6DljIXmi6zlt6XlhbfmiJblkb3ku6Tpl67popjjgIHorr7lpIfkuI3mj5DkvpsgU01BUlTvvIzmiJbomZrmi5/ljJblsYLmnKrpgI/kvKDvvIjkvovlpoLmn5DkupsgVk13YXJlIOiZmuaLn+ebmO+8ie+8m+acrOmhteacquehruiupOWFt+S9k+WOn+WboOOAgiIsIkEgU01BUlQgcmVhZCBmYWlsdXJlIGRvZXMgbm90IGVzdGFibGlzaCBhbiBTU0ggYXV0aGVudGljYXRpb24gZmFpbHVyZSBvciBhIGRhbWFnZWQgZGlzay4gU2VlIHRoZSBTU0ggY2hhbm5lbOKAmXMgc2VwYXJhdGUgYXV0aGVudGljYXRpb24gY2hlY2suIFBvc3NpYmxlIGNhdXNlcyBpbmNsdWRlIHRvb2wgb3IgY29tbWFuZCBpc3N1ZXMsIGEgZGV2aWNlIHdpdGhvdXQgU01BUlQsIG9yIG1pc3NpbmcgdmlydHVhbGl6YXRpb24gcGFzc3Rocm91Z2ggKGZvciBleGFtcGxlLCBzb21lIFZNd2FyZSB2aXJ0dWFsIGRpc2tzKS4gVGhpcyBwYWdlIGhhcyBub3QgY29uZmlybWVkIHRoZSBjYXVzZS4iKX1jb25zdCBKPXtoZWFsdGg6WyJTTUFSVCDlgaXlurfoh6rmo4AiLCJTTUFSVCBoZWFsdGggYXNzZXNzbWVudCJdLGF0YV90aHJlc2hvbGRfc3RhdHVzOlsiU01BUlQg6YCA5Ye654q25oCB77ya5bGe5oCn6ZiI5YC85ZGK6K2mIiwiU01BUlQgZXhpdCBzdGF0dXM6IGF0dHJpYnV0ZSB0aHJlc2hvbGQgYWxlcnQiXSxzZWxmX3Rlc3RfZXJyb3JzOlsi6Ieq5qOA5pel5b+X5YyF5ZCr6ZSZ6K+vIiwiU2VsZi10ZXN0IGxvZyBjb250YWlucyBlcnJvcnMiXSx0ZW1wZXJhdHVyZTpbIua4qeW6piIsIlRlbXBlcmF0dXJlIl0scG93ZXJfb25faG91cnM6WyLpgJrnlLXml7bpl7QiLCJQb3dlci1vbiBob3VycyJdLHBvd2VyX2N5Y2xlczpbIumAmueUteasoeaVsCIsIlBvd2VyIGN5Y2xlcyJdLGNyaXRpY2FsX3dhcm5pbmc6WyLkuKXph43orablkYrkvY0iLCJDcml0aWNhbCB3YXJuaW5nIGJpdHMiXSxhdmFpbGFibGVfc3BhcmU6WyLlj6/nlKjlpIfnlKjnqbrpl7QiLCJBdmFpbGFibGUgc3BhcmUiXSxwZXJjZW50YWdlX3VzZWQ6WyLlt7LmtojogJflr7/lkb0iLCJFbmR1cmFuY2UgdXNlZCJdLG1lZGlhX2Vycm9yczpbIuS7i+i0qOS4juaVsOaNruWujOaVtOaAp+mUmeivryIsIk1lZGlhIGFuZCBkYXRhIGludGVncml0eSBlcnJvcnMiXSxudW1fZXJyX2xvZ19lbnRyaWVzOlsi6ZSZ6K+v5pel5b+X5p2h55uuIiwiRXJyb3IgbG9nIGVudHJpZXMiXSx1bnNhZmVfc2h1dGRvd25zOlsi6Z2e5q2j5bi45YWz5py65qyh5pWwIiwiVW5zYWZlIHNodXRkb3ducyJdLGRhdGFfdW5pdHNfcmVhZDpbIuivu+WPluaVsOaNruWNleWFgyIsIkRhdGEgdW5pdHMgcmVhZCJdLGRhdGFfdW5pdHNfd3JpdHRlbjpbIuWGmeWFpeaVsOaNruWNleWFgyIsIkRhdGEgdW5pdHMgd3JpdHRlbiJdLFJlYWxsb2NhdGVkX1NlY3Rvcl9DdDpbIumHjeaYoOWwhOaJh+WMuuaVsCIsIlJlYWxsb2NhdGVkIHNlY3RvcnMiXSxSZWFsbG9jYXRlZF9FdmVudF9Db3VudDpbIumHjeaYoOWwhOS6i+S7tuaVsCIsIlJlYWxsb2NhdGlvbiBldmVudHMiXSxDdXJyZW50X1BlbmRpbmdfU2VjdG9yOlsi5b6F5aSE55CG5omH5Yy65pWwIiwiQ3VycmVudCBwZW5kaW5nIHNlY3RvcnMiXSxPZmZsaW5lX1VuY29ycmVjdGFibGU6WyLnprvnur/kuI3lj6/nuqDmraPmiYfljLoiLCJPZmZsaW5lIHVuY29ycmVjdGFibGUgc2VjdG9ycyJdLFJlcG9ydGVkX1VuY29ycmVjdDpbIuW3suaKpeWRiuS4jeWPr+e6oOato+mUmeivryIsIlJlcG9ydGVkIHVuY29ycmVjdGFibGUgZXJyb3JzIl0sVURNQV9DUkNfRXJyb3JfQ291bnQ6WyLmjqXlj6MgQ1JDIOmUmeivr+aVsCIsIkludGVyZmFjZSBDUkMgZXJyb3JzIl0sUmF3X1JlYWRfRXJyb3JfUmF0ZTpbIuWOn+Wni+ivu+WPlumUmeivr+eOh++8iOWOguWVhuWumuS5ie+8iSIsIlJhdyByZWFkIGVycm9yIHJhdGUgKHZlbmRvciBkZWZpbmVkKSJdLFNlZWtfRXJyb3JfUmF0ZTpbIuWvu+mBk+mUmeivr+eOh++8iOWOguWVhuWumuS5ie+8iSIsIlNlZWsgZXJyb3IgcmF0ZSAodmVuZG9yIGRlZmluZWQpIl0sUG93ZXJfT25fSG91cnM6WyLpgJrnlLXml7bpl7QiLCJQb3dlci1vbiBob3VycyJdLFBvd2VyX0N5Y2xlX0NvdW50Olsi6YCa55S15qyh5pWwIiwiUG93ZXIgY3ljbGVzIl0sVGVtcGVyYXR1cmVfQ2Vsc2l1czpbIua4qeW6pu+8iOWOguWVhuWOn+Wni+agvOW8j++8iSIsIlRlbXBlcmF0dXJlICh2ZW5kb3IgcmF3IGZvcm1hdCkiXSxXZWFyX0xldmVsaW5nX0NvdW50Olsi56Oo5o2f5Z2H6KGh6K6h5pWw77yI5Y6C5ZWG5a6a5LmJ77yJIiwiV2VhciBsZXZlbGluZyBjb3VudCAodmVuZG9yIGRlZmluZWQpIl0sTWVkaWFfV2Vhcm91dF9JbmRpY2F0b3I6WyLku4votKjno6jmjZ/mjIfmoIfvvIjljoLllYblrprkuYnvvIkiLCJNZWRpYSB3ZWFyb3V0IGluZGljYXRvciAodmVuZG9yIGRlZmluZWQpIl0sUGVyY2VudF9MaWZldGltZV9SZW1haW46WyLliankvZnlr7/lkb3vvIjljoLllYblrprkuYnvvIkiLCJSZW1haW5pbmcgbGlmZSAodmVuZG9yIGRlZmluZWQpIl0sc2NzaV9ncm93bl9kZWZlY3RfbGlzdDpbIuWinumVv+e8uumZt+WIl+ihqCIsIkdyb3duIGRlZmVjdCBsaXN0Il0sc2NzaV9yZWFkX2Vycm9yczpbIuS4jeWPr+e6oOato+ivu+WPlumUmeivryIsIlVuY29ycmVjdGVkIHJlYWQgZXJyb3JzIl0sc2NzaV93cml0ZV9lcnJvcnM6WyLkuI3lj6/nuqDmraPlhpnlhaXplJnor68iLCJVbmNvcnJlY3RlZCB3cml0ZSBlcnJvcnMiXSxzY3NpX3ZlcmlmeV9lcnJvcnM6WyLkuI3lj6/nuqDmraPmoKHpqozplJnor68iLCJVbmNvcnJlY3RlZCB2ZXJpZnkgZXJyb3JzIl19O2Z1bmN0aW9uIFooZSx0KXtyZXR1cm4gSltlXT9XKHQsLi4uSltlXSk6Vyh0LCLljoLllYblsZ7mgKciLCJWZW5kb3IgYXR0cmlidXRlIil9Y29uc3QgZWU9KGUsdCk9PlcodCwuLi57dW5rbm93bjpbIuacquefpSIsIlVua25vd24iXSxub3JtYWw6WyLmnKrop6blj5Hop4TliJkiLCJObyBydWxlIHRyaWdnZXJlZCJdLHllbGxvdzpbIuWFs+azqCIsIkF0dGVudGlvbiJdLHJlZDpbIumrmOmjjumZqSIsIkhpZ2ggcmlzayJdLGRhcmtyZWQ6WyLkuKXph43po47pmakiLCJDcml0aWNhbCByaXNrIl19W2VdfHxbIuacquefpSIsIlVua25vd24iXSksdGU9e2ZhaWxlZDpbIuiuvuWkh+aKpeWRiuWBpeW6t+ajgOafpeWksei0pSIsIkRldmljZSByZXBvcnRzIGZhaWxlZCBoZWFsdGggYXNzZXNzbWVudCJdLGNyaXRpY2FsOlsi6K6+5aSH5Lil6YeN6K2m5ZGK5L2N6Z2e6Zu2IiwiRGV2aWNlIGNyaXRpY2FsIHdhcm5pbmcgYml0cyBhcmUgbm9uemVybyJdLHRocmVzaG9sZDpbIuW3sui+vuWIsOiuvuWkh+aKpeWRiueahOmYiOWAvCIsIkRldmljZS1yZXBvcnRlZCB0aHJlc2hvbGQgcmVhY2hlZCJdLGhpc3RvcmljYWw6WyLorr7lpIfmiqXlkYrmm77otorov4fpmIjlgLwiLCJEZXZpY2UgcmVwb3J0cyBhIHByZXZpb3VzIHRocmVzaG9sZCBmYWlsdXJlIl0sZW5kdXJhbmNlOlsi5bey5raI6ICX5a+/5ZG96L6+5Yiw5bGV56S6562W55Wl6ZiI5YC8IiwiRW5kdXJhbmNlIHVzZWQgcmVhY2hlZCBhIGRpc3BsYXkgcG9saWN5IHRocmVzaG9sZCJdLGNvdW50ZXI6WyLor6XplJnor6/miJbnvLrpmbforqHmlbDpnZ7pm7YiLCJUaGlzIGVycm9yIG9yIGRlZmVjdCBjb3VudGVyIGlzIG5vbnplcm8iXSxpbmNyZWFzZWQ6WyLnm7jovoPkuIrkuIDmnInmlYjph4fmoLfliqPljJYiLCJEZXRlcmlvcmF0ZWQgc2luY2UgdGhlIHByZXZpb3VzIHZhbGlkIHNhbXBsZSJdLG5vcm1hbGl6ZWQ6WyLlvZLkuIDljJblgLzkuIvpmY3vvJvljp/lp4vlgLzlkKvkuYnnlLHljoLllYblrprkuYkiLCJOb3JtYWxpemVkIHZhbHVlIGZlbGw7IHJhdyBzZW1hbnRpY3MgYXJlIHZlbmRvciBkZWZpbmVkIl0sdmVuZG9yOlsi5Y6C5ZWG5bGe5oCn5Y6f5aeL5YC85LiN5YGa6YCa55So6aOO6Zmp5o6o5patIiwiTm8gZ2VuZXJpYyByaXNrIGluZmVyZW5jZSBmcm9tIHZlbmRvciByYXcgdmFsdWVzIl0saW5mb3JtYXRpb25hbDpbIuS7heS+m+WPguiAg++8jOS4jeaNruatpOaOqOaWreWvv+WRveaIluaVhemanCIsIkluZm9ybWF0aW9uYWw7IG5vIGxpZmVzcGFuIG9yIGZhaWx1cmUgaW5mZXJlbmNlIl19LG5lPShlLHQpPT50ZVtlXT9XKHQsLi4udGVbZV0pOiLigJQiO2NvbnN0IHJlPSdcbi5way1zbWFydC1hY3Rpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1cbi5way1zbWFydC1oaXN0b3J5e21heC1oZWlnaHQ6MjQwcHg7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjRweCA0cHggNHB4IDIycHh9LnBrLXNtYXJ0LWhpc3RvcnkgbGl7bWFyZ2luOjRweCAwfS5way1zbWFydC1oaXN0b3J5IGJ1dHRvblthcmlhLXByZXNzZWQ9dHJ1ZV17b3V0bGluZToycHggc29saWQgIzA4N2VmNX1cbi5way1zbWFydC10YWJ7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjEwcHggMTRweDtjb2xvcjojNTM2ODgwO2N1cnNvcjpwb2ludGVyO2ZvbnQ6aW5oZXJpdDt3aGl0ZS1zcGFjZTpub3dyYXB9LnBrLXNtYXJ0LXRhYlthcmlhLXNlbGVjdGVkPXRydWVde2NvbG9yOiMwODdlZjU7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzA4N2VmNX0ucGstc21hcnQtdGFiOmZvY3VzLXZpc2libGUsLnBrLXNtYXJ0LXBhbmVsIGJ1dHRvbjpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkICMwODdlZjU7b3V0bGluZS1vZmZzZXQ6MnB4fVxuLnBrLXNtYXJ0LXBhbmVse2ZvbnQ6MTNweC8xLjYgLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixzYW5zLXNlcmlmO2NvbG9yOiMyNDNhNTU7cGFkZGluZzoyMHB4O2JhY2tncm91bmQ6I2Y1ZjdmYjtvdmVyZmxvdzphdXRvO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDI0MHB4KX0ucGstc21hcnQtcGFuZWwgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9LnBrLXNtYXJ0LXBhbmVsIGgze2ZvbnQtc2l6ZToxNnB4O21hcmdpbjowIDAgMTJweH0ucGstc21hcnQtcGFuZWwgaDR7bWFyZ2luOjE4cHggMCA4cHh9LnBrLXNtYXJ0LXBhbmVsIHB7bWFyZ2luOjhweCAwfS5way1zbWFydC1jYXJke2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlMmU5ZjI7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4O21hcmdpbi1ib3R0b206MTJweH0ucGstc21hcnQtbWV0YXtjb2xvcjojNjM3NjhkO2ZvbnQtc2l6ZToxMnB4O292ZXJmbG93LXdyYXA6YW55d2hlcmV9LnBrLXNtYXJ0LWJhbm5lcntwYWRkaW5nOjEwcHggMTJweDtiYWNrZ3JvdW5kOiNlYWYzZmY7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luOjhweCAwfS5way1zbWFydC1ub3RpY2V7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZDojZmZmNWQ4O2NvbG9yOiM2OTRjMDA7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luOjhweCAwfS5way1zbWFydC1zdW1tYXJ5e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHh9LnBrLXNtYXJ0LXBhbmVsIGJ1dHRvbntib3JkZXI6MXB4IHNvbGlkICNkNWRmZWI7YmFja2dyb3VuZDp3aGl0ZTtib3JkZXItcmFkaXVzOjVweDtwYWRkaW5nOjVweCAxMHB4O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9LnBrLXNtYXJ0LXBhbmVsIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0fS5way1zbWFydC1zY3JvbGx7b3ZlcmZsb3cteDphdXRvfS5way1zbWFydC10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTJweH0ucGstc21hcnQtdGFibGUgdGgsLnBrLXNtYXJ0LXRhYmxlIHRke3BhZGRpbmc6MTBweCA4cHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlYmYzO292ZXJmbG93LXdyYXA6YW55d2hlcmU7bWluLXdpZHRoOjcycHh9LnBrLXNtYXJ0LXRhYmxlIHRkOmZpcnN0LWNoaWxke21pbi13aWR0aDoxOTBweH0ucGstc21hcnQtdGFibGUgdGh7Y29sb3I6IzYzNzY4ZDtmb250LXdlaWdodDo1MDA7YmFja2dyb3VuZDojZjdmOWZjfS5way1zbWFydC1jb2Rle2ZvbnQ6MTFweCB1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsQ29uc29sYXMsbW9ub3NwYWNlO2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouODtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MnB4O292ZXJmbG93LXdyYXA6YW55d2hlcmV9LnBrLXNtYXJ0LXJpc2steWVsbG93e2JhY2tncm91bmQ6I2ZmZjFiOCFpbXBvcnRhbnQ7Y29sb3I6IzU5NDAwMCFpbXBvcnRhbnR9LnBrLXNtYXJ0LXJpc2stcmVke2JhY2tncm91bmQ6I2ZmZDhkMiFpbXBvcnRhbnQ7Y29sb3I6IzgyMGQxNiFpbXBvcnRhbnR9LnBrLXNtYXJ0LXJpc2stZGFya3JlZHtiYWNrZ3JvdW5kOiM4YzEwMjYhaW1wb3J0YW50O2NvbG9yOiNmZmYhaW1wb3J0YW50fS5way1zbWFydC1yaXNrLXVua25vd257YmFja2dyb3VuZDojZjBmMmY1O2NvbG9yOiM1ZTZhN2J9LnBrLXNtYXJ0LXBpbGx7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzozcHggOHB4O2ZvbnQtd2VpZ2h0OjYwMH0ucGstc21hcnQtcG9saWN5e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM2Mzc2OGR9LnBrLXNtYXJ0LXBhbmVsIFtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9XG4nO2Z1bmN0aW9uIG9lKHt3aW46ZSxzdG9yZTp0LGdldExvY2FsZTpuLHByb3ZpZGVyOnIsZmluZERldGFpbDpvPUIsdGltZW91dE1zOmE9OGUzLGNvbGxlY3Rpb25UaW1lb3V0TXM6aT00NWUzLGNvbGxlY3Rpb25JbnRlcnZhbE1zOnM9MTUwMH0pe2NvbnN0IGw9ZS5kb2N1bWVudCxkPWwuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtkLmRhdGFzZXQucGtTbWFydFN0eWxlPSIiLGQudGV4dENvbnRlbnQ9cmUsbC5oZWFkLmFwcGVuZChkKTtsZXQgYz0hMSx1PW51bGwscD1udWxsLF89MDtmdW5jdGlvbiBBKCl7dHJ5e3JldHVybiBvKGUpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBtKGUpe2NvbnN0IHQ9QSgpO3JldHVybiBCb29sZWFuKHQmJnQuZGlza0lkPT09ZS5kaXNrSWQmJnQucGF0aD09PWUucGF0aCYmdC5yb290PT09ZS5yb290JiZ0LnRhYnM9PT1lLnRhYnMmJnQuY29udGVudD09PWUuY29udGVudCl9ZnVuY3Rpb24gaCgpe2lmKCF1KXJldHVybjtjb25zdHtwYW5lbDplLGJ1dHRvbjp0LGRldGFpbDpufT11OyJydW5uaW5nIj09PXUuc3RhdGUuY29sbGVjdGlvbj8uc3RhdHVzJiYodS5jb2xsZWN0aW9uQWJvcnQ/LmFib3J0KCksdS5zdGF0ZS5jb2xsZWN0aW9uPXsuLi51LnN0YXRlLmNvbGxlY3Rpb24sc3RhdHVzOiJ1bmtub3duIixjb2RlOiJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfQ0FOQ0VMTEVEIn0pLGUuaGlkZGVuPSEwLHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSx1Lm9wZW4mJihuLmNvbnRlbnQuaGlkZGVuPXUub3JpZ2luYWxIaWRkZW4sdS5vcGVuPSExKX1mdW5jdGlvbiBUKCl7XysrLHUmJih1LmFib3J0Py5hYm9ydCgpLHUuY29sbGVjdGlvbkFib3J0Py5hYm9ydCgpLGUuY2xlYXJUaW1lb3V0KHUudGltZW91dCksaCgpLHUuZGV0YWlsLnRhYnMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGYpLHUuYnV0dG9uLnJlbW92ZSgpLHUucGFuZWwucmVtb3ZlKCksdT1udWxsKX1mdW5jdGlvbiBmKGUpe2UudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXBrLXNtYXJ0LXRhYl0iKXx8aCgpfWZ1bmN0aW9uIGcoKXtpZighdSlyZXR1cm47dS5idXR0b24udGV4dENvbnRlbnQ9VyhuKCksIlNtYXJ0IOS/oeaBryIsIlNNQVJUIGluZm9ybWF0aW9uIik7Y29uc3QgZT0iZnVuY3Rpb24iPT10eXBlb2Ygcj8uY29sbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIHI/LmNvbGxlY3Rpb247IWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGkpe2NvbnN0IHM9ZS5vd25lckRvY3VtZW50LGw9KGUsdCk9PlcobixlLHQpLGQ9KHQsbixyLG89ZSk9Pntjb25zdCBhPWZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89ZS5jcmVhdGVFbGVtZW50KHQpO3JldHVybiB2b2lkIDAhPT1uJiYoby50ZXh0Q29udGVudD1uKSxyJiYoby5jbGFzc05hbWU9ciksb30ocyx0LG4scik7cmV0dXJuIG8uYXBwZW5kKGEpLGF9O2UucmVwbGFjZUNoaWxkcmVuKCksZS5sYW5nPW47Y29uc3QgYz1kKCJkaXYiLHZvaWQgMCwicGstc21hcnQtY2FyZCIpLHU9ZCgiZGl2Iix2b2lkIDAsInBrLXNtYXJ0LXN1bW1hcnkiLGMpO2QoImgzIixsKCJTbWFydCDkv6Hmga8iLCJTTUFSVCBpbmZvcm1hdGlvbiIpLCIiLHUpO2NvbnN0IHA9InJ1bm5pbmciPT09dC5jb2xsZWN0aW9uPy5zdGF0dXMsXz0hMD09PXQucmVzdWx0Py52aXJ0dWFsRGVtbyxBPWQoImRpdiIsdm9pZCAwLCJway1zbWFydC1hY3Rpb25zIix1KSxtPWQoImJ1dHRvbiIsXz9sKCLliLfmlrDnpLrkvosiLCJSZWZyZXNoIGV4YW1wbGUiKTpsKCLph43mlrDor7vlj5YiLCJSZWxvYWQiKSwiIixBKTttLnR5cGU9ImJ1dHRvbiIsbS5kaXNhYmxlZD1Cb29sZWFuKHQubG9hZGluZ3x8dC5oaXN0b3J5TG9hZGluZ3x8cCksbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscik7Y29uc3QgaD1kKCJidXR0b24iLHA/bCgi6YeH6ZuG5Lit4oCmIiwiQ29sbGVjdGluZ+KApiIpOmwoIueri+WNs+mHh+mbhiIsIkNvbGxlY3Qgbm93IiksIiIsQSk7aWYoaC50eXBlPSJidXR0b24iLGguZGF0YXNldC5zbWFydENvbGxlY3Q9IiIsaC5kaXNhYmxlZD1Cb29sZWFuKHQubG9hZGluZ3x8dC5oaXN0b3J5TG9hZGluZ3x8cHx8IXQucmVzdWx0Py5pZGVudGl0eXx8IXQuY2FuQ29sbGVjdCksaC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsaSksZCgicCIsXz9sKCLomZrmi5/nm5jmvJTnpLrkuI3miafooYznnJ/lrp7ph4fpm4bvvJvliLfmlrDlj6rph43mlrDmoLjpqozlnovlj7flubbnlJ/miJDmnKzlnLDnpLrkvovjgIIiLCJWaXJ0dWFsIGRpc2sgZGVtb25zdHJhdGlvbnMgZG8gbm90IGNvbGxlY3QgZnJvbSBhIGhvc3QuIFJlZnJlc2ggb25seSB2ZXJpZmllcyB0aGUgbW9kZWwgYW5kIGdlbmVyYXRlcyBsb2NhbCBleGFtcGxlcy4iKTpsKCLph43mlrDor7vlj5blj6rliLfmlrDlt7LmnInph4fmoLfvvJvnq4vljbPph4fpm4bpnIDlt7LphY3nva7lj6/kv6Horr7lpIflubblrozmiJDkurrlt6XlrqHmoLjjgIIiLCJSZWxvYWQgb25seSByZWFkcyBleGlzdGluZyBzYW1wbGVzLiBDb2xsZWN0IG5vdyByZXF1aXJlcyBhIHRydXN0ZWQgZGV2aWNlIGFuZCBleHBsaWNpdCBhZG1pbmlzdHJhdG9yIGFwcHJvdmFsLiIpLCJway1zbWFydC1tZXRhIixjKSx0LmNhbkNvbGxlY3R8fF98fGQoInAiLEsoe3N0YXR1czoiZmFpbGVkIixjb2RlOiJTTUFSVF9DT0xMRUNUSU9OX1VOQVZBSUxBQkxFIn0sbiksInBrLXNtYXJ0LW1ldGEiLGMpLHQuY29sbGVjdGlvbiYmZCgicCIsSyh0LmNvbGxlY3Rpb24sbiksInBrLXNtYXJ0LW5vdGljZSBway1zbWFydC1jb2xsZWN0aW9uIixjKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKSx0LmxvYWRpbmcpcmV0dXJuIHZvaWQgZCgicCIsbCgi5q2j5Zyo5qC46aqM56OB55uY6Lqr5Lu95bm26K+75Y+W5pWw5o2u4oCmIiwiVmVyaWZ5aW5nIGRpc2sgaWRlbnRpdHkgYW5kIGxvYWRpbmfigKYiKSwiIixjKTtpZih0LmVycm9yKXJldHVybiB2b2lkIGQoInAiLFEodC5lcnJvcixuKSwicGstc21hcnQtbm90aWNlIixjKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKTtjb25zdCBUPXQucmVzdWx0O2lmKCFUKXJldHVybjtjb25zdCBmPV8/VC5pbnZlbnRvcnk6VC5pZGVudGl0eSxnPV8/bnVsbDpULmhpc3RvcnkuZmluZChlPT5lLmNvbGxlY3RlZEF0PT09dC5zZWxlY3RlZEF0KSx7c2FtcGxlOkUscHJldmlvdXM6U309Xz97c2FtcGxlOlQuZXhhbXBsZSxwcmV2aW91czpudWxsfTpIKGd8fFQubGF0ZXN0LFQuaGlzdG9yeSk7aWYoZCgicCIsZi5tb2RlbHx8IuKAlCIsInBrLXNtYXJ0LW1ldGEiLGMpLGQoInAiLF8/bCgi6Jma5ouf56OB55uY5qih5ouf56S65L6LIiwiVmlydHVhbCBkaXNrIGRlbW9uc3RyYXRpb24iKTpnP2woIuato+WcqOafpeeci+WOhuWPsumHh+agtyIsIlZpZXdpbmcgYSBoaXN0b3JpY2FsIHNhbXBsZSIpOmwoIuacgOi/kemHh+mbhue7k+aenCIsIkxhdGVzdCBjb2xsZWN0aW9uIHJlc3VsdCIpLCJway1zbWFydC1tZXRhIixjKSxfJiZkKCJwIixsKCLomZrmi5/no4Hnm5jmqKHmi5/npLrkvosgwrcg5Lul5LiL5pWw5YC85Li65pys5Zyw5p6E6YCg77yM6Z2e6K+l55uY5a6e6ZmFIFNNQVJU44CB5YGl5bq35oiW5a+/5ZG95pWw5o2u44CC55yf5a6e5YGl5bq354q25oCB5pyq55+l77yb56S65L6L5LiN5YaZ5YWl6YeH5qC35Y6G5Y+y44CCIiwiVklSVFVBTCBESVNLIEVYQU1QTEUgwrcgVmFsdWVzIGJlbG93IGFyZSBnZW5lcmF0ZWQgbG9jYWxseSwgbm90IHRoaXMgZGlza+KAmXMgYWN0dWFsIFNNQVJULCBoZWFsdGggb3IgZW5kdXJhbmNlIGRhdGEuIFJlYWwgaGVhbHRoIGlzIHVua25vd24uIEV4YW1wbGVzIGFyZSBub3Qgc3RvcmVkIGluIHNhbXBsZSBoaXN0b3J5LiIpLCJway1zbWFydC1iYW5uZXIgcGstc21hcnQtdmlydHVhbC1iYW5uZXIiLGMpLnNldEF0dHJpYnV0ZSgicm9sZSIsInN0YXR1cyIpLCJtb2NrIj09PUUuc291cmNlJiZkKCJwIixsKCLmnKzlnLDmqKHmi5/mlbDmja4gwrcg5pyq6L+e5o6l55yf5a6e5Li75py6IMK3IOacquWQr+eUqOavj+aXpemHh+mbhiIsIkxvY2FsIG1vY2sgZGF0YSDCtyBObyBsaXZlIGhvc3QgY29ubmVjdGVkIMK3IERhaWx5IGNvbGxlY3Rpb24gaXMgaW5hY3RpdmUiKSwicGstc21hcnQtYmFubmVyIixjKSxbInVuYXZhaWxhYmxlIiwidW5zdXBwb3J0ZWQiXS5pbmNsdWRlcyhFLnN0YXR1cykpZCgicCIsInVuc3VwcG9ydGVkIj09PUUuc3RhdHVzP2woIuivpeiuvuWkh+S4jeaUr+aMgSBTTUFSVCDmiJbmnKrpgI/kvKDvvJvlgaXlurfnirbmgIHmnKrnn6XjgIIiLCJTTUFSVCBpcyB1bnN1cHBvcnRlZCBvciBub3QgcGFzc2VkIHRocm91Z2g7IGhlYWx0aCBpcyB1bmtub3duLiIpOlEoRS5jb2RlLG4pLCJway1zbWFydC1ub3RpY2UiLGMpLEUuY29sbGVjdGVkQXQmJmQoInAiLGAke2woIumHh+mbhuWwneivleaXtumXtO+8iFVUQ++8iSIsIkNvbGxlY3Rpb24gYXR0ZW1wdCAoVVRDKSIpfTogJHtFLmNvbGxlY3RlZEF0fWAsInBrLXNtYXJ0LW1ldGEiLGMpLCJTTUFSVF9OT19TQU1QTEUiIT09RS5jb2RlJiZkKCJwIixYKG4pLCJway1zbWFydC1tZXRhIHBrLXNtYXJ0LWZhaWx1cmUtZ3VpZGFuY2UiLGMpO2Vsc2V7RS5nYXBDb2RlJiZkKCJwIixmdW5jdGlvbihlLHQpe2NvbnN0IG49e1NNQVJUX0NPTExFQ1RJT05fRkFJTEVEOlsi6YeH6ZuG5aSx6LSlIiwiY29sbGVjdGlvbiBmYWlsdXJlIl0sU01BUlRfVU5BVkFJTEFCTEU6WyLmlbDmja7kuI3lj6/nlKgiLCJkYXRhIHVuYXZhaWxhYmxlIl0sU01BUlRfVU5TVVBQT1JURUQ6WyLlvZPml7bkuI3mlK/mjIEgU01BUlQiLCJTTUFSVCB3YXMgdW5zdXBwb3J0ZWQiXSxTTUFSVF9JTlZBTElEX0RBVEE6WyLmlbDmja7ml6DmlYgiLCJpbnZhbGlkIGRhdGEiXSxTTUFSVF9ERVZJQ0VfQ0hBTkdFRDpbIuiuvuWkh+WPmOWMliIsImRldmljZSBjaGFuZ2VkIl0sU01BUlRfSURFTlRJVFlfTUlTTUFUQ0g6WyLorr7lpIfouqvku73kuI3nrKYiLCJkZXZpY2UgaWRlbnRpdHkgbWlzbWF0Y2giXSxTTUFSVF9FWEVDVVRJT05fVElNRU9VVDpbIumHh+mbhui2heaXtiIsImNvbGxlY3Rpb24gdGltZWQgb3V0Il0sU01BUlRfRVhFQ1VUSU9OX0NBTkNFTExFRDpbIumHh+mbhuWPlua2iCIsImNvbGxlY3Rpb24gY2FuY2VsbGVkIl0sU01BUlRfT1VUUFVUX0lOVkFMSUQ6WyLph4fpm4bnu5Pmnpzml6DmlYgiLCJpbnZhbGlkIGNvbGxlY3Rpb24gb3V0cHV0Il19W2VdO3JldHVybiBuP1codCxg5b2T5pel5pu+6YeH6ZuG5aSx6LSl77yM5ZCO5oGi5aSN77yIJHtuWzBdfe+8ieOAguatpOWJjeWksei0peaXtuWIu+acquaPkOS+m+OAgmAsYENvbGxlY3Rpb24gZmFpbGVkIGVhcmxpZXIgdGhhdCBVVEMgZGF5LCB0aGVuIHJlY292ZXJlZCAoJHtuWzFdfSkuIFRoZSBlYXJsaWVyIGZhaWx1cmUgdGltZSB3YXMgbm90IHByb3ZpZGVkLmApOiIifShFLmdhcENvZGUsbiksInBrLXNtYXJ0LW5vdGljZSBway1zbWFydC1yZWNvdmVyZWQiLGMpLnNldEF0dHJpYnV0ZSgicm9sZSIsInN0YXR1cyIpLGQoInNwYW4iLGAke18/bCgi56S65L6L6aOO6Zmp77yI6Z2e55yf5a6e5Yik5pat77yJIiwiRXhhbXBsZSByaXNrIChub3QgYW4gYWN0dWFsIGFzc2Vzc21lbnQpIik6bCgi5bGV56S66aOO6ZmpIiwiRGlzcGxheSByaXNrIil9OiAke2VlKEUucmlzayxuKX1gLGBway1zbWFydC1waWxsIHBrLXNtYXJ0LXJpc2stJHtFLnJpc2t9YCxjKSxkKCJwIixgJHtfP2woIuekuuS+i+eUn+aIkOaXtumXtO+8iOmdnumHh+mbhuaXtumXtO+8jFVUQ++8iSIsIkV4YW1wbGUgZ2VuZXJhdGVkIChub3QgY29sbGVjdGVkLCBVVEMpIik6bCgi6YeH5qC35pe26Ze077yIVVRD77yJIiwiU2FtcGxlIHRpbWUgKFVUQykiKX06ICR7Xz9FLmdlbmVyYXRlZEF0OkUuY29sbGVjdGVkQXR9YCwicGstc21hcnQtbWV0YSIsYyksZCgicCIsYCR7RS5wcm90b2NvbH0gwrcgJHtsKCLmlbDmja7mnaXmupAiLCJTb3VyY2UiKX06ICR7RS5zb3VyY2V9YCwicGstc21hcnQtbWV0YSIsYyksInN0YWxlIj09PUUuc3RhdHVzJiZkKCJwIixsKCLmlbDmja7lt7Lov4fmnJ/vvIjotoXov4cgMzYg5bCP5pe25oiW6YeH6ZuG5pyN5Yqh5qCH6K6w6L+H5pyf77yJ77yM5peg5rOV5o2u5q2k5Yik5pat5b2T5YmN5YGl5bq354q25oCB44CCIiwiRGF0YSBpcyBzdGFsZSAob3ZlciAzNiBob3VycyBvbGQgb3IgbWFya2VkIHN0YWxlIGJ5IHRoZSBwcm92aWRlcik7IGN1cnJlbnQgaGVhbHRoIGNhbm5vdCBiZSBkZXRlcm1pbmVkLiIpLCJway1zbWFydC1ub3RpY2UiLGMpLGQoInAiLF8/bCgi56S65L6L5LiN5LiO55yf5a6e5Y6G5Y+y5a+55q+U77yM5LiN6K6h566X6K+l55uY5a6e6ZmF5Yqj5YyW44CCIiwiRXhhbXBsZXMgYXJlIG5vdCBjb21wYXJlZCB3aXRoIHJlYWwgaGlzdG9yeSBhbmQgZG8gbm90IG1lYXN1cmUgdGhpcyBkaXNr4oCZcyBhY3R1YWwgZGV0ZXJpb3JhdGlvbi4iKTpTP2Ake2woIuWPmOWMluWvueavlOS4iuS4gOacieaViOmHh+agtyIsIkNoYW5nZXMgc2luY2UgcHJldmlvdXMgdmFsaWQgc2FtcGxlIil9OiAke1MuY29sbGVjdGVkQXR9YDpsKCLml6DkuIrkuIDmnInmlYjph4fmoLfvvIzlsJrkuI3og73orqHnrpfliqPljJbjgIIiLCJObyBwcmV2aW91cyB2YWxpZCBzYW1wbGU7IGRldGVyaW9yYXRpb24gY2Fubm90IHlldCBiZSBjYWxjdWxhdGVkLiIpLCJway1zbWFydC1tZXRhIixjKSxULmhpc3RvcnlVbmF2YWlsYWJsZSYmZCgicCIsbCgi5Y6G5Y+y6K+75Y+W5aSx6LSl77yM5b2T5YmN5YC85LuN5Y+v5p+l55yL77yb5pyq6K6h566X5Yqj5YyW44CCIiwiSGlzdG9yeSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDdXJyZW50IHZhbHVlcyByZW1haW4gYXZhaWxhYmxlOyBkZXRlcmlvcmF0aW9uIHdhcyBub3QgY2FsY3VsYXRlZC4iKSwicGstc21hcnQtbm90aWNlIixjKSxkKCJoNCIsXz9sKCJTTUFSVCDmqKHmi5/npLrkvovmnaHnm64iLCJFeGFtcGxlIFNNQVJUIG1ldHJpY3MiKTpsKCJTTUFSVCDmnaHnm64gwrcg6aOO6Zmp5LyY5YWIIiwiU01BUlQgbWV0cmljcyDCtyBSaXNrcyBmaXJzdCIpKTtjb25zdCBlPWQoImRpdiIsdm9pZCAwLCJway1zbWFydC1zY3JvbGwiKSx0PWQoInRhYmxlIix2b2lkIDAsInBrLXNtYXJ0LXRhYmxlIixlKSxyPWQoInRoZWFkIix2b2lkIDAsIiIsdCksbz1kKCJ0ciIsdm9pZCAwLCIiLHIpO2Zvcihjb25zdCBlIG9mW2woIuadoeebriAvIOWOn+Wni+WQjeensCIsIk1ldHJpYyAvIG9yaWdpbmFsIG5hbWUiKSxsKCLlvZPliY3lgLwiLCJDdXJyZW50IiksbCgi5Y+Y5YyWIC8g5Yqj5YyWIiwiQ2hhbmdlIC8gZGV0ZXJpb3JhdGlvbiIpLGwoIumjjumZqeS4juS+neaNriIsIlJpc2sgYW5kIHJlYXNvbiIpXSlkKCJ0aCIsZSwiIixvKS5zY29wZT0iY29sIjtjb25zdCBhPWQoInRib2R5Iix2b2lkIDAsIiIsdCksaT17ZGFya3JlZDo0LHJlZDozLHllbGxvdzoyLHVua25vd246MSxub3JtYWw6MH07Zm9yKGNvbnN0IGUgb2ZbLi4uRS5tZXRyaWNzXS5zb3J0KChlLHQpPT5pW3Qucmlza10taVtlLnJpc2tdKSl7Y29uc3QgdD1kKCJ0ciIsdm9pZCAwLGBway1zbWFydC1yaXNrLSR7ZS5yaXNrfWAsYSk7dC5kYXRhc2V0Lm1ldHJpYz1lLmlkO2NvbnN0IHI9ZCgidGQiLFooZS5uYW1lLG4pLCIiLHQpO2QoInNwYW4iLGAke2UuaWR9IMK3ICR7ZS5uYW1lfWAsInBrLXNtYXJ0LWNvZGUiLHIpO2NvbnN0IG89ZCgidGQiLCJoZWFsdGgiPT09ZS5pZD8iMSI9PT1lLnZhbHVlP2woIumAmui/hyIsIlBhc3NlZCIpOmwoIuWksei0pSIsIkZhaWxlZCIpOmAke2UudmFsdWU/PyhlLnJhd1RleHR8fCLigJQiKX0ke251bGw9PT1lLnZhbHVlPyIiOmUudW5pdH1gLCIiLHQpO3ZvaWQgMCE9PWUubm9ybWFsaXplZD9kKCJzcGFuIixgJHtsKCLlvZLkuIDljJYgLyDmnIDlt64gLyDpmIjlgLwiLCJOb3JtYWxpemVkIC8gd29yc3QgLyB0aHJlc2hvbGQiKX06ICR7ZS5ub3JtYWxpemVkPz8i4oCUIn0gLyAke2Uud29yc3Q/PyLigJQifSAvICR7ZS50aHJlc2hvbGQ/PyLigJQifWAsInBrLXNtYXJ0LWNvZGUiLG8pOnZvaWQgMCE9PWUudGhyZXNob2xkJiZkKCJzcGFuIixgJHtsKCLorr7lpIfpmIjlgLwiLCJEZXZpY2UgdGhyZXNob2xkIil9OiAke2UudGhyZXNob2xkPz8i4oCUIn0lYCwicGstc21hcnQtY29kZSIsbyk7Y29uc3QgaT0iJSI9PT1lLnVuaXQ/bCgiIOS4queZvuWIhueCuSIsIiBwZXJjZW50YWdlIHBvaW50cyIpOmUudW5pdD9gICR7ZS51bml0fWA6IiIscz1kKCJ0ZCIsbnVsbD09PWUuZGVsdGE/IuKAlCI6YCR7QmlnSW50KGUuZGVsdGEpPjBuPyIrIjoiIn0ke2UuZGVsdGF9JHtpfWAsIiIsdCk7bnVsbCE9PWUuZGV0ZXJpb3JhdGlvbiYmZCgic3BhbiIsYCR7bCgi5Yqj5YyWIiwiRGV0ZXJpb3JhdGVkIil9OiAke2UuZGV0ZXJpb3JhdGlvbn0keyJub3JtYWxpemVkIj09PWUuZGV0ZXJpb3JhdGlvbktpbmQ/bCgiIOW9kuS4gOWMlueCuSIsIiBub3JtYWxpemVkIHBvaW50cyIpOml9YCwicGstc21hcnQtY29kZSIscyksImNvdW50ZXItcmVzZXQiPT09ZS50cmVuZCYmZCgic3BhbiIsbCgi6K6h5pWw5LiL6ZmN77ya5Y+v6IO96YeN572u77yb5LiN5b2T5L2c5pS55ZaEIiwiQ291bnRlciBkZWNyZWFzZWQ6IHBvc3NpYmxlIHJlc2V0OyBub3QgdHJlYXRlZCBhcyBpbXByb3ZlbWVudCIpLCJway1zbWFydC1jb2RlIixzKTtjb25zdCBjPWQoInRkIixlZShlLnJpc2ssbiksIiIsdCk7ZCgic3BhbiIsbmUoZS5yZWFzb24sbiksInBrLXNtYXJ0LWNvZGUiLGMpfX1pZihfKXJldHVybiB2b2lkIGQoInAiLGwoIuacrOmhteacquivu+WPluaIluWGmeWFpeecn+WunumHh+agt+WOhuWPsu+8jOekuuS+i+S4jeiuoeS4uuWFqOWxgOaJueasoemHh+mbhuaIkOWKn+OAguWFqOWxgOmHh+mbhuS7jeWPquaTjeS9nOW3sue7keWumuOAgeW3suWuoeaguOeahOecn+Wunuebruagh+OAgiIsIlRoaXMgcGFnZSBkaWQgbm90IHJlYWQgb3Igd3JpdGUgYWN0dWFsIHNhbXBsZSBoaXN0b3J5LiBFeGFtcGxlcyBkbyBub3QgY291bnQgYXMgc3VjY2Vzc2Z1bCBnbG9iYWwgYmF0Y2ggY29sbGVjdGlvbnMuIEdsb2JhbCBjb2xsZWN0aW9uIHN0aWxsIHVzZXMgYm91bmQsIGFwcHJvdmVkIHJlYWwgdGFyZ2V0cy4iKSwicGstc21hcnQtbWV0YSIpO2QoImg0IixsKCLmnIDov5Hph4fmoLforrDlvZUiLCJSZWNlbnQgc2FtcGxlcyIpKSxULmhpc3RvcnlVbmF2YWlsYWJsZSYmIUUubWV0cmljcy5sZW5ndGgmJmQoInAiLGwoIuWOhuWPsuivu+WPluWksei0pe+8jOivt+mHjeaWsOivu+WPluOAgiIsIkhpc3RvcnkgY291bGQgbm90IGJlIGxvYWRlZC4gUmVsb2FkIHRvIHJldHJ5LiIpLCJway1zbWFydC1ub3RpY2UiKTtjb25zdCBJPWQoImJ1dHRvbiIsbCgi5p+l55yL5pyA6L+R57uT5p6cIiwiVmlldyBsYXRlc3QgcmVzdWx0IikpO2lmKEkudHlwZT0iYnV0dG9uIixJLmRpc2FibGVkPSFnLEkub25jbGljaz0oKT0+YShudWxsKSxULmhpc3RvcnkubGVuZ3RoKXtjb25zdCBlPWQoInVsIix2b2lkIDAsInBrLXNtYXJ0LW1ldGEgcGstc21hcnQtaGlzdG9yeSIpO2Zvcihjb25zdCByIG9mIFQuaGlzdG9yeSl7Y29uc3Qgbz1kKCJsaSIsdm9pZCAwLCIiLGUpLGk9SChyLFQuaGlzdG9yeSkuc2FtcGxlLHM9ci5tZXRyaWNzLmxlbmd0aD9lZShpLnJpc2ssbik6InVuc3VwcG9ydGVkIj09PXIuc3RhdHVzP2woIuS4jeaUr+aMgSDCtyDlgaXlurfmnKrnn6UiLCJVbnN1cHBvcnRlZCDCtyBIZWFsdGggdW5rbm93biIpOmwoIumHh+mbhuWksei0pSDCtyDlgaXlurfmnKrnn6UiLCJDb2xsZWN0aW9uIGZhaWxlZCDCtyBIZWFsdGggdW5rbm93biIpLGM9ci5nYXBDb2RlP2woIiDCtyDlvZPml6Xph4fpm4blt7LmgaLlpI0iLCIgwrcgQ29sbGVjdGlvbiByZWNvdmVyZWQgdGhhdCBkYXkiKToiIix1PWQoImJ1dHRvbiIsYCR7ci5jb2xsZWN0ZWRBdH0gwrcgJHtzfSR7Y31gLCIiLG8pO3UudHlwZT0iYnV0dG9uIix1LmRhdGFzZXQuc2FtcGxlVGltZT1yLmNvbGxlY3RlZEF0LHUuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyhyLmNvbGxlY3RlZEF0PT09dC5zZWxlY3RlZEF0KSksdS5vbmNsaWNrPSgpPT5hKHIuY29sbGVjdGVkQXQpfX1lbHNlIGQoInAiLGwoIuaaguaXoOWOhuWPsuiusOW9leOAgiIsIk5vIGhpc3RvcnkgaXMgYXZhaWxhYmxlLiIpLCJway1zbWFydC1tZXRhIik7aWYodC5oaXN0b3J5RXJyb3ImJmQoInAiLFEodC5oaXN0b3J5RXJyb3IsbiksInBrLXNtYXJ0LW5vdGljZSIpLnNldEF0dHJpYnV0ZSgicm9sZSIsInN0YXR1cyIpLFQuaGFzTW9yZSl7Y29uc3QgZT1kKCJidXR0b24iLHQuaGlzdG9yeUxvYWRpbmc/bCgi6K+75Y+W5Lit4oCmIiwiTG9hZGluZ+KApiIpOmwoIuivu+WPluabtOaXqeiusOW9lSIsIkxvYWQgb2xkZXIgc2FtcGxlcyIpKTtlLnR5cGU9ImJ1dHRvbiIsZS5kYXRhc2V0LnNtYXJ0TW9yZT0iIixlLmRpc2FibGVkPUJvb2xlYW4odC5oaXN0b3J5TG9hZGluZ3x8dC5oaXN0b3J5RXJyb3J8fHApLGUub25jbGljaz1vfWQoInAiLGAke2woIuW3suivu+WPluiusOW9lSIsIkxvYWRlZCByZWNvcmRzIil9OiAke1QuaGlzdG9yeS5sZW5ndGh9IC8gMzY1IMK3ICR7bCgi5LuF5q+U6L6D5ZCM5LiA54mp55CG55uY55qE5pyJ5pWI6YeH5qC377yb5aSx6LSl5pel5LiN5L2c5Z+657q/44CCIiwiT25seSB2YWxpZCBzYW1wbGVzIGZyb20gdGhpcyBkaXNrIGdlbmVyYXRpb24gYXJlIGNvbXBhcmVkOyBmYWlsZWQgZGF5cyBhcmUgZXhjbHVkZWQgYXMgYmFzZWxpbmVzLiIpfWAsInBrLXNtYXJ0LW1ldGEiKSxkKCJwIixsKCLmj5DnpLrnrZbnlaXvvJpOVk1lIOW3sueUqOWvv+WRvSDiiaU4MCUg6buE44CB4omlOTAlIOe6ouOAgeKJpTEwMCUg5rex57qi77yb6K6+5aSH5YGl5bq35aSx6LSl44CB5Lil6YeN6K2m5ZGK5oiW5b2T5YmN6ZiI5YC86LaK55WM5Li65rex57qi44CC6ZSZ6K+v6K6h5pWw5ZKM5Yqj5YyW5Y+m6KeB5p2h55uu5L6d5o2u44CC6aKc6Imy55So5LqO6L6F5Yqp5o6S5p+l77yM5LiN5Luj6KGo5pWF6Zqc6aKE5rWL44CC5Y6C5ZWG5bGe5oCn5LiN6YCa55So5o6o566X5a+/5ZG977yb5rip5bqm44CB6ZSZ6K+v5pel5b+X5pWw5ZKM6Z2e5q2j5bi45YWz5py65pWw5LuF5bGV56S644CCIiwiRGlzcGxheSBwb2xpY3k6IE5WTWUgZW5kdXJhbmNlIHVzZWQg4omlODAlIHllbGxvdywg4omlOTAlIHJlZCwg4omlMTAwJSBkYXJrIHJlZC4gRmFpbGVkIGhlYWx0aCwgY3JpdGljYWwgd2FybmluZ3Mgb3IgY3VycmVudCBkZXZpY2UgdGhyZXNob2xkIGZhaWx1cmVzIGFyZSBkYXJrIHJlZC4gU2VlIHJvdyByZWFzb25zIGZvciBlcnJvcnMgYW5kIGRldGVyaW9yYXRpb24uIENvbG9ycyBhaWQgaW52ZXN0aWdhdGlvbiBhbmQgZG8gbm90IHByZWRpY3QgZmFpbHVyZXMuIFZlbmRvciBhdHRyaWJ1dGVzIGRvIG5vdCBpbXBseSBhIHVuaXZlcnNhbCBsaWZlc3Bhbi4gVGVtcGVyYXR1cmUsIGVycm9yIGxvZyBlbnRyaWVzIGFuZCB1bnNhZmUgc2h1dGRvd25zIGFyZSBpbmZvcm1hdGlvbmFsLiIpLCJway1zbWFydC1wb2xpY3kiKX0odS5wYW5lbCx7Li4udS5zdGF0ZSxjYW5Db2xsZWN0OmV9LG4oKSxFLFMsZT0+e3Uuc3RhdGUuc2VsZWN0ZWRBdD1lLGcoKSx1LnBhbmVsLnNjcm9sbFRvcD0wfSxDKX1mdW5jdGlvbiBFKCl7cmV0dXJuIEkoITEpfWZ1bmN0aW9uIFMoKXtpZighdT8uc3RhdGUucmVzdWx0Py52aXJ0dWFsRGVtbylyZXR1cm4gSSghMCl9YXN5bmMgZnVuY3Rpb24gSSh0LG4pe2lmKCF1fHxjfHwhbSh1LmRldGFpbCkpcmV0dXJuIHZvaWQgVCgpO2lmKCJydW5uaW5nIj09PXUuc3RhdGUuY29sbGVjdGlvbj8uc3RhdHVzKXJldHVybjtpZih0JiYoIXUuc3RhdGUucmVzdWx0Py5uZXh0Q3Vyc29yfHx1LnN0YXRlLmhpc3RvcnlMb2FkaW5nfHx1LnN0YXRlLmhpc3RvcnlFcnJvcikpcmV0dXJuO2NvbnN0IG89dSxpPSsrXztvLmFib3J0Py5hYm9ydCgpLGUuY2xlYXJUaW1lb3V0KG8udGltZW91dCk7Y29uc3Qgcz1uZXcgZS5BYm9ydENvbnRyb2xsZXI7by5hYm9ydD1zO2NvbnN0IGw9by5zdGF0ZS5jb2xsZWN0aW9uO28uc3RhdGU9dD97Li4uby5zdGF0ZSxoaXN0b3J5TG9hZGluZzohMH06e2xvYWRpbmc6ITAsY29sbGVjdGlvbjpsfSxnKCk7Y29uc3QgZD1vLnRpbWVvdXQ9ZS5zZXRUaW1lb3V0KCgpPT57cy5hYm9ydCgpLHUhPT1vfHxfIT09aXx8Y3x8KG8uc3RhdGU9e2Vycm9yOiJTTUFSVF9SRUFEX0ZBSUxFRCIsY29sbGVjdGlvbjpsfSxnKCkpfSxhKTt0cnl7Y29uc3QgZT10P2F3YWl0IHgocixvLnN0YXRlLnJlc3VsdCxvLnN0YXRlLnJlc3VsdC5uZXh0Q3Vyc29yLHMuc2lnbmFsKTphd2FpdCBhc3luYyBmdW5jdGlvbihlLHQsbixyPURhdGUubm93KCkpe2lmKCFlfHwhWyJyZXNvbHZlRGlzayIsInJlYWRMYXRlc3QiLCJyZWFkSGlzdG9yeSJdLmV2ZXJ5KHQ9PiJmdW5jdGlvbiI9PXR5cGVvZiBlW3RdKSl0aHJvdyBuZXcgRXJyb3IoIlNNQVJUX1BST1ZJREVSX1VOQVZBSUxBQkxFIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEludmVudG9yeSl7Y29uc3Qgbz1hd2FpdCBlLnJlYWRJbnZlbnRvcnkoe2Rpc2tJZDp0LHNpZ25hbDpufSk7aWYoTyhuKSwxIT09bz8uc2NoZW1hVmVyc2lvbnx8IWIoby5kaXNrPy5kaXNrSWQpfHxvLmRpc2suZGlza0lkIT09dHx8InN0cmluZyIhPXR5cGVvZiBvLmRpc2subW9kZWx8fG8uZGlzay5tb2RlbC5sZW5ndGg+MTYwKXRocm93IG5ldyBFcnJvcigiRElTS19JREVOVElUWV9VTlZFUklGSUVEIik7aWYodyhvLmRpc2subW9kZWwpKXJldHVybiB2KG8uZGlzayxyKX1jb25zdCBvPWZ1bmN0aW9uKGUsdCl7aWYoIShlJiZiKGUuZGlza0lkKSYmZS5kaXNrSWQ9PT10JiZiKGUuaG9zdElkKSYmL15bYS1mMC05XXs2NH0kLy50ZXN0KGUuZ2VuZXJhdGlvbikmJmUuZGV2aWNlSWQ9PT1lLmdlbmVyYXRpb24mJiIiPT09ZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoIkRJU0tfSURFTlRJVFlfVU5WRVJJRklFRCIpO3JldHVybntkaXNrSWQ6ZS5kaXNrSWQsaG9zdElkOmUuaG9zdElkLGRldmljZUlkOmUuZGV2aWNlSWQsZ2VuZXJhdGlvbjplLmdlbmVyYXRpb24scGF0aDoiIixtb2RlbDoic3RyaW5nIj09dHlwZW9mIGUubW9kZWw/ZS5tb2RlbC5zbGljZSgwLDE2MCk6IiJ9fShhd2FpdCBlLnJlc29sdmVEaXNrKHtkaXNrSWQ6dCxzaWduYWw6bn0pLHQpO2lmKE8obiksdyhvLm1vZGVsKSlyZXR1cm4gdih7ZGlza0lkOnQsbW9kZWw6by5tb2RlbH0scik7Y29uc3QgYT1VKGF3YWl0IGUucmVhZExhdGVzdCh7aWRlbnRpdHk6byxzaWduYWw6bn0pLG8scik7TyhuKTtjb25zdCBpPXtpZGVudGl0eTpvLGxhdGVzdDpIKGEsW10pLnNhbXBsZSxoaXN0b3J5OltdLHByZXZpb3VzOm51bGwsaGlzdG9yeVVuYXZhaWxhYmxlOiExLGhhc01vcmU6ITEsbmV4dEN1cnNvcjpudWxsfTtsZXQgczt0cnl7cz1hd2FpdCBlLnJlYWRIaXN0b3J5KHtpZGVudGl0eTpvLGxpbWl0OjMwLGN1cnNvcjpudWxsLHNpZ25hbDpufSl9Y2F0Y2goZSl7aWYoTyhuKSwhKCJUeXBlRXJyb3IiPT09ZT8ubmFtZXx8WzQwOCw0MjldLmluY2x1ZGVzKGU/LnN0YXR1cyl8fGU/LnN0YXR1cz49NTAwKXx8WyJTTUFSVF9HRU5FUkFUSU9OX0NIQU5HRUQiLCJTTUFSVF9ISVNUT1JZX0NVUlNPUl9TVEFMRSIsIlNNQVJUX0RJU0tfVU5CT1VORCJdLmluY2x1ZGVzKE0oZSkpKXRocm93IGU7cmV0dXJuey4uLmksaGlzdG9yeVVuYXZhaWxhYmxlOiEwfX1yZXR1cm4geCh7cmVhZEhpc3Rvcnk6YXN5bmMoKT0+c30saSxudWxsLG4scil9KHIsby5kZXRhaWwuZGlza0lkLHMuc2lnbmFsKTtpZihjfHxzLnNpZ25hbC5hYm9ydGVkfHx1IT09b3x8XyE9PWkpcmV0dXJuO2lmKCFtKG8uZGV0YWlsKSlyZXR1cm4gdm9pZCBUKCk7aWYobiYmKCFrKGUuaWRlbnRpdHksbi5pZGVudGl0eSl8fGUubGF0ZXN0LnNvdXJjZSE9PW4uc291cmNlKSl0aHJvdyBuZXcgRXJyb3IoIlNNQVJUX0dFTkVSQVRJT05fQ0hBTkdFRCIpO28uc3RhdGU9e3Jlc3VsdDplLHNlbGVjdGVkQXQ6dD9vLnN0YXRlLnNlbGVjdGVkQXQ6bnVsbCxjb2xsZWN0aW9uOmUudmlydHVhbERlbW8/dm9pZCAwOmx9LGcoKX1jYXRjaChlKXtpZighYyYmIXMuc2lnbmFsLmFib3J0ZWQmJnU9PT1vJiZfPT09aSl7Y29uc3Qgbj1NKGUpO28uc3RhdGU9dCYmIlNNQVJUX0hJU1RPUllfQ1VSU09SX1NUQUxFIj09PW4/ey4uLm8uc3RhdGUsaGlzdG9yeUxvYWRpbmc6ITEsaGlzdG9yeUVycm9yOm59OntlcnJvcjpuLGNvbGxlY3Rpb246bH0sZygpfX1maW5hbGx5e2UuY2xlYXJUaW1lb3V0KGQpfX1hc3luYyBmdW5jdGlvbiBDKCl7aWYoIXV8fGN8fCF1Lm9wZW58fCFtKHUuZGV0YWlsKXx8IXUuc3RhdGUucmVzdWx0fHx1LnN0YXRlLnJlc3VsdC52aXJ0dWFsRGVtb3x8dS5zdGF0ZS5sb2FkaW5nfHx1LnN0YXRlLmhpc3RvcnlMb2FkaW5nfHwicnVubmluZyI9PT11LnN0YXRlLmNvbGxlY3Rpb24/LnN0YXR1cylyZXR1cm47Y29uc3QgdD11LG49KytfLG89T2JqZWN0LmZyZWV6ZSh7Li4udC5zdGF0ZS5yZXN1bHQuaWRlbnRpdHl9KSxhPXQuc3RhdGUucmVzdWx0LmxhdGVzdC5zb3VyY2U7dC5hYm9ydD8uYWJvcnQoKTtjb25zdCBsPW5ldyBlLkFib3J0Q29udHJvbGxlcjt0LmNvbGxlY3Rpb25BYm9ydD1sLHQuc3RhdGU9ey4uLnQuc3RhdGUsY29sbGVjdGlvbjp7c3RhdHVzOiJydW5uaW5nIn19LGcoKTtjb25zdCBkPSgpPT4hYyYmIWwuc2lnbmFsLmFib3J0ZWQmJnU9PT10JiZfPT09biYmbSh0LmRldGFpbCk7dHJ5e2NvbnN0IG49YXdhaXQgWShyLHtpZGVudGl0eTpvLHJlcXVlc3RJZDokKGUuY3J5cHRvKSxzaWduYWw6bC5zaWduYWwsdGltZW91dE1zOmksaW50ZXJ2YWxNczpzLG9uUHJvZ3Jlc3M6ZT0+e2QoKSYmKHQuc3RhdGUuY29sbGVjdGlvbj1lLGcoKSl9fSk7aWYoIWQoKSlyZXR1cm47dC5zdGF0ZS5jb2xsZWN0aW9uPW4sZygpLCgic3VjY2VlZGVkIj09PW4uc3RhdHVzfHwiZmFpbGVkIj09PW4uc3RhdHVzJiZuLm9wZXJhdGlvbklkKSYmYXdhaXQgSSghMSx7aWRlbnRpdHk6byxzb3VyY2U6YX0pfWNhdGNoKGUpe2lmKCFkKCkpcmV0dXJuO2NvbnN0IG49RihlKSxyPXtzdGF0dXM6ImZhaWxlZCIsY29kZTpufTt0LnN0YXRlPXoobik/e2Vycm9yOm4sY29sbGVjdGlvbjpyfTp7Li4udC5zdGF0ZSxjb2xsZWN0aW9uOnJ9LGcoKX19ZnVuY3Rpb24gUigpe2lmKHA9bnVsbCxjKXJldHVybjtjb25zdCBlPXQuc3RhdHVzKCkubG9hZGVkJiZ0LmdldCgpLmVuYWJsZWQ/QSgpOm51bGw7ZT8odSYmIW0odS5kZXRhaWwpJiZUKCksdXx8ZnVuY3Rpb24oZSl7Y29uc3QgdD1sLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpLG49bC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIik7dC50eXBlPSJidXR0b24iLHQuY2xhc3NOYW1lPSJ0YWItaXRlbSBway1zbWFydC10YWIiLHQuZGF0YXNldC5wa1NtYXJ0VGFiPSIiLHQuaWQ9InBrLXNtYXJ0LWluZm8tdGFiIix0LnNldEF0dHJpYnV0ZSgicm9sZSIsInRhYiIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIsInBrLXNtYXJ0LWluZm8tcGFuZWwiKSxuLmlkPSJway1zbWFydC1pbmZvLXBhbmVsIixuLmNsYXNzTmFtZT0icGstc21hcnQtcGFuZWwiLG4uZGF0YXNldC5wa1NtYXJ0UGFuZWw9IiIsbi5oaWRkZW49ITAsbi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0YWJwYW5lbCIpLG4uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHQuaWQpLHU9e2RldGFpbDplLGJ1dHRvbjp0LHBhbmVsOm4sb3BlbjohMSxvcmlnaW5hbEhpZGRlbjplLmNvbnRlbnQuaGlkZGVuLHN0YXRlOnt9fSx0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixyPT57ci5zdG9wUHJvcGFnYXRpb24oKSx1JiZtKGUpPyh1Lm9wZW58fCh1Lm9yaWdpbmFsSGlkZGVuPWUuY29udGVudC5oaWRkZW4pLGUuY29udGVudC5oaWRkZW49ITAsdS5vcGVuPSEwLG4uaGlkZGVuPSExLHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpLEUoKSk6VCgpfSksZS50YWJzLmFwcGVuZCh0KSxlLmNvbnRlbnQuYWZ0ZXIobiksZS50YWJzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmKSxnKCl9KGUpLHUubG9jYWxlIT09bigpJiYodS5sb2NhbGU9bigpLGcoKSkpOlQoKX1mdW5jdGlvbiBOKCl7Y3x8bnVsbCE9PXB8fChwPWUuc2V0VGltZW91dChSLDQwKSl9Y29uc3QgeT1uZXcgZS5NdXRhdGlvbk9ic2VydmVyKE4pO3kub2JzZXJ2ZShsLmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7Y29uc3QgTD1uZXcgZS5NdXRhdGlvbk9ic2VydmVyKE4pO0wub2JzZXJ2ZShsLmRvY3VtZW50RWxlbWVudCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJsYW5nIl19KTtjb25zdCBEPXQuc3Vic2NyaWJlKE4pO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLE4pLGUuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLE4pLGUuYWRkRXZlbnRMaXN0ZW5lcigibGFuZ3VhZ2VjaGFuZ2UiLE4pLFIoKSwoKT0+e2N8fChjPSEwLFQoKSx5LmRpc2Nvbm5lY3QoKSxMLmRpc2Nvbm5lY3QoKSxEKCksZS5jbGVhclRpbWVvdXQocCksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixOKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixOKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxhbmd1YWdlY2hhbmdlIixOKSxkLnJlbW92ZSgpKX19Y29uc3QgYWU9T2JqZWN0LmZyZWV6ZSh7b3BlcmF0aW9uOiJkaXNrLnNtYXJ0LnJlYWQiLGNhdGVnb3J5OiJkaXNrIix0ZW1wbGF0ZToic3VkbyAtbiAtLSAvdXNyL3NiaW4vc21hcnRjdGwgLS1qc29uPWMgLS1hbGwgPGRpc2s+Iixhcmd1bWVudFNvdXJjZToiZnJlc2gtaG9zdC1pbnZlbnRvcnkiLGV4cGFuc2lvbjoiZWFjaC1hdXRob3JpemVkLWRpc2sifSksaWU9e3F1ZXVlZDpbIuetieW+heS4rSIsIlF1ZXVlZCJdLHJ1bm5pbmc6WyLph4fpm4bkuK0iLCJSdW5uaW5nIl0sc3VjY2VlZGVkOlsi5bey5a6M5oiQIiwiU3VjY2VlZGVkIl0sZmFpbGVkOlsi5aSx6LSlIiwiRmFpbGVkIl0sdW5rbm93bjpbIuW+heehruiupCIsIlVua25vd24iXSxza2lwcGVkOlsi5pyq5omn6KGMIiwiU2tpcHBlZCJdfSxzZT1lPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wJiZlPD0xMDA/ZToi4oCUIixsZT1lPT5lJiZbInRvdGFsIiwuLi5PYmplY3Qua2V5cyhpZSldLmV2ZXJ5KHQ9PiLigJQiIT09c2UoZVt0XSkpJiZPYmplY3Qua2V5cyhpZSkucmVkdWNlKCh0LG4pPT50K2Vbbl0sMCk9PT1lLnRvdGFsLGRlPVsicXVldWVkIiwicnVubmluZyIsInN1Y2NlZWRlZCIsImZhaWxlZCIsInVua25vd24iLCJza2lwcGVkIl0sY2U9ZT0+InN0cmluZyI9PXR5cGVvZiBlJiYvXltBLVphLXowLTldW0EtWmEtejAtOV8tXXswLDEyN30kLy50ZXN0KGUpLHVlPSgpPT57dGhyb3cgbmV3IEVycm9yKCJJTlZBTElEX0NPTExFQ1RJT05fUkVTUE9OU0UiKX07ZnVuY3Rpb24gcGUoZSx0KXtjb25zdCBuPWooZSx0KSxyPWUuc3VtbWFyeTsvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LTRbMC05YS1mXXszfS1bODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn0kLy50ZXN0KG4ub3BlcmF0aW9uSWQpfHx1ZSgpLHImJk9iamVjdC5rZXlzKHIpLnNvcnQoKS5qb2luKCk9PT1bInRvdGFsIiwuLi5kZV0uc29ydCgpLmpvaW4oKSYmWyJ0b3RhbCIsLi4uZGVdLmV2ZXJ5KGU9Pk51bWJlci5pc0ludGVnZXIocltlXSkmJnJbZV0+PTAmJnJbZV08PTEwMCkmJmRlLnJlZHVjZSgoZSx0KT0+ZStyW3RdLDApPT09ci50b3RhbCYmQXJyYXkuaXNBcnJheShlLml0ZW1zKSYmZS5pdGVtcy5sZW5ndGg9PT1yLnRvdGFsfHx1ZSgpO2NvbnN0IG89bmV3IFNldCxhPU9iamVjdC5mcm9tRW50cmllcyhkZS5tYXAoZT0+W2UsMF0pKSxpPWUuaXRlbXMubWFwKGU9PihlJiZjZShlLmRpc2tJZCkmJiJzdHJpbmciPT10eXBlb2YgZS5nZW5lcmF0aW9uJiYvXlswLTlhLWZdezY0fSQvLnRlc3QoZS5nZW5lcmF0aW9uKSYmZGUuaW5jbHVkZXMoZS5zdGF0dXMpJiYhby5oYXMoZS5kaXNrSWQpfHx1ZSgpLG8uYWRkKGUuZGlza0lkKSxhW2Uuc3RhdHVzXSsrLHtkaXNrSWQ6ZS5kaXNrSWQsZ2VuZXJhdGlvbjplLmdlbmVyYXRpb24sc3RhdHVzOmUuc3RhdHVzLC4uLnZvaWQgMD09PWUuY29kZT97fTp7Y29kZTpGKHtjb2RlOmUuY29kZX0pfX0pKSxzPWEucXVldWVkfHxhLnJ1bm5pbmc/InJ1bm5pbmciOmEudW5rbm93bj8idW5rbm93biI6YS5zdWNjZWVkZWQ9PT1pLmxlbmd0aD8ic3VjY2VlZGVkIjoiZmFpbGVkIjtyZXR1cm4gaS5sZW5ndGgmJiFkZS5zb21lKGU9PmFbZV0hPT1yW2VdKSYmbi5zdGF0dXM9PT1zfHx1ZSgpLHsuLi5uLHN1bW1hcnk6e3RvdGFsOnIudG90YWwsLi4uYX0saXRlbXM6aX19ZnVuY3Rpb24gX2Uoe1JlYWN0OmUsd2luOnQsb3B0aW9uczpvPXt9LGdldExvY2FsZTpzPSgpPT4iemgtQ04ifSl7Y29uc3QgbD1lLmNyZWF0ZUVsZW1lbnQsZD1mdW5jdGlvbihlLHQsbil7Y29uc3R7ZGVmYXVsdHM6cixlcXVhbDpvLHNlZWQ6YSx2YWxpZGF0ZTpzfT1uLGw9ZnVuY3Rpb24oZSl7bGV0IHQ9e3Nob3dGbG9hdGluZ0J1dHRvbjohMH0sbj0hMDtjb25zdCByPW5ldyBTZXQsbz0oKT0+e2Zvcihjb25zdCBlIG9mIHIpZSh7Li4udH0pfTtmdW5jdGlvbiBhKGUpe2NvbnN0IHQ9SlNPTi5wYXJzZShlfHwie30iKSxuPXQuZmxvYXRpbmdQb3NpdGlvbixyPW4mJlsieCIsInkiXS5ldmVyeShlPT5OdW1iZXIuaXNGaW5pdGUobltlXSkmJm5bZV0+PTAmJm5bZV08PTFlNSk/e3g6TWF0aC5yb3VuZChuLngpLHk6TWF0aC5yb3VuZChuLnkpfTpudWxsO3JldHVybntzaG93RmxvYXRpbmdCdXR0b246ITEhPT10LnNob3dGbG9hdGluZ0J1dHRvbixmbG9hdGluZ1Bvc2l0aW9uOnJ9fXRyeXt0PWEoZS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShpKSl9Y2F0Y2h7bj0hMX1mdW5jdGlvbiBzKGUpe2lmKGUua2V5PT09aXx8bnVsbD09PWUua2V5KXRyeXt0PWEoZS5uZXdWYWx1ZSksbygpfWNhdGNoe319cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIscykse2dldDooKT0+KHsuLi50fSkscGVyc2lzdGVudDooKT0+bix1cGRhdGUocil7dD1hKEpTT04uc3RyaW5naWZ5KHsuLi50LC4uLnJ9KSk7dHJ5e2UubG9jYWxTdG9yYWdlLnNldEl0ZW0oaSxKU09OLnN0cmluZ2lmeSh0KSksbj0hMH1jYXRjaHtuPSExfXJldHVybiBvKCksey4uLnR9fSxzdWJzY3JpYmU6ZT0+KHIuYWRkKGUpLCgpPT5yLmRlbGV0ZShlKSksZGlzcG9zZSgpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIscyksci5jbGVhcigpfX19KGUpLGQ9bmV3IFNldDtsZXQgYz1yKCkscD1yKCksXz1bXSxBPXtsb2FkZWQ6ITEsbG9hZGluZzohMSxzYXZpbmc6ITEsZXJyb3I6IiIscmV2aXNpb246MCx1cGRhdGVkQXQ6bnVsbH07Y29uc3QgbT1lPT5KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKSxoPSgpPT4oey4uLkEsZGlydHk6IW8oYyxwKX0pLFQ9KCk9Pih7Li4ubShjKSxzaG93RmxvYXRpbmdCdXR0b246bC5nZXQoKS5zaG93RmxvYXRpbmdCdXR0b259KSxmPSgpPT4oey4uLm0ocCksc2hvd0Zsb2F0aW5nQnV0dG9uOmwuZ2V0KCkuc2hvd0Zsb2F0aW5nQnV0dG9ufSksZz0oKT0+e2Zvcihjb25zdCBlIG9mIGQpZShUKCkpfSxFPWwuc3Vic2NyaWJlKGcpO2Z1bmN0aW9uIFMoKXtBLmxvYWRlZCYmKHA9YShwLF8pKX1yZXR1cm57Z2V0OlQsZ2V0RHJhZnQ6ZixzdGF0dXM6aCxwZXJzaXN0ZW50OmwucGVyc2lzdGVudCxzdWJzY3JpYmU6ZT0+KGQuYWRkKGUpLCgpPT5kLmRlbGV0ZShlKSksdXBkYXRlKGUpe2lmKEEuc2F2aW5nKXJldHVybiBmKCk7T2JqZWN0Lmhhc093bihlLCJzaG93RmxvYXRpbmdCdXR0b24iKSYmbC51cGRhdGUoe3Nob3dGbG9hdGluZ0J1dHRvbjplLnNob3dGbG9hdGluZ0J1dHRvbn0pO2NvbnN0IHQ9ey4uLmV9O3JldHVybiBkZWxldGUgdC5zaG93RmxvYXRpbmdCdXR0b24sT2JqZWN0LmtleXModCkubGVuZ3RoJiZBLmxvYWRlZCYmKHA9cih7Li4ucCwuLi50fSkpLGcoKSxmKCl9LHNldENsdXN0ZXJzKGUpe189ZTt0cnl7UygpfWNhdGNoe0EuZXJyb3I9Iumbhue+pOaVsOmHj+i2hei/h+mFjee9ruWuuemHj++8jOacquiHquWKqOihpeWFqOinhOWImeOAgiJ9ZygpfSxhc3luYyBsb2FkKCl7aWYoIUEubG9hZGluZyYmIUEuc2F2aW5nKXtBPXsuLi5BLGxvYWRpbmc6ITB9LGcoKTt0cnl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCQUNLRU5EX1VOQVZBSUxBQkxFIik7IWZ1bmN0aW9uKGUpe2NvbnN0IHQ9dShlLHMpLG49aCgpLmRpcnR5O2M9dC5zZXR0aW5ncyxufHwocD1tKGMpKSxBPXsuLi5BLGxvYWRlZDohMCxyZXZpc2lvbjp0LnJldmlzaW9uLHVwZGF0ZWRBdDp0LnVwZGF0ZWRBdCxlcnJvcjoiIn0sUygpfShhd2FpdCB0LmxvYWQoKSl9Y2F0Y2h7QS5lcnJvcj0i5YWx5Lqr6YWN572u6K+75Y+W5aSx6LSl77yM6K+36YeN6K+V44CCIn1maW5hbGx5e0EubG9hZGluZz0hMSxnKCl9fX0sYXN5bmMgc2F2ZSgpe2lmKCFBLmxvYWRlZHx8IXR8fEEuc2F2aW5nKXJldHVybiExO2NvbnN0IGU9bShwKTtBPXsuLi5BLHNhdmluZzohMCxlcnJvcjoiIn0sZygpO3RyeXtsZXQgbjt0cnl7bj11KGF3YWl0IHQuc2F2ZShlKSxzKX1jYXRjaHtpZihuPXUoYXdhaXQgdC5sb2FkKCkscyksIW8obi5zZXR0aW5ncyxlKSl0aHJvdyBuZXcgRXJyb3IoIlNBVkVfTk9UX0NPTkZJUk1FRCIpfWlmKCFvKG4uc2V0dGluZ3MsZSkpdGhyb3cgbmV3IEVycm9yKCJTQVZFX05PVF9DT05GSVJNRUQiKTtyZXR1cm4gYz1uLnNldHRpbmdzLHA9bShjKSxBPXsuLi5BLHJldmlzaW9uOm4ucmV2aXNpb24sdXBkYXRlZEF0Om4udXBkYXRlZEF0fSwhMH1jYXRjaHtyZXR1cm4gQS5lcnJvcj0i5pyq6IO956Gu6K6k5L+d5a2Y5oiQ5Yqf77yM5L+u5pS55bey5L+d55WZ77yM6K+36YeN6K+V44CCIiwhMX1maW5hbGx5e0Euc2F2aW5nPSExLGcoKX19LGRpc2NhcmQoKXtBLnNhdmluZ3x8KHA9bShjKSxBLmVycm9yPSIiLGcoKSl9LGRpc3Bvc2UoKXtFKCksbC5kaXNwb3NlKCksZC5jbGVhcigpfX19KHQsby5jb25maWd1cmF0aW9uQmFja2VuZD8uKCl8fHAodCxhLHIpLGEpLGM9ZnVuY3Rpb24oZSx0LG49e30pe2NvbnN0IHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/LmNvbGxlY3RBbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Py5jb2xsZWN0aW9uQWxsO2xldCBvLGE9e2FjdGl2ZTohMSxhdmFpbGFibGU6cixzdGF0dXM6ImlkbGUifSxpPTA7Y29uc3Qgcz1uZXcgU2V0LGw9ZT0+e2E9ZTtmb3IoY29uc3QgZSBvZiBzKWUoYSl9LGQ9KCk9PntpKyssbz8uYWJvcnQoKSxvPW51bGwsInJ1bm5pbmciPT09YS5zdGF0dXMmJmwoey4uLmEsc3RhdHVzOiJ1bmtub3duIixjb2RlOiJTTUFSVF9DT0xMRUNUSU9OX1dBSVRfQ0FOQ0VMTEVEIn0pfTtyZXR1cm57c25hcHNob3Q6KCk9PmEsc3Vic2NyaWJlOmU9PihzLmFkZChlKSxlKGEpLCgpPT57cy5kZWxldGUoZSkscy5zaXplfHxkKCl9KSxzdGFydCgpe2woey4uLmEsYWN0aXZlOiEwfSl9LHN0b3AoKXtkKCksbCh7Li4uYSxhY3RpdmU6ITF9KX0sYXN5bmMgY29sbGVjdCgpe2lmKCFhLmFjdGl2ZXx8IXJ8fCJydW5uaW5nIj09PWEuc3RhdHVzKXJldHVybjtjb25zdCBzPSsraTtsZXQgZDt0cnl7ZD0kKGUuY3J5cHRvKX1jYXRjaHtyZXR1cm4gdm9pZCBsKHsuLi5hLHN0YXR1czoiZmFpbGVkIixjb2RlOiJTTUFSVF9DT0xMRUNUSU9OX1VOQVZBSUxBQkxFIn0pfW89bmV3IGUuQWJvcnRDb250cm9sbGVyO2NvbnN0IGM9KCk9PnM9PT1pJiYhbz8uc2lnbmFsLmFib3J0ZWQmJmEuYWN0aXZlO2woe2FjdGl2ZTohMCxhdmFpbGFibGU6cixzdGF0dXM6InJ1bm5pbmcifSk7dHJ5e2NvbnN0IGU9YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZT8uY29sbGVjdEFsbHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGU/LmNvbGxlY3Rpb25BbGwpdGhyb3cgbmV3IEVycm9yKCJTTUFSVF9DT0xMRUNUSU9OX1VOQVZBSUxBQkxFIik7bGV0IG47Y29uc3Qgcj1hd2FpdCBZKHtjb2xsZWN0Oih7cmVxdWVzdElkOnQsc2lnbmFsOm59KT0+ZS5jb2xsZWN0QWxsKHtyZXF1ZXN0SWQ6dCxzaWduYWw6bn0pLGNvbGxlY3Rpb246KHtvcGVyYXRpb25JZDp0LHNpZ25hbDpufSk9PmUuY29sbGVjdGlvbkFsbCh7b3BlcmF0aW9uSWQ6dCxzaWduYWw6bn0pfSx7Li4udCx2YWxpZGF0ZTpwZSxvblByb2dyZXNzOmU9PntuPWUsdC5vblByb2dyZXNzPy4oZSl9fSk7cmV0dXJuey4uLm58fHt9LC4uLnJ9fSh0LHsuLi5uLHJlcXVlc3RJZDpkLHNpZ25hbDpvLnNpZ25hbCxvblByb2dyZXNzOmU9PntjKCkmJmwoey4uLmUsYWN0aXZlOiEwLGF2YWlsYWJsZTpyfSl9fSk7YygpJiZsKHsuLi5lLGFjdGl2ZTohMCxhdmFpbGFibGU6cn0pfWNhdGNoKGUpe2MoKSYmbCh7YWN0aXZlOiEwLGF2YWlsYWJsZTpyLHN0YXR1czoiZmFpbGVkIixjb2RlOkYoZSl9KX1maW5hbGx5e3M9PT1pJiYobz1udWxsKX19fX0odCxvLmRpc2tTbWFydEluZm8/LnByb3ZpZGVyKSxfPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5jcmVhdGVFbGVtZW50O3JldHVybiBmdW5jdGlvbih7bG9jYWxlOmU9InpoLUNOIixzdGF0ZTpuPXt9LG9uQ29sbGVjdDpyLGRpc2FibGVkOm89ITF9KXtjb25zdCBhPSh0LG4pPT5XKGUsdCxuKSxpPSJydW5uaW5nIj09PW4uc3RhdHVzLHM9ImZ1bmN0aW9uIj09dHlwZW9mIHIsbD1sZShuLnN1bW1hcnkpP24uc3VtbWFyeTpudWxsLGQ9QXJyYXkuaXNBcnJheShuLml0ZW1zKT9uLml0ZW1zLnNsaWNlKDAsMTAwKTpbXTtsZXQgYztyZXR1cm4gaT9jPWEoIuWFqOWxgOmHh+mbhuato+WcqOi/m+ihjOOAguWFs+mXremFjee9rumhteWPquWBnOatoumhtemdouetieW+he+8jOWQjuWPsOS7u+WKoeWPr+iDvee7p+e7reOAgiIsIkdsb2JhbCBjb2xsZWN0aW9uIGlzIHJ1bm5pbmcuIENsb3Npbmcgc2V0dGluZ3Mgb25seSBzdG9wcyB3YWl0aW5nOyBiYWNrZ3JvdW5kIHdvcmsgbWF5IGNvbnRpbnVlLiIpOiJ1bmtub3duIj09PW4uc3RhdHVzP2M9IlNNQVJUX0NPTExFQ1RJT05fV0FJVF9DQU5DRUxMRUQiPT09bi5jb2RlP2EoIuW3suWBnOatoumhtemdouetieW+he+8jOWQjuWPsOaJueasoeWPr+iDveS7jeWcqOaJp+ihjO+8jOacquiHquWKqOmHjeWPkeivt+axguOAguivt+aguOWunuWQjuWGjeWPkei1t+aWsOeahOmHh+mbhuOAgiIsIlBhZ2Ugd2FpdGluZyBzdG9wcGVkLiBUaGUgYmFja2dyb3VuZCBiYXRjaCBtYXkgc3RpbGwgYmUgcnVubmluZyBhbmQgd2FzIG5vdCByZXN1Ym1pdHRlZC4gVmVyaWZ5IGl0IGJlZm9yZSBzdGFydGluZyBhbm90aGVyIGNvbGxlY3Rpb24uIik6YSgi5om55qyh57uT5p6c5b6F56Gu6K6k77yM5pyq6Ieq5Yqo6YeN5Y+R6K+35rGC44CC6K+35qC45a6e5ZCO5YaN5Y+R6LW35paw55qE6YeH6ZuG44CCIiwiVGhlIGJhdGNoIG91dGNvbWUgaXMgdW5rbm93bi4gVGhlIHJlcXVlc3Qgd2FzIG5vdCByZXNlbnQuIFZlcmlmeSBpdCBiZWZvcmUgc3RhcnRpbmcgYW5vdGhlciBjb2xsZWN0aW9uLiIpOiJzdWNjZWVkZWQiPT09bi5zdGF0dXMmJighbHx8bC5xdWV1ZWQ+MHx8bC5ydW5uaW5nPjApP2M9YSgi5om55qyh57uT5p6c5L+h5oGv5LiN5a6M5pW077yM6K+36YeN5paw5qC45a6e54q25oCB44CCIiwiQmF0Y2ggcmVzdWx0IGluZm9ybWF0aW9uIGlzIGluY29tcGxldGUuIFZlcmlmeSBpdHMgc3RhdHVzIGFnYWluLiIpOjA9PT1sPy50b3RhbD9jPWEoIuayoeacieWPr+aJp+ihjOeahOmHh+mbhuebruagh++8jOivt+ajgOafpeWPr+S/oeiuvuWkh+mFjee9ruS4juWuoeaguOOAgiIsIk5vIGNvbGxlY3Rpb24gdGFyZ2V0cyBhcmUgYXZhaWxhYmxlLiBDaGVjayB0cnVzdGVkIGRldmljZXMgYW5kIGFwcHJvdmFscy4iKToic3VjY2VlZGVkIj09PW4uc3RhdHVzP2M9bCYmKGwuZmFpbGVkPjB8fGwudW5rbm93bj4wfHxsLnNraXBwZWQ+MCk/YSgi5om55qyh5bey57uT5p2f77yM5a2Y5Zyo5aSx6LSl44CB5b6F56Gu6K6k5oiW5pyq5omn6KGM55qE55uu5qCH77yM6K+35p+l55yL6YCQ55uY57uT5p6c44CCIiwiVGhlIGJhdGNoIGZpbmlzaGVkIHdpdGggZmFpbGVkLCB1bmtub3duIG9yIHNraXBwZWQgdGFyZ2V0cy4gUmV2aWV3IGVhY2ggZGlzayBiZWxvdy4iKTphKCLmibnmrKHph4fpm4blt7LlrozmiJDjgIIiLCJCYXRjaCBjb2xsZWN0aW9uIGNvbXBsZXRlZC4iKToiZmFpbGVkIj09PW4uc3RhdHVzJiYoYz1sJiZsLnRvdGFsPjA/YSgi5om55qyh5pyq5YWo6YOo5oiQ5Yqf77yM5a2Y5Zyo5aSx6LSl44CB5b6F56Gu6K6k5oiW5pyq5omn6KGM55qE55uu5qCH77yM6K+35p+l55yL6YCQ55uY57uT5p6c44CCIiwiVGhlIGJhdGNoIGRpZCBub3QgZnVsbHkgc3VjY2VlZC4gUmV2aWV3IGZhaWxlZCwgdW5rbm93biBvciBza2lwcGVkIHRhcmdldHMgYmVsb3cuIik6Syh7c3RhdHVzOiJmYWlsZWQiLGNvZGU6bi5jb2RlfSxlKSksdCgic2VjdGlvbiIse2NsYXNzTmFtZToicGstc21hcnQtZ2xvYmFsIiwiYXJpYS1sYWJlbCI6YSgi5YWo5bGA5omL5Yqo6YeH6ZuGIiwiR2xvYmFsIG1hbnVhbCBjb2xsZWN0aW9uIil9LHQoImg0IixudWxsLGEoIuWFqOWxgOaJi+WKqOmHh+mbhiIsIkdsb2JhbCBtYW51YWwgY29sbGVjdGlvbiIpKSx0KCJzZWN0aW9uIix7ImRhdGEtc21hcnQtY29tbWFuZC1kZWNsYXJhdGlvbiI6IiIsImRhdGEtc21hcnQtb3BlcmF0aW9uIjphZS5vcGVyYXRpb24sImRhdGEtc21hcnQtY2F0ZWdvcnkiOmFlLmNhdGVnb3J5LCJkYXRhLXNtYXJ0LWFyZ3VtZW50LXNvdXJjZSI6YWUuYXJndW1lbnRTb3VyY2UsImRhdGEtc21hcnQtZXhwYW5zaW9uIjphZS5leHBhbnNpb24sImFyaWEtbGFiZWwiOmEoIumHh+mbhuWRveS7pOWjsOaYjiIsIkNvbGxlY3Rpb24gY29tbWFuZCBkZWNsYXJhdGlvbiIpfSx0KCJoNSIsbnVsbCxhKCLlkb3ku6TojIPlvI/vvIjor7TmmI7vvIzkuI3nm7TmjqXmiafooYzvvIkiLCJDb21tYW5kIHRlbXBsYXRlIChub3QgZXhlY3V0YWJsZSBpbnB1dCkiKSksdCgicCIsbnVsbCx0KCJjb2RlIix7ImRhdGEtc21hcnQtY29tbWFuZC10ZW1wbGF0ZSI6IiIsc3R5bGU6e292ZXJmbG93V3JhcDoiYW55d2hlcmUifX0sYWUudGVtcGxhdGUpKSx0KCJwIixudWxsLGEoIuebruagh+exu+WIq++8mueJqeeQhuejgeebmO+8iGRpc2vvvInjgILlj4LmlbDmnaXmupDopoHmsYLvvJrnm67moIfkuLvmnLrnmoTmlrDpspzlupPlrZjvvJt2MueUseahhuaetuaMieaOiOadg+iMg+WbtOmAkOebmOWxleW8gOiuoeWIkuOAguaXp3Yx5LuF5L2/55So5Y6f5Y+v5L+h5pig5bCE77yM5LuN6ZyA5qC46aqM77yM5LiN6Ieq5Yqo6L+B56e75oiW5omp5aSn6IyD5Zu044CCIiwiVGFyZ2V0IGNhdGVnb3J5OiBwaHlzaWNhbCBkaXNrcyAoZGlzaykuIEFyZ3VtZW50IHNvdXJjZSByZXF1aXJlbWVudDogdGhlIHRhcmdldCBob3N04oCZcyBmcmVzaCBpbnZlbnRvcnkuIHYyIGV4cGFuZHMgYXV0aG9yaXplZCBwZXItZGlzayBwbGFucy4gTGVnYWN5IHYxIHJldGFpbnMgY29uZmlndXJlZCB0cnVzdGVkIG1hcHBpbmdzIGFuZCByZXF1aXJlcyB2ZXJpZmljYXRpb247IGl0IGlzIG5vdCBhdXRvbWF0aWNhbGx5IG1pZ3JhdGVkIG9yIHdpZGVuZWQuIikpLHQoInAiLG51bGwsYSgidjIgYWxs77ya55uu5qCH5Li75py65YWo6YOo5o6I5p2D54mp55CG55uY77ybY3VzdG9t77ya5LuF5piO56Gu6YCJ5oup55qE55uY77yM56m66ZuG5LiN5omn6KGM44CC6IyD5Zu055SxIFNTSCDov57mjqXorr7nva7mjqfliLbvvIzkuI3ot6jkuLvmnLrpgInnm5jjgIIiLCJ2MiBhbGwgY292ZXJzIGV2ZXJ5IGF1dGhvcml6ZWQgcGh5c2ljYWwgZGlzayBvbiB0aGUgdGFyZ2V0IGhvc3Q7IGN1c3RvbSBpbmNsdWRlcyBvbmx5IGV4cGxpY2l0bHkgc2VsZWN0ZWQgZGlza3MsIGFuZCBhbiBlbXB0eSBzZWxlY3Rpb24gZXhlY3V0ZXMgbm90aGluZy4gU1NIIGNvbm5lY3Rpb24gc2V0dGluZ3MgY29udHJvbCB0aGUgc2NvcGU7IGRpc2tzIGFyZSBuZXZlciBzZWxlY3RlZCBhY3Jvc3MgaG9zdHMuIikpLHQoInAiLG51bGwsYSgi5qih5p2/44CB5q2j5YiZ5oiW6YCa6YWN56ym5LiN6IO95L2c5Li65omn6KGM6L6T5YWl77yb5a6e6ZmF6Lev5b6E6aG76YCa6L+H5YaF572u55m95ZCN5Y2V44CB54mp55CG6Lqr5Lu95LiO5Lq65bel5a6h5om55qOA5p+l44CC5ZG95Luk5aOw5piO5LiO5bGV5byA5ZCO55qE6YCQ55uY6K6h5YiS5YiG5Yir5a6h6ZiF44CCIiwiVGVtcGxhdGVzLCByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCB3aWxkY2FyZHMgYXJlIG5vdCBleGVjdXRhYmxlIGlucHV0LiBBY3R1YWwgcGF0aHMgbXVzdCBwYXNzIHRoZSBidWlsdC1pbiBhbGxvd2xpc3QsIHBoeXNpY2FsIGlkZW50aXR5IGFuZCBhZG1pbmlzdHJhdG9yIGFwcHJvdmFsIGNoZWNrcy4gUmV2aWV3IHRoZSBkZWNsYXJhdGlvbiBzZXBhcmF0ZWx5IGZyb20gaXRzIGV4cGFuZGVkIHBlci1kaXNrIHBsYW5zLiIpKSksdCgicCIsbnVsbCxhKCLph4fpm4bmiYDmnInlt7LphY3nva7jgIHlt7Lnu5HlrprkuJTojrfmjojmnYPnmoTno4Hnm5jjgILmnKrphY3nva7miJbmnKrlrqHmoLjnmoTnm67moIfkuI3kvJrmiafooYzvvJvniannkIbnm5jkvqfmoI/ku43lj6/ljZXni6zph4fpm4bjgIIiLCJDb2xsZWN0IGFsbCBjb25maWd1cmVkLCBib3VuZCBhbmQgYXV0aG9yaXplZCBkaXNrcy4gVW5jb25maWd1cmVkIG9yIHVuYXBwcm92ZWQgdGFyZ2V0cyBhcmUgbm90IGV4ZWN1dGVkLiBJbmRpdmlkdWFsIGRpc2tzIGNhbiBzdGlsbCBiZSBjb2xsZWN0ZWQgZnJvbSB0aGVpciBzaWRlYmFyLiIpKSx0KCJwIixudWxsLGEoIueCueWHu+WNs+WPkei1t+S4gOasoemHh+mbhu+8jOS9v+eUqOacjeWKoeerr+W3suS/neWtmOeahOebruagh+S4juWuoeaguO+8m+aXoOmcgOS/neWtmOacrOmhteiuvue9ru+8jOacquS/neWtmOiNieeov+S4jeWPguS4jumHh+mbhuOAgiIsIkNsaWNrIHRvIHN0YXJ0IG9uZSBjb2xsZWN0aW9uIHVzaW5nIHNhdmVkIHNlcnZlciB0YXJnZXRzIGFuZCBhcHByb3ZhbHMuIE5vIHNldHRpbmdzIHNhdmUgaXMgbmVlZGVkOyB1bnNhdmVkIGRyYWZ0cyBhcmUgbm90IHVzZWQuIikpLHQoInAiLHtjbGFzc05hbWU6InBrLXNtYXJ0LW1ldGEifSxhKCLomZrmi5/nm5jnmoTmnKzlnLDmqKHmi5/npLrkvovkuI3orqHkuLrph4fpm4bmiJDlip/vvIzkuZ/kuI3kvJrlhpnlhaXnnJ/lrp7ljoblj7LjgIIiLCJMb2NhbCB2aXJ0dWFsIGRpc2sgZXhhbXBsZXMgZG8gbm90IGNvdW50IGFzIGNvbGxlY3RlZCBzYW1wbGVzIGFuZCBhcmUgbmV2ZXIgd3JpdHRlbiB0byBhY3R1YWwgaGlzdG9yeS4iKSksdCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiZGF0YS1zbWFydC1jb2xsZWN0LWFsbCI6IiIsZGlzYWJsZWQ6b3x8aXx8IXMsb25DbGljazpyfSxpP2EoIuWFqOWxgOmHh+mbhuS4reKApiIsIkNvbGxlY3RpbmcgYWxs4oCmIik6YSgi5YWo5bGA56uL5Y2z6YeH6ZuGIiwiQ29sbGVjdCBhbGwgbm93IikpLCFzJiZ0KCJwIix7cm9sZToic3RhdHVzIn0sYSgi5b2T5YmN5qGG5p625bCa5pyq5o+Q5L6b5YWo5bGA6YeH6ZuG77yM6K+36IGU57O7566h55CG5ZGY5pu05paw44CCIiwiR2xvYmFsIGNvbGxlY3Rpb24gaXMgdW5hdmFpbGFibGUgaW4gdGhpcyBmcmFtZXdvcmsuIEFzayBhbiBhZG1pbmlzdHJhdG9yIHRvIHVwZGF0ZSBpdC4iKSksYyYmdCgicCIse3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6InBvbGl0ZSJ9LGMpLGQuc29tZShlPT4iZmFpbGVkIj09PWUuc3RhdHVzJiZbIlNNQVJUX0NPTExFQ1RJT05fRkFJTEVEIiwiU01BUlRfRVhFQ1VUSU9OX1RJTUVPVVQiLCJTTUFSVF9PVVRQVVRfSU5WQUxJRCIsIlNNQVJUX0lOVkFMSURfREFUQSJdLmluY2x1ZGVzKGUuY29kZSkpJiZ0KCJwIix7Y2xhc3NOYW1lOiJway1zbWFydC1tZXRhIn0sWChlKSksbCYmdCgiZGwiLHtjbGFzc05hbWU6InBrLXNtYXJ0LWJhdGNoLXN1bW1hcnkiLHN0eWxlOntkaXNwbGF5OiJncmlkIixncmlkVGVtcGxhdGVDb2x1bW5zOiJyZXBlYXQoYXV0by1maXQsIG1pbm1heCg5MHB4LCAxZnIpKSIsZ2FwOiIxMnB4IixtYXJnaW46IjE2cHggMCJ9fSwuLi5bWyJ0b3RhbCIsYSgi55uu5qCH5oC75pWwIiwiVG90YWwgdGFyZ2V0cyIpXSwuLi5PYmplY3QuZW50cmllcyhpZSkubWFwKChbZSx0XSk9PltlLGEoLi4udCldKV0ubWFwKChbZSxuXSk9PnQoImRpdiIse2tleTplfSx0KCJkdCIsbnVsbCxuKSx0KCJkZCIse3N0eWxlOnttYXJnaW46IjRweCAwIDAiLGZvbnRTaXplOiIxOHB4Iixmb250V2VpZ2h0OjYwMH19LFN0cmluZyhzZShsW2VdKSkpKSkpLGQubGVuZ3RoPjAmJnQoImRpdiIse2NsYXNzTmFtZToicGstc21hcnQtc2Nyb2xsIn0sdCgidGFibGUiLHtjbGFzc05hbWU6InBrLXNtYXJ0LXRhYmxlIn0sdCgidGhlYWQiLG51bGwsdCgidHIiLG51bGwsLi4uW2EoIuejgeebmCIsIkRpc2siKSxhKCLph4fpm4bnirbmgIEiLCJDb2xsZWN0aW9uIHN0YXR1cyIpLGEoIuivtOaYjiIsIkRldGFpbHMiKV0ubWFwKGU9PnQoInRoIix7a2V5OmUsc2NvcGU6ImNvbCJ9LGUpKSkpLHQoInRib2R5IixudWxsLC4uLmQubWFwKChuLHIpPT50KCJ0ciIse2tleTpuLmtleXx8U3RyaW5nKHIpfSx0KCJ0ZCIsbnVsbCwic3RyaW5nIj09dHlwZW9mIG4ubGFiZWw/bi5sYWJlbC5zbGljZSgwLDIwMCk6YSgi5pyq55+l55uu5qCHIiwiVW5rbm93biB0YXJnZXQiKSksdCgidGQiLG51bGwsaWVbbi5zdGF0dXNdP2EoLi4uaWVbbi5zdGF0dXNdKTphKCLlvoXnoa7orqQiLCJVbmtub3duIikpLHQoInRkIixudWxsLG4uY29kZT9LKHtzdGF0dXM6InVua25vd24iPT09bi5zdGF0dXM/InVua25vd24iOiJmYWlsZWQiLGNvZGU6bi5jb2RlfSxlKToi4oCUIikpKSkpKSl9fShlKTtmdW5jdGlvbiBBKHtsb2NhbGU6dH0pe2NvbnN0W24scl09ZS51c2VTdGF0ZShjLnNuYXBzaG90KTtlLnVzZUVmZmVjdCgoKT0+Yy5zdWJzY3JpYmUociksW10pO2NvbnN0IG89bi5pdGVtcz8ubWFwKGU9Pih7Li4uZSxrZXk6ZS5kaXNrSWQsbGFiZWw6ZS5kaXNrSWR9KSk7cmV0dXJuIGwoXyx7bG9jYWxlOnQsc3RhdGU6ey4uLm4saXRlbXM6b30sZGlzYWJsZWQ6IW4uYWN0aXZlLG9uQ29sbGVjdDpuLmF2YWlsYWJsZT8oKT0+Yy5jb2xsZWN0KCk6dm9pZCAwfSl9cmV0dXJue2lkOm4sc3RvcmU6ZCxTZXR0aW5nczpmdW5jdGlvbih7cHJlZmVyZW5jZXM6dCxsb2NhbGU6bn0pe2NvbnN0IHI9KGUsdCk9PlcobixlLHQpO3JldHVybiBsKGUuRnJhZ21lbnQsbnVsbCxsKCJoMyIsbnVsbCxyKCLno4Hnm5jlgaXlurflsZXnpLoiLCJEaXNrIFNNQVJUIGluZm9ybWF0aW9uIikpLGwoInAiLG51bGwscigi5Zyo54mp55CG55uY6K+m5oOF5L6n5qCP5bGV56S6IFNNQVJUIOaVsOaNruOAgeWOhuWPsumHh+agt+WSjOaMh+agh+WKo+WMluOAgiIsIkRpc3BsYXkgU01BUlQgZGF0YSwgaGlzdG9yaWNhbCBzYW1wbGVzIGFuZCBtZXRyaWMgZGV0ZXJpb3JhdGlvbiBpbiBwaHlzaWNhbCBkaXNrIGRldGFpbHMuIikpLGwoImRpdiIse2NsYXNzTmFtZToiYzg5LXNldHRpbmcifSxsKCJkaXYiLHtjbGFzc05hbWU6ImM4OS1zZXR0aW5nLXJvdyJ9LGwoImxhYmVsIix7aHRtbEZvcjoicGstc21hcnQtZW5hYmxlZCJ9LHIoIuaYvuekuiBTbWFydCDkv6Hmga/lrZDpobUiLCJTaG93IFNNQVJUIGluZm9ybWF0aW9uIHRhYiIpKSxsKCJpbnB1dCIse2lkOiJway1zbWFydC1lbmFibGVkIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDp0LmVuYWJsZWQsb25DaGFuZ2U6ZT0+ZC51cGRhdGUoe2VuYWJsZWQ6ZS50YXJnZXQuY2hlY2tlZH0pfSkpKSxsKCJwIix7cm9sZToic3RhdHVzIn0scigi5q+P5pel6YeH6ZuG5LiO4oCc56uL5Y2z6YeH6ZuG4oCd5Z2H6ZyA6KaB5Y+v5L+h6K6+5aSH6YWN572u5ZKM54us56uL5Lq65bel5a6h5qC444CC4oCc6YeN5paw6K+75Y+W4oCd5Y+q5Yi35paw5bey5pyJ6YeH5qC377yb56a75byA5L6n5qCP5Y+q5YGc5q2i6aG16Z2i562J5b6F77yM5ZCO5Y+w5Lu75Yqh5Y+v6IO957un57ut44CC55yf5a6e5Li75py66YeH6ZuG5bCa5pyq6aqM5pS244CCIiwiRGFpbHkgY29sbGVjdGlvbiBhbmQgQ29sbGVjdCBub3cgcmVxdWlyZSB0cnVzdGVkIGRldmljZSBjb25maWd1cmF0aW9uIGFuZCBleHBsaWNpdCBhZG1pbmlzdHJhdG9yIGFwcHJvdmFsLiBSZWxvYWQgb25seSByZWFkcyBleGlzdGluZyBzYW1wbGVzLiBMZWF2aW5nIHRoZSBzaWRlYmFyIHN0b3BzIHdhaXRpbmc7IGEgYmFja2dyb3VuZCB0YXNrIG1heSBjb250aW51ZS4gTGl2ZSBob3N0IGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGFjY2VwdGVkLiIpKSxsKEEse2xvY2FsZTpufSksbCgicCIsbnVsbCxyKCLlip/og73phY3nva7lpI3nlKjmoYbmnrbnmoTkv53lrZjjgIHkuKLlvIPlkozpgIDlh7rmtYHnqIvvvJvlhbPpl63mnKzpobXmmL7npLrkuI3kvJrliKDpmaTljoblj7LorrDlvZXjgIIiLCJTZXR0aW5ncyB1c2UgdGhlIGZyYW1ld29yayBzYXZlLCBkaXNjYXJkIGFuZCBleGl0IGZsb3cuIEhpZGluZyB0aGUgdGFiIGRvZXMgbm90IGRlbGV0ZSBoaXN0b3JpY2FsIHJlY29yZHMuIikpKX0sYWN0aXZhdGUoKXtjLnN0YXJ0KCk7Y29uc3QgZT1vZSh7d2luOnQsc3RvcmU6ZCxnZXRMb2NhbGU6cyxwcm92aWRlcjpvLmRpc2tTbWFydEluZm8/LnByb3ZpZGVyLGZpbmREZXRhaWw6by5kaXNrU21hcnRJbmZvPy5maW5kRGV0YWlsfSksbj10LnNldEludGVydmFsKCgpPT57ZC5zdGF0dXMoKS5kaXJ0eXx8InZpc2libGUiIT09dC5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGV8fGQubG9hZCgpfSwxNWUzKTtyZXR1cm4oKT0+e2Muc3RvcCgpLHQuY2xlYXJJbnRlcnZhbChuKSxlKCl9fX19KHdpbmRvdy5SaXZldGluUGx1Z2lucz13aW5kb3cuUml2ZXRpblBsdWdpbnN8fHt9KVsicml2ZXRpbi1kaXNrLXNtYXJ0LWluZm8iXT10fSkoKTs="},{"path":"LICENSE","sha256":"684bcbdab63a2fef35293d3a36b13e01a755dff694c18f0aa8367710c36e4d22","data":"TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAyNiBQbHVnaW5LaXQgY29udHJpYnV0b3JzCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo="}]}