FC2-PPV-1118049 独占販売【無/個撮】ゴム着用経験なし!おぼこ娘に見えて実はユル~いヤリマン娘だったミウちゃん(21)と当たり前のように生ハメ中出しSEX! ※レビュー特典高画質zip有

识别码: FC2-PPV-1118049

发行时间: 2019-07-04

长度: 58分钟

制作商:

FC2-PPV

系列:

下心俊介

类别:

素人内射美乳搭讪骑乘位

推荐

W3siaWQiOiJidHNfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjEiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxhIGhyZWY9XCJodHRwczpcL1wvYnRzby5wd1wvdmlkZW9cLyVFNyU4QiVBQyVFNSU4RCVBMCVFOCVCMiVBOSVFNSVBMyVCMiVFMyU4MCU5MCVFNyU4NCVBMSUyRiVFNSU4MCU4QiVFNiU5MiVBRSVFMyU4MCU5MSVFMyU4MiVCNCVFMyU4MyVBMCVFNyU5RCU4MCVFNyU5NCVBOCVFNyVCNSU4QyVFOSVBOCU5MyVFMyU4MSVBQSVFMyU4MSU5NyVFRiVCQyU4MSVFMyU4MSU4QSVFMyU4MSVCQyVFMyU4MSU5MyVFNSVBOCU5OCVFMyU4MSVBQiVFOCVBNiU4QiVFMyU4MSU4OCVFMyU4MSVBNiVFNSVBRSU5RiVFMyU4MSVBRiVFMyU4MyVBNiVFMyU4MyVBQiVFRiVCRCU5RSVFMyU4MSU4NCVFMyU4MyVBNCVFMyU4MyVBQSVFMyU4MyU5RSVFMyU4MyVCMyVFNSVBOCU5OCVFMyU4MSVBMCVFMyU4MSVBMyVFMyU4MSU5RiVFMyU4MyU5RiVFMyU4MiVBNiVFMyU4MSVBMSVFMyU4MiU4MyVFMyU4MiU5MyVFRiVCQyU4ODIxJUVGJUJDJTg5JUUzJTgxJUE4JUU1JUJEJTkzJUUzJTgxJTlGJUUzJTgyJThBJUU1JTg5JThEJUUzJTgxJUFFJUUzJTgyJTg4JUUzJTgxJTg2JUUzJTgxJUFCJUU3JTk0JTlGJUUzJTgzJThGJUUzJTgzJUExJUU0JUI4JUFEJUU1JTg3JUJBJUUzJTgxJTk3U0VYJUVGJUJDJTgxJUUzJTgwJTgwJUUyJTgwJUJCJUUzJTgzJUFDJUUzJTgzJTkzJUUzJTgzJUE1JUUzJTgzJUJDJUU3JTg5JUI5JUU1JTg1JUI4JUU5JUFCJTk4JUU3JTk0JUJCJUU4JUIzJUFBemlwJUU2JTlDJTg5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGltZyBzcmM9XCJcL2FwcFwvYnRzXC9WaWV3XC9pbWdcL3AzMDAxMDAucG5nXCI+PFwvYT4ifSx7ImlkIjoiZXhvY19qX01fMzAweDEwMCIsImFkc3BvdCI6ImpfTV8zMDB4MTAwIiwid2VpZ2h0IjoiMyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCBhc3luYyB0eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczpcL1wvYS5tYWdzcnYuY29tXC9hZC1wcm92aWRlci5qc1wiPjxcL3NjcmlwdD4gXHJcbiA8aW5zIGNsYXNzPVwiZWFzNmE5Nzg4OGUxMFwiIGRhdGEtem9uZWlkPVwiNTY2NTY1NFwiPjxcL2lucz4gXHJcbiA8c2NyaXB0PihBZFByb3ZpZGVyID0gd2luZG93LkFkUHJvdmlkZXIgfHwgW10pLnB1c2goe1wic2VydmVcIjoge319KTs8XC9zY3JpcHQ+In0seyJpZCI6Imphdl9qX01fMzAweDEwMCIsImFkc3BvdCI6ImpfTV8zMDB4MTAwIiwid2VpZ2h0IjoiMiIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPGEgaHJlZj1cImh0dHBzOlwvXC90ZWxsbWUucHdcL2dvXC9qYXZcIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cIlwvYXBwXC9qYXZcL1ZpZXdcL2ltZ1wvYmFubmVyLjYwMHgxMDAuanBnXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCI1MFwiPjxcL2E+In0seyJpZCI6Imp1aWNfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjUiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxpZnJhbWUgYm9yZGVyPTAgZnJhbWVib3JkZXI9MCBtYXJnaW5oZWlnaHQ9MCBtYXJnaW53aWR0aD0wIHdpZHRoPTMwMCBoZWlnaHQ9MTAwIHNjcm9sbGluZz1ubyBhbGxvd3RyYW5zcGFyZW5jeT10cnVlIHNyYz1cL1wvYWRzZXJ2ZXIuanVpY3lhZHMuY29tXC9hZHNob3cucGhwP2Fkem9uZT00NTE3NDA+PFwvaWZyYW1lPiJ9LHsiaWQiOiJ3YXZfal9NXzMwMHgxMDAiLCJhZHNwb3QiOiJqX01fMzAweDEwMCIsIndlaWdodCI6IjIiLCJmY2FwIjpmYWxzZSwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxhIGhyZWY9XCJodHRwczpcL1wvYXZ4by5jbHViXC9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cIlwvYXBwXC93YXZcL1ZpZXdcL2ltZ1wvYmFubmVyLjYwMHgxMDAuanBnXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCI1MFwiPjxcL2E+In1d

推荐

W3siaWQiOiJleG9jX2pfTV8zMDB4MjUwIiwiYWRzcG90Ijoial9NXzMwMHgyNTAiLCJ3ZWlnaHQiOiIyIiwiZmNhcCI6ZmFsc2UsInNjaGVkdWxlIjpmYWxzZSwibWF4V2lkdGgiOiI3NjgiLCJtaW5XaWR0aCI6ZmFsc2UsInRpbWV6b25lIjpmYWxzZSwiZXhjbHVkZSI6ZmFsc2UsImRvbWFpbiI6ZmFsc2UsImNvZGUiOiI8c2NyaXB0IGFzeW5jIHR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOlwvXC9hLm1hZ3Nydi5jb21cL2FkLXByb3ZpZGVyLmpzXCI+PFwvc2NyaXB0PiBcclxuIDxpbnMgY2xhc3M9XCJlYXM2YTk3ODg4ZTEwXCIgZGF0YS16b25laWQ9XCI1NjY1NjU2XCI+PFwvaW5zPiBcclxuIDxzY3JpcHQ+KEFkUHJvdmlkZXIgPSB3aW5kb3cuQWRQcm92aWRlciB8fCBbXSkucHVzaCh7XCJzZXJ2ZVwiOiB7fX0pOzxcL3NjcmlwdD4ifSx7ImlkIjoianVpY19qX01fMzAweDI1MCIsImFkc3BvdCI6ImpfTV8zMDB4MjUwIiwid2VpZ2h0IjoiMyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPGlmcmFtZSBib3JkZXI9MCBmcmFtZWJvcmRlcj0wIG1hcmdpbmhlaWdodD0wIG1hcmdpbndpZHRoPTAgd2lkdGg9MzA4IGhlaWdodD0yNTggc2Nyb2xsaW5nPW5vIGFsbG93dHJhbnNwYXJlbmN5PXRydWUgc3JjPVwvXC9hZHNlcnZlci5qdWljeWFkcy5jb21cL2Fkc2hvdy5waHA/YWR6b25lPTM2Mjc4MT48XC9pZnJhbWU+In1d
W3siaWQiOiJjbGljX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjpmYWxzZSwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCB0eXBlPVwidGV4dFwvamF2YXNjcmlwdFwiPiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2NvbnN0IHQ9XCJ6X2ZsZ2RhYmNwb2tyaW5ldXRtLlwvc1wiLGU9dFs0XSxuPXRbNl0sbz10WzddLHI9dFs4XSxzPXRbMTRdLGk9dFs1XSxjPXRbMTVdLGE9dFsxNl0sbD10WzEzXSx1PXRbMTBdLGg9dFsxMl0sZD10WzldLGc9dFsxN10sbT10WzE4XSxmPXRbMl0scD10WzNdLHc9dFswXSxiPXRbMV0sJD10WzIwXSx2PSguLi50KT0+dC5qb2luKFwiXCIpLEk9dihyLHApLFM9dihuLG8pLHk9dihpLGMsbyxhLGUpLEU9dihsLHMsZCxuLGUsYyksaz12KG8sbixzLHMsYyxoKSx4PXYoYixJLGIsUyxiLHksYiksaj12KGIsYiksQz12KHcsZixlLHAsdSxuLGksYyxpKSxOPXsyOnYoQyxkLHUsZCx0WzE2XSxkKSw5OnYoQyxrKSwxMDp2KEMsRSl9LE89dih3LGYsZSxyLHUsaSxjLHAsdSxuLGksYyxpKSxSPXsyOnYoTyx1LHMsSSxsLHIsdFsxMV0pLDk6dihPLGspLDEwOnYoTyxFKX0sXz12KHgsZyxsLG0sYyksQT12KHgsaSx1LG0sbixsLHMpLEQ9dihqLHIscyxlLGYsZSksVD12KGoscixzLGUsZixlLGosaSksTT12KEQsaixTKSxVPXYoRCxqLGMsYSksQj12KHRbMjFdLHIsaCxsLGQsZyksSj12KHRbMTldLHIsdSxtLCQpLFc9digkLGMscyksej12KGwsaSksVj12KGoscixzLGUsZixlLGosaCksSD1bXCJvb1wiLFwia2tcIixcImFhYVwiLFwiampqXCIsXCJmZXdoXCIsXCJhYXNoXCIsXCJxd2Rod1wiLFwid2Vnd2dzXCIsXCJoa2lpdXlyXCIsXCJuZmdyc3RkaFwiXSxLPTM2ZTUsUD0odCxlKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihlLXQrMSkpK3Q7ZnVuY3Rpb24gUSh0LGU9d2luZG93LG49ITEpe2xldCBvO3RyeXtpZihvPWVbdF0sIW8pcmV0dXJuITE7Y29uc3Qgbj1cIl9fc3RvcmFnZV90ZXN0X19cIjtyZXR1cm4gby5zZXRJdGVtKG4sbiksby5nZXRJdGVtKG4pLG8ucmVtb3ZlSXRlbShuKSwhMH1jYXRjaCh0KXtyZXR1cm4gQm9vbGVhbighbiYmZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigyMj09PXQuY29kZXx8MTAxND09PXQuY29kZXx8XCJRdW90YUV4Y2VlZGVkRXJyb3JcIj09PXQubmFtZXx8XCJOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRFwiPT09dC5uYW1lKX0odCkmJm8mJm8ubGVuZ3RoPjApfX1jb25zdCBxPXQ9PntpZihcIlwiPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJLZXkgY2Fubm90IGJlIGVtcHR5XCIpfTtjbGFzcyBGe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmFnZT10fWdldEl0ZW0odCl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHQpfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMuc3RvcmFnZS5zZXRJdGVtKHQsZSl9cmVtb3ZlSXRlbSh0KXt0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19Y2xhc3MgTHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmRvYz10fWdldEl0ZW0odCl7Y29uc3QgZT1uZXcgUmVnRXhwKFwiKD86Xnw7IClcIit0LnJlcGxhY2UoXC8oW1xcLiQ/Knx7fVxcKFxcKVxcW1xcXVxcXFxcXFwvXFwrXl0pXC9nLFwiXFxcXCQxXCIpK1wiPShbXlwvO1wvXSopXCIpLmV4ZWModGhpcy5kb2MuY29va2llKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVsxXSk6bnVsbH1zZXRJdGVtKHQsZSl7cSh0KSx0aGlzLmRvYy5jb29raWU9YCR7dH09JHtlbmNvZGVVUklDb21wb25lbnQoZSl9OyBtYXgtYWdlPTM0NDcwMDAwOyBwYXRoPVwvO2B9cmVtb3ZlSXRlbSh0KXt0aGlzLmRvYy5jb29raWU9YCR7dH09MDsgbWF4LWFnZT0tMTsgcGF0aD1cLztgfX1jbGFzcyBHe2NvbnN0cnVjdG9yKHQpe3RoaXMud2luPXR9Z2V0SXRlbSh0KXtjb25zdCBlPXRoaXMud2luW3RdO3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlP0pTT04uc3RyaW5naWZ5KGUpOnZvaWQgMCE9PWU/ZTpudWxsfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMud2luW3RdPWV9cmVtb3ZlSXRlbSh0KXtkZWxldGUgdGhpcy53aW5bdF19fXZhciBYLFk7KHQ9Pntjb25zdCBlPVtuZXcgRyh0KV0sbj1cIm9uY29udGV4dHN0b3JlXCI7bGV0IG87UShcImxvY2FsU3RvcmFnZVwiLHQpJiZlLnB1c2gobmV3IEYodC5sb2NhbFN0b3JhZ2UpKSxRKFwic2Vzc2lvblN0b3JhZ2VcIix0KSYmZS5wdXNoKG5ldyBGKHQuc2Vzc2lvblN0b3JhZ2UpKSxmdW5jdGlvbih0PXdpbmRvdyl7dHJ5e3JldHVybiB0LmRvY3VtZW50LmNvb2tpZSx0Lm5hdmlnYXRvci5jb29raWVFbmFibGVkfWNhdGNoKHQpe3JldHVybiExfX0odCkmJmUucHVzaChuZXcgTCh0LmRvY3VtZW50KSl9KSh3aW5kb3cpLGZ1bmN0aW9uKHQpe3QuU0VVPVwic2V1XCIsdC5TTkM9XCJzbmNcIix0LlNTVD1cInNzdFwiLHQuU0tBPVwic2thXCJ9KFh8fChYPXt9KSksXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCIuc3BsaXQoXCJcIiksZnVuY3Rpb24odCl7dC5Wb2NhYnVsYXJ5PVwidHBtbWh2MThcIix0LldlaWdodHM9XCJ0cG1taHcxOFwifShZfHwoWT17fSkpO1kuVm9jYWJ1bGFyeSxZLldlaWdodHM7Y29uc3QgWj10PT57Y29uc3RbZV09dC5zcGxpdChcIlwvXC9cIik7bGV0W24sbyxyXT1mdW5jdGlvbih0LGUpe2xldFtuLG8sLi4ucl09dC5zcGxpdChlKTtyZXR1cm4gbz1bbywuLi5yXS5qb2luKGUpLFtuLG8sQm9vbGVhbihyLmxlbmd0aCldfSh0LFwiP1wiKTt2YXIgcztyJiZmdW5jdGlvbih0LGUsbil7dHJ5e3JldHVybiB0KCl9Y2F0Y2godCl7aWYoZSlyZXR1cm4gZSh0KX19KCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlRoZSBVUkwgY29udGFpbnMgdW5lbmNvZGVkIGNoYXJhY3RlcnMuXCIpfSksXCJmdW5jdGlvblwiPT10eXBlb2YgaGFuZGxlRXhjZXB0aW9uP3Q9PntoYW5kbGVFeGNlcHRpb24odCl9OnMpO2NvbnN0W2ksLi4uY109bi5yZXBsYWNlKFwvXmh0dHBzPzpcXFwvXFxcL1wvLFwiXCIpLnNwbGl0KFwiXC9cIik7cmV0dXJue3Byb3RvY29sOmUsb3JpZ2luOm4sZG9tYWluOmkscGF0aDpjLmpvaW4oXCJcL1wiKSxzZWFyY2g6b319LHR0PSgpPT57Y29uc3QgdD1IW1AoMCxILmxlbmd0aC0xKV0sZT0hUCgwLDEpPyh0PT57bGV0IGU9XCJcIjtmb3IobGV0IG49MDtuPHQ7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoUCg5NywxMjIpKTtyZXR1cm4gZX0pKFAoMiw2KSk6UCgxLDk5OTk5OSk7cmV0dXJuYCR7dH09JHtlfWB9LGV0PSh0LGUsbik9Pntjb25zdCBvPSgodCxlKT0+KGUrdCkuc3BsaXQoXCJcIikucmVkdWNlKCgodCxlKT0+MzEqdCtlLmNoYXJDb2RlQXQoMCkmMzM1NTQ0MzEpLDE5KSkodCxlKSxyPSh0PT57bGV0IGU9dCU3MTM4NztyZXR1cm4oKT0+ZT0oMjMyNTEqZSsxMjM0NSklNzEzODd9KShvKTtyZXR1cm4gbi5zcGxpdChcIlwiKS5tYXAoKHQ9PigodCxlKT0+e2NvbnN0IG49dC5jaGFyQ29kZUF0KDApLG89bjw5N3x8bj4xMjI/bjo5Nysobi05NytlKCkpJTI2LHI9U3RyaW5nLmZyb21DaGFyQ29kZShvKTtyZXR1cm5cImlcIj09PXI/citcImlcIjpyfSkodCxyKSkpLmpvaW4oXCJcIil9LG50PSh0LGUpPT57dD10LnJlcGxhY2UoYD8ke3p9PSR7ZX0mYCxcIj9cIikucmVwbGFjZShgPyR7en09JHtlfWAsXCI/XCIpLnJlcGxhY2UoYCYke3p9PSR7ZX1gLFwiXCIpO2xldHtkb21haW46bixzZWFyY2g6byxvcmlnaW46cn09Wih0KSxzPW8/by5zcGxpdChcIiZcIik6W107Y29uc3QgaT1zLmxlbmd0aD40P1swLDJdOls1LDldO3MucHVzaCguLi4oKHQsZSk9Pntjb25zdCBuPVtdLG89UCh0LGUpO2ZvcihsZXQgdD0wO3Q8bzt0Kyspbi5wdXNoKHR0KCkpO3JldHVybiBufSkoLi4uaSkpLHM9KHQ9Pntjb25zdCBlPVsuLi50XTtsZXQgbj1lLmxlbmd0aDtmb3IoOzAhPT1uOyl7Y29uc3QgdD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7bi0tLFtlW25dLGVbdF1dPVtlW3RdLGVbbl1dfXJldHVybiBlfSkocyk7Y29uc3QgYz1ldChlLG4scy5qb2luKFwiJlwiKSksYT1QKDAscy5sZW5ndGgpLGw9Yy5zcGxpdChcIiZcIik7cmV0dXJuIGwuc3BsaWNlKGEsMCxgaWQ9JHtlfWApLHIucmVwbGFjZShuLG4rVykrXCI/XCIrbC5qb2luKFwiJlwiKX0sb3Q9dD0+KHQ9PnQ+PTE3MzEyNzZlNiYmdDw9MTczMTc5NDRlNXx8dD49MTczMjQ4NTZlNSYmdDw9MTczMzAwNGU2KSh0KT9QKHQtSyx0K0spOnQscnQ9dD0+e2NvbnN0IGU9bmV3IFJlZ0V4cChfK1wiPShcXFxcZCspKHIpP1wiKS5leGVjKHQubG9jYXRpb24uaHJlZiksbj1lJiZlWzFdJiYrZVsxXTtyZXR1cm4gbiYmIWlzTmFOKG4pPyhudWxsPT1lP3ZvaWQgMDplWzJdKT9vdChuKTpuOm90KERhdGUubm93KCkpfSxzdD1cImNsYWJkZnJcIjtmdW5jdGlvbiBpdCh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz10W25dOyhmdW5jdGlvbih0KXtjb25zdCBlPW51bGw9PXQ/dm9pZCAwOnRbMF0sbj1udWxsPT10P3ZvaWQgMDp0WzFdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUobikmJm4+RGF0ZS5ub3coKX0pKG8pJiYoZVtuXT1vKX0pKSxlfWNvbnN0IGN0PSgoKT0+e3ZhciB0O2NvbnN0W2Usbl09ZnVuY3Rpb24oKXtpZihRKFwibG9jYWxTdG9yYWdlXCIpKXtjb25zdCB0PXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdCk7cmV0dXJuW3Q/SlNPTi5wYXJzZSh0KTpudWxsLCExXX1yZXR1cm5bbnVsbCwhMF19KCksbz1udWxsIT09KHQ9aXQoZSkpJiZ2b2lkIDAhPT10P3Q6e307cmV0dXJuIG58fHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdCxKU09OLnN0cmluZ2lmeShvKSkse2dldDp0PT5vW3RdLHNldDoodCxlLHIpPT57Y29uc3Qgcz1bZSxEYXRlLm5vdygpKzFlMypyXTtvW3RdPXMsbnx8d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0LEpTT04uc3RyaW5naWZ5KG8pKX19fSkoKTtjb25zdCBhdD1bMSwzLDYsNSw4LDksMTAsMTEsMTIsMTMsMTRdO2xldCBsdDtjb25zdCB1dD1VaW50OEFycmF5O2xldCBodDtjbGFzcyBkdHtjb25zdHJ1Y3Rvcih0LGUsbixvLHIscyl7dGhpcy5pZD1lLHRoaXMudD1uLHRoaXMuYjZkPW8sdGhpcy52ZXI9cix0aGlzLmZidj1zLHRoaXMudG1yPW51bGwsdGhpcy5nZD10PT5odC53dS50aGVuKChlPT5lLnVybChodC5nZmNvKHQpKSkpLHRoaXMuYjZhYj10PT51dC5mcm9tKGF0b2IodCksKHQ9PnQuY2hhckNvZGVBdCgwKSkpLHRoaXMuZ2N1az0oKT0+YCR7aHQuaWR9JHtEfWAsdGhpcy5nZnU9dD0+YCR7ZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBSZWdFeHAoQStcIj0oW2EtejAtOS4tXSspJj9cIikuZXhlYyh0LmxvY2F0aW9uLmhyZWYpLG89biYmblsxXT9uWzFdOm51bGw7cmV0dXJuIGUmJm8/ZS5yZXBsYWNlKEosYC0ke299XC9gKTplfHxvfShsdCx0KX0/aWQ9JHtodC5pZH1gLHRoaXMuc2FzdD10PT4wIT09TnVtYmVyKHQpLGh0PXRoaXMsbHQ9dCx0aGlzLnd1PWh0Lml3YSgpLGx0W3RoaXMuaWQrVl09dGhpcy5pbnMoKSxodC5jY2x0KCksbHRbaHQuaWQrVV09bnR9aW4oKXt0aGlzLnNhc3QoaHQudCkmJiEwIT09bHRbUltodC50XV0mJihodC50bXImJmNsZWFyVGltZW91dChodC50bXIpLGh0LmFzdCgpKX1pbnMoKXtsdFt0aGlzLmdjZGsoKV09e307Y29uc3QgdD1hdC5tYXAoKHQ9Pmh0LmdkKHQpLnRoZW4oKGU9PihsdFtodC5nY2RrKCldW3RdPWUsZSkpKSkpO3JldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKCh0PT4obHRbaHQuZ2N1aygpXT10LCEwKSkpfWNjbHQoKXtodC5zYXN0KGh0LnQpJiYodGhpcy50bXI9bHQuc2V0VGltZW91dCgoKCk9PiFsdFtOW2h0LnRdXSYmaHQuYXN0KCkpLDVlMykpfWdmY28odCl7Y29uc3R7bmF2aWdhdG9yOmV9PWx0LG49ZT9lLnVzZXJBZ2VudDpcIlwiLG89bHQubG9jYXRpb24uaG9zdG5hbWV8fFwiXCI7cmV0dXJuW2x0LmlubmVySGVpZ2h0LGx0LmlubmVyV2lkdGgsbHQuc2Vzc2lvblN0b3JhZ2U/MTowLHJ0KGx0KSwwLHQsby5zbGljZSgwLDEwMCksbi5zbGljZSgwLDE1KV0uam9pbihcIixcIil9YXN0KCl7aHQuc2FzdChodC50KSYmaHQuZ2QoaHQudCkudGhlbigodD0+e2x0W2h0LmlkK01dPWh0LnZlcjtjb25zdCBlPWx0LmRvY3VtZW50LG49ZS5jcmVhdGVFbGVtZW50KEIpLFtvXT1mdW5jdGlvbih0LGUpe2NvbnN0e2RvbWFpbjpuLHBhdGg6byxzZWFyY2g6cn09Wih0KSxzPWN0LmdldChuKTtyZXR1cm4gcz9bYCR7aT1zWzBdLChcL2h0dHBzPzpcXFwvXFxcL1wvLnRlc3QoaSk/XCJcIjpcImh0dHBzOlwvXC9cIikraX1cLyR7b30/JHtyfWAsITFdOlt0LCExXTt2YXIgaX0oaHQuZ2Z1KHQpKTtuLnNyYz1udChvLGh0LmlkKSxlLmhlYWQuYXBwZW5kQ2hpbGQobil9KSl9aXdhKCl7Y29uc3QgdD1XZWJBc3NlbWJseSxlPXQmJnQuaW5zdGFudGlhdGU7cmV0dXJuIGU/ZShodC5iNmFiKGh0LmI2ZCkse30pLnRoZW4oKCh7aW5zdGFuY2U6e2V4cG9ydHM6dH19KT0+e2NvbnN0IGU9dC5tZW1vcnksbj10LnVybCxvPW5ldyBUZXh0RW5jb2RlcixyPW5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpO3JldHVybnt1cmw6dD0+e2NvbnN0IHM9by5lbmNvZGUodCksaT1uZXcgdXQoZS5idWZmZXIsMCxzLmxlbmd0aCk7aS5zZXQocyk7Y29uc3QgYz1pLmJ5dGVPZmZzZXQrcy5sZW5ndGgsYT1uKGkscy5sZW5ndGgsYyksbD1uZXcgdXQoZS5idWZmZXIsYyxhKTtyZXR1cm4gci5kZWNvZGUobCl9fX0pKTpQcm9taXNlLnJlc29sdmUodm9pZCAwKX1nY2RrKCl7cmV0dXJuYCR7dGhpcy5pZH0ke1R9YH19IWZ1bmN0aW9uKHQsZSxuLG8scixzKXtjb25zdCBpPW5ldyBkdCh3aW5kb3csXCIyMDQ3NDcyXCIsXCIyXCIsXCJBR0Z6YlFFQUFBQUJIQVZnQUFGXC9ZQU5cL2YzOEJmMkFEZjM5XC9BWDVnQVg4QVlBRlwvQVg4RENRZ0FBUUlCQUFNRUFBUUZBWEFCQVFFRkJnRUJnQUtBQWdZSkFYOEJRY0NJd0FJTEIyY0hCbTFsYlc5eWVRSUFBM1Z5YkFBREdWOWZhVzVrYVhKbFkzUmZablZ1WTNScGIyNWZkR0ZpYkdVQkFCQmZYMlZ5Y201dlgyeHZZMkYwYVc5dUFBY0pjM1JoWTJ0VFlYWmxBQVFNYzNSaFkydFNaWE4wYjNKbEFBVUtjM1JoWTJ0QmJHeHZZd0FHQ29jR0NDRUJBWDlCdUFoQnVBZ29BZ0JCRTJ4Qm9SeHFRWWZDMXk5d0lnQTJBZ0FnQUF1VEFRRUZmeEFBSUFFZ0FHdEJBV3B3SUFCcUlnUUVRRUVBSVFCQkF5RUJBMEFnQVVFRElBQkJBM0FpQnhzaEFSQUFJZ1pCRkhCQmtBaHFMUUFBSVFNQ2Z5QUZRUUFnQnh0RkJFQkJBQ0FHSUFGd0RRRWFJQVpCQm5CQmdBaHFMUUFBSVFNTFFRRUxJUVVnQUNBQ2FpQURRYXdJTFFBQWF6b0FBQ0FCUVFGcklRRWdBRUVCYWlJQUlBUkpEUUFMQ3lBQ0lBUnFDM0VDQTM4Q2ZnSkFJQUZCQUV3TkFBTkFJQVJCQVdvaEF5QUNJQVVnQUNBRWFpMEFBRUVzUm1vaUJVWUVRQ0FCSUFOTURRSURRQ0FBSUFOcU1BQUFJZ2RDTEZFTkF5QUdRZ3ArSUFkOFFqQjlJUVlnQTBFQmFpSURJQUZIRFFBTERBSUxJQU1oQkNBQklBTktEUUFMQ3lBR0M3Z0RBZ04rQjM4Z0FDQUJRUU1RQWlFRElBQWdBVUVGRUFJaEJVRzRDQ0FEUWJBSUtRTUFJZ1FnQXlBRVZCdEJxQWdvQWdBaUFFRXlhaUlCSUFGc1FlZ0hiSzJBSWdRZ0FFRU9haUlLSUFCQkJHc2dBMEtBZ1BIdHh6QlVJZ3NicllDbklBTkNcLzRcL01wXC9ZeFZrRVdkSEkyQWdBUUFCb1FBQm9nQWtMbzZOR0R0ODdPbHk4M0FBQkJCMEVLUVFnZ0EwS0EwTVdYZ3pKVUd5QURRb0NXb3AzbE1GUWlCaHRCQzBFTUlBWWJJQUpCQ0dvUUFTRUFFQUFhSXdCQkVHc2lBU1FBSUFCQkxqb0FBQ0FCUWVQZXRRTTJBZ3dnQUVFQmFpRUhRUUFoQUNBQlFReHFJZ3d0QUFBaUNBUkFBMEFnQUNBSGFpQUlPZ0FBSUF3Z0FFRUJhaUlBYWkwQUFDSUlEUUFMQ3lBQlFSQnFKQUFnQUNBSGFpRUJRYmdJSUFRZ0NxMkFJQVZDRzRaQ0FFS0FnSUFnUW9DQWdEQkNnSUNBQ0VLQWdJQVlJQVZDQ0ZFYlFvQ0FnQkpDZ0lEQURTQURRb0NJbDlxc01sUWJJQU5DZ0pETXBcL1l4VkJzZ0EwS0FtTWF1enpGVUd5QUdHeUFMRzRTRVBnSUFFQUFhUVFKQkJCQUFRUU53SWdBYklRWURRQ0FCUVM4NkFBQWdBQ0FKUmlFSElBWkJCU0FCUVFGcUVBRWhBU0FKUVFGcUlRa2dCMFVOQUFzZ0FTQUNhd3NFQUNNQUN3WUFJQUFrQUFzUUFDTUFJQUJyUVhCeElnQWtBQ0FBQ3dVQVFid0lDd3M3QXdCQmdBZ0xCcDZpcHF5eXRnQkJrQWdMRkorZ29hT2twYWVvcWFxcnJhNnZzTEd6dExXM0FFR29DQXNPQ2dBQUFEMEFBQURcL2h4b3dsUUU9XCIsXCI4XCIsXCIxLjAuNDAwXCIpO3dpbmRvd1tcInV6amhuXCJdPSgpPT5pLmluKCl9KCl9KCk7PFwvc2NyaXB0PlxyXG48c2NyaXB0IGRhdGEtY2Zhc3luYz1cImZhbHNlXCIgdHlwZT1cInRleHRcL2phdmFzY3JpcHRcIiBzcmM9XCJcL1wvYmFua2luZ2Jsb2F0ZWRjYXB0aXZlLmNvbVwvYWFzXC9yNDVkXC92a2lcLzIwNDc0NzFcLzNlZjVlODQ0LmpzXCIgYXN5bmMgb25lcnJvcj1cInV6amhuKClcIj48XC9zY3JpcHQ+In0seyJpZCI6ImV4b2Nfal9QT1BVTkRFUiIsImFkc3BvdCI6ImpfUE9QVU5ERVIiLCJ3ZWlnaHQiOiI2IiwiZmNhcCI6IjEiLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjpmYWxzZSwibWluV2lkdGgiOiI3NjgiLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIj5cclxuKGZ1bmN0aW9uKCkge1xyXG4gICAgZnVuY3Rpb24gcmFuZFN0cihlLHQpe2Zvcih2YXIgbj1cIlwiLHI9dHx8XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIsbz0wO288ZTtvKyspbis9ci5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnIubGVuZ3RoKSk7cmV0dXJuIG59ZnVuY3Rpb24gZ2VuZXJhdGVDb250ZW50KCl7cmV0dXJuIHZvaWQgMD09PWdlbmVyYXRlQ29udGVudC52YWwmJihnZW5lcmF0ZUNvbnRlbnQudmFsPVwiZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcIityYW5kU3RyKDQqTWF0aC5yYW5kb20oKSszKStcIik7XCIpLGdlbmVyYXRlQ29udGVudC52YWx9dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudC5jdXJyZW50U2NyaXB0LFwiaW5uZXJIVE1MXCIse2dldDpnZW5lcmF0ZUNvbnRlbnR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQuY3VycmVudFNjcmlwdCxcInRleHRDb250ZW50XCIse2dldDpnZW5lcmF0ZUNvbnRlbnR9KX1jYXRjaChlKXt9O1xyXG5cclxuICAgIFwvXC92ZXJzaW9uIDcuMC4wXHJcblxyXG4gICAgdmFyIGFkQ29uZmlnID0ge1xyXG4gICAgXCJhZHNfaG9zdFwiOiBcImEucGVtc3J2LmNvbVwiLFxyXG4gICAgXCJzeW5kaWNhdGlvbl9ob3N0XCI6IFwicy5wZW1zcnYuY29tXCIsXHJcbiAgICBcImlkem9uZVwiOiA1NjY1NjUyLFxyXG4gICAgXCJwb3B1cF9mYWxsYmFja1wiOiBmYWxzZSxcclxuICAgIFwicG9wdXBfZm9yY2VcIjogZmFsc2UsXHJcbiAgICBcImNocm9tZV9lbmFibGVkXCI6IHRydWUsXHJcbiAgICBcIm5ld190YWJcIjogZmFsc2UsXHJcbiAgICBcImZyZXF1ZW5jeV9wZXJpb2RcIjogNzIwLFxyXG4gICAgXCJmcmVxdWVuY3lfY291bnRcIjogMSxcclxuICAgIFwidHJpZ2dlcl9tZXRob2RcIjogMyxcclxuICAgIFwidHJpZ2dlcl9jbGFzc1wiOiBcIlwiLFxyXG4gICAgXCJ0cmlnZ2VyX2RlbGF5XCI6IDAsXHJcbiAgICBcImNhcHBpbmdfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJ0Y2ZfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJvbmx5X2lubGluZVwiOiBmYWxzZVxyXG59O1xyXG5cclxud2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGx8fChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPWRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbD1PYmplY3QucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbihlLG8sdCxpLG4pe3ZhciByPWRvY3VtZW50LGE9ci5jcmVhdGVTdHlsZVNoZWV0KCk7Zm9yKG49ci5hbGwsbz1bXSx0PShlPWUucmVwbGFjZShcL1xcW2ZvclxcYlwvZ2ksXCJbaHRtbEZvclwiKS5zcGxpdChcIixcIikpLmxlbmd0aDt0LS07KXtmb3IoYS5hZGRSdWxlKGVbdF0sXCJrOnZcIiksaT1uLmxlbmd0aDtpLS07KW5baV0uY3VycmVudFN0eWxlLmsmJm8ucHVzaChuW2ldKTthLnJlbW92ZVJ1bGUoMCl9cmV0dXJuIG99KTt2YXIgcG9wTWFnaWM9e3ZlcnNpb246Nyxjb29raWVfbmFtZTpcIlwiLHVybDpcIlwiLGNvbmZpZzp7fSxvcGVuX2NvdW50OjAsdG9wOm51bGwsYnJvd3NlcjpudWxsLHZlbm9yX2xvYWRlZDohMSx2ZW5vcjohMSx0Y2ZEYXRhOm51bGwsY29uZmlnVHBsOnthZHNfaG9zdDpcIlwiLHN5bmRpY2F0aW9uX2hvc3Q6XCJcIixpZHpvbmU6XCJcIixmcmVxdWVuY3lfcGVyaW9kOjcyMCxmcmVxdWVuY3lfY291bnQ6MSx0cmlnZ2VyX21ldGhvZDoxLHRyaWdnZXJfY2xhc3M6XCJcIixwb3B1cF9mb3JjZTohMSxwb3B1cF9mYWxsYmFjazohMSxjaHJvbWVfZW5hYmxlZDohMCxuZXdfdGFiOiExLGNhdDpcIlwiLHRhZ3M6XCJcIixlbDpcIlwiLHN1YjpcIlwiLHN1YjI6XCJcIixzdWIzOlwiXCIsb25seV9pbmxpbmU6ITEsdHJpZ2dlcl9kZWxheTowLGNhcHBpbmdfZW5hYmxlZDohMCx0Y2ZfZW5hYmxlZDohMSxjb29raWVjb25zZW50OiEwLHNob3VsZF9maXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG9uX3JlZGlyZWN0Om51bGx9LGluaXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09ZS5pZHpvbmUmJmUuaWR6b25lKXt2b2lkIDA9PT1lLmN1c3RvbVRhcmdldGluZyYmKGUuY3VzdG9tVGFyZ2V0aW5nPVtdKSx3aW5kb3cuY3VzdG9tVGFyZ2V0aW5nPWUuY3VzdG9tVGFyZ2V0aW5nfHxudWxsO3ZhciBvPU9iamVjdC5rZXlzKGUuY3VzdG9tVGFyZ2V0aW5nKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlYXJjaChcImV4X1wiKT49MH0pKTtmb3IodmFyIHQgaW4gby5sZW5ndGgmJm8uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb25maWdUcGxbZV09bnVsbH0uYmluZCh0aGlzKSksdGhpcy5jb25maWdUcGwpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnVHBsLHQpJiYodm9pZCAwIT09ZVt0XT90aGlzLmNvbmZpZ1t0XT1lW3RdOnRoaXMuY29uZmlnW3RdPXRoaXMuY29uZmlnVHBsW3RdKTtpZih2b2lkIDAhPT10aGlzLmNvbmZpZy5pZHpvbmUmJlwiXCIhPT10aGlzLmNvbmZpZy5pZHpvbmUpeyEwIT09dGhpcy5jb25maWcub25seV9pbmxpbmUmJnRoaXMubG9hZEhvc3RlZCgpO3ZhciBpPXRoaXM7dGhpcy5jaGVja1RDRkNvbnNlbnQoKGZ1bmN0aW9uKCl7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9pLnByZXBhcmVQb3BXYWl0KCk6aS5hZGRFdmVudFRvRWxlbWVudCh3aW5kb3csXCJsb2FkXCIsaS5wcmVwYXJlUG9wKX0pKX19fSxnZXRDb3VudEZyb21Db29raWU6ZnVuY3Rpb24oKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4gMDt2YXIgZT1wb3BNYWdpYy5nZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUpLG89dm9pZCAwPT09ZT8wOnBhcnNlSW50KGUpO3JldHVybiBpc05hTihvKSYmKG89MCksb30sZ2V0TGFzdE9wZW5lZFRpbWVGcm9tQ29va2llOmZ1bmN0aW9uKCl7dmFyIGU9cG9wTWFnaWMuZ2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lKSxvPW51bGw7aWYodm9pZCAwIT09ZSl7dmFyIHQ9ZS5zcGxpdChcIjtcIilbMV07bz10PjA/cGFyc2VJbnQodCk6MH1yZXR1cm4gaXNOYU4obykmJihvPW51bGwpLG99LHNob3VsZFNob3c6ZnVuY3Rpb24oKXtpZighcG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZCl7dmFyIGU9ITAsbz1wb3BNYWdpYy5jb25maWcuc2hvdWxkX2ZpcmU7dHJ5e1wiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihlPUJvb2xlYW4obygpKSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcIkVycm9yIGV4ZWN1dGluZyBzaG91bGQgZmlyZSBjYWxsYmFjayBmdW5jdGlvbjpcIixlKX1yZXR1cm4gZSYmMD09PXBvcE1hZ2ljLm9wZW5fY291bnR9aWYocG9wTWFnaWMub3Blbl9jb3VudD49cG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9jb3VudClyZXR1cm4hMTt2YXIgdD1wb3BNYWdpYy5nZXRDb3VudEZyb21Db29raWUoKSxpPXBvcE1hZ2ljLmdldExhc3RPcGVuZWRUaW1lRnJvbUNvb2tpZSgpLG49TWF0aC5mbG9vcihEYXRlLm5vdygpXC8xZTMpLHI9aStwb3BNYWdpYy5jb25maWcudHJpZ2dlcl9kZWxheTtyZXR1cm4hKGkmJnI+bikmJihwb3BNYWdpYy5vcGVuX2NvdW50PXQsISh0Pj1wb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X2NvdW50KSl9LHZlbm9yU2hvdWxkU2hvdzpmdW5jdGlvbigpe3JldHVybiBwb3BNYWdpYy52ZW5vcl9sb2FkZWQmJlwiMFwiPT09cG9wTWFnaWMudmVub3J9LHNldEFzT3BlbmVkOmZ1bmN0aW9uKGUpe3ZhciBvPWU/ZS50YXJnZXR8fGUuc3JjRWxlbWVudDpudWxsLHQ9e2lkOlwiXCIsdGFnTmFtZTpcIlwiLGNsYXNzZXM6XCJcIix0ZXh0OlwiXCIsaHJlZjpcIlwiLGVsbTpcIlwifTt2b2lkIDAhPT1vJiZudWxsIT1vJiYodD17aWQ6dm9pZCAwIT09by5pZCYmbnVsbCE9by5pZD9vLmlkOlwiXCIsdGFnTmFtZTp2b2lkIDAhPT1vLnRhZ05hbWUmJm51bGwhPW8udGFnTmFtZT9vLnRhZ05hbWU6XCJcIixjbGFzc2VzOnZvaWQgMCE9PW8uY2xhc3NMaXN0JiZudWxsIT1vLmNsYXNzTGlzdD9vLmNsYXNzTGlzdDpcIlwiLHRleHQ6dm9pZCAwIT09by5vdXRlclRleHQmJm51bGwhPW8ub3V0ZXJUZXh0P28ub3V0ZXJUZXh0OlwiXCIsaHJlZjp2b2lkIDAhPT1vLmhyZWYmJm51bGwhPW8uaHJlZj9vLmhyZWY6XCJcIixlbG06b30pO3ZhciBpPW5ldyBDdXN0b21FdmVudChcImNyZWF0aXZlRGlzcGxheWVkLVwiK3BvcE1hZ2ljLmNvbmZpZy5pZHpvbmUse2RldGFpbDp0fSk7aWYoZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChpKSxwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkKXt2YXIgbj0xO249MCE9PXBvcE1hZ2ljLm9wZW5fY291bnQ/cG9wTWFnaWMub3Blbl9jb3VudCsxOnBvcE1hZ2ljLmdldENvdW50RnJvbUNvb2tpZSgpKzE7dmFyIHI9TWF0aC5mbG9vcihEYXRlLm5vdygpXC8xZTMpO3BvcE1hZ2ljLmNvbmZpZy5jb29raWVjb25zZW50JiZwb3BNYWdpYy5zZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUsbitcIjtcIityLHBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfcGVyaW9kKX1lbHNlKytwb3BNYWdpYy5vcGVuX2NvdW50fSxsb2FkSG9zdGVkOmZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtmb3IodmFyIG8gaW4gZS50eXBlPVwiYXBwbGljYXRpb25cL2phdmFzY3JpcHRcIixlLmFzeW5jPSEwLGUuc3JjPVwiXC9cL1wiK3RoaXMuY29uZmlnLmFkc19ob3N0K1wiXC9wb3B1bmRlcjEwMDAuanNcIixlLmlkPVwicG9wbWFnaWNsZHJcIix0aGlzLmNvbmZpZylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb25maWcsbykmJlwiYWRzX2hvc3RcIiE9PW8mJlwic3luZGljYXRpb25faG9zdFwiIT09byYmZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWV4by1cIitvLHRoaXMuY29uZmlnW29dKTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIikuaXRlbSgwKTt0LmZpcnN0Q2hpbGQ/dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpOnQuYXBwZW5kQ2hpbGQoZSl9LHByZXBhcmVQb3BXYWl0OmZ1bmN0aW9uKCl7c2V0VGltZW91dChwb3BNYWdpYy5wcmVwYXJlUG9wLDQwMCl9LHByZXBhcmVQb3A6ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXhvSnNQb3AxMDF8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhvSnNQb3AxMDEsXCJhZGRcIikpe2lmKHBvcE1hZ2ljLnRvcD1zZWxmLHBvcE1hZ2ljLnRvcCE9PXNlbGYpdHJ5e3RvcC5kb2N1bWVudC5sb2NhdGlvbi50b1N0cmluZygpJiYocG9wTWFnaWMudG9wPXRvcCl9Y2F0Y2goZSl7fWlmKHBvcE1hZ2ljLmNvb2tpZV9uYW1lPVwiem9uZS1jYXAtXCIrcG9wTWFnaWMuY29uZmlnLmlkem9uZSxwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkfHwoZG9jdW1lbnQuY29va2llPXBvcE1hZ2ljLmNvb2tpZV9uYW1lK1wiPTtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UOyBwYXRoPVwvXCIpLHBvcE1hZ2ljLnNob3VsZFNob3coKSl7dmFyIGU9bmV3IFhNTEh0dHBSZXF1ZXN0O2Uub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZS5yZWFkeVN0YXRlPT1YTUxIdHRwUmVxdWVzdC5ET05FJiYocG9wTWFnaWMudmVub3JfbG9hZGVkPSEwLDIwMD09ZS5zdGF0dXM/cG9wTWFnaWMudmVub3I9ZS5yZXNwb25zZVRleHQ6cG9wTWFnaWMudmVub3I9XCIwXCIpfTt2YXIgbz1cImh0dHBzOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wmJlwiaHR0cDpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sP1wiaHR0cHM6XCI6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w7ZS5vcGVuKFwiR0VUXCIsbytcIlwvXC9cIitwb3BNYWdpYy5jb25maWcuc3luZGljYXRpb25faG9zdCtcIlwvdmVub3IucGhwXCIsITApO3RyeXtlLnNlbmQoKX1jYXRjaChlKXtwb3BNYWdpYy52ZW5vcl9sb2FkZWQ9ITB9fWlmKHBvcE1hZ2ljLmJ1aWxkVXJsKCkscG9wTWFnaWMuYnJvd3Nlcj1wb3BNYWdpYy5icm93c2VyRGV0ZWN0b3IuZ2V0QnJvd3NlckluZm8oKSxwb3BNYWdpYy5jb25maWcuY2hyb21lX2VuYWJsZWR8fCFwb3BNYWdpYy5icm93c2VyLmlzQ2hyb21lKXt2YXIgdD1wb3BNYWdpYy5nZXRQb3BNZXRob2QocG9wTWFnaWMuYnJvd3Nlcik7cG9wTWFnaWMuYWRkRXZlbnQoXCJjbGlja1wiLHQpfX19LGdldFBvcE1ldGhvZDpmdW5jdGlvbihlKXtyZXR1cm4gcG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZvcmNlfHxwb3BNYWdpYy5jb25maWcucG9wdXBfZmFsbGJhY2smJmUuaXNDaHJvbWUmJmUudmVyc2lvbj49NjgmJiFlLmlzTW9iaWxlP3BvcE1hZ2ljLm1ldGhvZHMucG9wdXA6ZS5pc01vYmlsZT9wb3BNYWdpYy5tZXRob2RzLmRlZmF1bHQ6ZS5pc0Nocm9tZT9wb3BNYWdpYy5tZXRob2RzLmNocm9tZVRhYjpwb3BNYWdpYy5tZXRob2RzLmRlZmF1bHR9LGNoZWNrVENGQ29uc2VudDpmdW5jdGlvbihlKXtpZih0aGlzLmNvbmZpZy50Y2ZfZW5hYmxlZCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93Ll9fdGNmYXBpKXt2YXIgbz10aGlzO3dpbmRvdy5fX3RjZmFwaShcImFkZEV2ZW50TGlzdGVuZXJcIiwyLChmdW5jdGlvbih0LGkpe2kmJihvLnRjZkRhdGE9dCxcInRjbG9hZGVkXCIhPT10LmV2ZW50U3RhdHVzJiZcInVzZXJhY3Rpb25jb21wbGV0ZVwiIT09dC5ldmVudFN0YXR1c3x8KHdpbmRvdy5fX3RjZmFwaShcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiwyLChmdW5jdGlvbigpe30pLHQubGlzdGVuZXJJZCksZSgpKSl9KSl9ZWxzZSBlKCl9LGJ1aWxkVXJsOmZ1bmN0aW9uKCl7dmFyIGUsbz1cImh0dHBzOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wmJlwiaHR0cDpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sP1wiaHR0cHM6XCI6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsdD10b3A9PT1zZWxmP2RvY3VtZW50LlVSTDpkb2N1bWVudC5yZWZlcnJlcixpPXt0eXBlOlwiaW5saW5lXCIsbmFtZTpcInBvcE1hZ2ljXCIsdmVyOnRoaXMudmVyc2lvbn0sbj1cIlwiO2N1c3RvbVRhcmdldGluZyYmT2JqZWN0LmtleXMoY3VzdG9tVGFyZ2V0aW5nKS5sZW5ndGgmJihcIm9iamVjdFwiPT10eXBlb2YgY3VzdG9tVGFyZ2V0aW5nP09iamVjdC5rZXlzKGN1c3RvbVRhcmdldGluZyk6Y3VzdG9tVGFyZ2V0aW5nKS5mb3JFYWNoKChmdW5jdGlvbihvKXtcIm9iamVjdFwiPT10eXBlb2YgY3VzdG9tVGFyZ2V0aW5nP2U9Y3VzdG9tVGFyZ2V0aW5nW29dOkFycmF5LmlzQXJyYXkoY3VzdG9tVGFyZ2V0aW5nKSYmKGU9c2NyaXB0RWwuZ2V0QXR0cmlidXRlKG8pKTt2YXIgdD1vLnJlcGxhY2UoXCJkYXRhLWV4by1cIixcIlwiKTtuKz1cIiZcIit0K1wiPVwiK2V9KSk7dmFyIHI9dGhpcy50Y2ZEYXRhJiZ0aGlzLnRjZkRhdGEuZ2RwckFwcGxpZXMmJiEwPT09dGhpcy50Y2ZEYXRhLmdkcHJBcHBsaWVzPzE6MDt0aGlzLnVybD1vK1wiXC9cL1wiK3RoaXMuY29uZmlnLnN5bmRpY2F0aW9uX2hvc3QrXCJcL3YxXC9saW5rLnBocD9jYXQ9XCIrdGhpcy5jb25maWcuY2F0K1wiJmlkem9uZT1cIit0aGlzLmNvbmZpZy5pZHpvbmUrXCImdHlwZT04JnA9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHQpK1wiJnN1Yj1cIit0aGlzLmNvbmZpZy5zdWIrKFwiXCIhPT10aGlzLmNvbmZpZy5zdWIyP1wiJnN1YjI9XCIrdGhpcy5jb25maWcuc3ViMjpcIlwiKSsoXCJcIiE9PXRoaXMuY29uZmlnLnN1YjM/XCImc3ViMz1cIit0aGlzLmNvbmZpZy5zdWIzOlwiXCIpK1wiJmJsb2NrPTEmZWw9XCIrdGhpcy5jb25maWcuZWwrXCImdGFncz1cIit0aGlzLmNvbmZpZy50YWdzK1wiJnNjcl9pbmZvPVwiK2Z1bmN0aW9uKGUpe3ZhciBvPWUudHlwZStcInxcIitlLm5hbWUrXCJ8XCIrZS52ZXI7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChidG9hKG8pKX0oaSkrbitcIiZnZHByPVwiK3IrXCImY2I9XCIrTWF0aC5mbG9vcigxZTkqTWF0aC5yYW5kb20oKSksdGhpcy50Y2ZEYXRhJiZ0aGlzLnRjZkRhdGEudGNTdHJpbmc/dGhpcy51cmwrPVwiJmdkcHJfY29uc2VudD1cIitlbmNvZGVVUklDb21wb25lbnQodGhpcy50Y2ZEYXRhLnRjU3RyaW5nKTp0aGlzLnVybCs9XCImY29va2llY29uc2VudD1cIit0aGlzLmNvbmZpZy5jb29raWVjb25zZW50fSxhZGRFdmVudFRvRWxlbWVudDpmdW5jdGlvbihlLG8sdCl7ZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcihvLHQsITEpOmUuYXR0YWNoRXZlbnQ/KGVbXCJlXCIrbyt0XT10LGVbbyt0XT1mdW5jdGlvbigpe2VbXCJlXCIrbyt0XSh3aW5kb3cuZXZlbnQpfSxlLmF0dGFjaEV2ZW50KFwib25cIitvLGVbbyt0XSkpOmVbXCJvblwiK29dPWVbXCJlXCIrbyt0XX0sZ2V0VHJpZ2dlckNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZSxvPVtdOy0xPT09cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3MuaW5kZXhPZihcIixcIik/ZT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5zcGxpdChcIiBcIik6ZT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5yZXBsYWNlKFwvXFxzXC9nLFwiXCIpLnNwbGl0KFwiLFwiKTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylcIlwiIT09ZVt0XSYmby5wdXNoKFwiLlwiK2VbdF0pO3JldHVybiBvfSxhZGRFdmVudDpmdW5jdGlvbihlLG8pe3ZhciB0O2lmKFwiM1wiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2QpaWYoXCIyXCIhPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZHx8XCJcIj09cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kKWlmKFwiNFwiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2R8fFwiXCI9PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZClwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudChkb2N1bWVudCxlLG8pO2Vsc2V7dmFyIG49cG9wTWFnaWMuZ2V0VHJpZ2dlckNsYXNzZXMoKTtwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudChkb2N1bWVudCxlLChmdW5jdGlvbihlKXtuLnNvbWUoKGZ1bmN0aW9uKG8pe3JldHVybiBudWxsIT09ZS50YXJnZXQuY2xvc2VzdChvKX0pKXx8by5jYWxsKGUudGFyZ2V0LGUpfSkpfWVsc2V7dmFyIHI9cG9wTWFnaWMuZ2V0VHJpZ2dlckNsYXNzZXMoKTtmb3IodD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHIuam9pbihcIiwgXCIpKSxpPTA7aTx0Lmxlbmd0aDtpKyspcG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQodFtpXSxlLG8pfWVsc2UgZm9yKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImFcIiksaT0wO2k8dC5sZW5ndGg7aSsrKXBvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KHRbaV0sZSxvKX0sc2V0Q29va2llOmZ1bmN0aW9uKGUsbyx0KXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4hMTt0PXBhcnNlSW50KHQsMTApO3ZhciBpPW5ldyBEYXRlO2kuc2V0TWludXRlcyhpLmdldE1pbnV0ZXMoKStwYXJzZUludCh0KSk7dmFyIG49ZW5jb2RlVVJJQ29tcG9uZW50KG8pK1wiOyBleHBpcmVzPVwiK2kudG9VVENTdHJpbmcoKStcIjsgcGF0aD1cL1wiO2RvY3VtZW50LmNvb2tpZT1lK1wiPVwiK259LGdldENvb2tpZTpmdW5jdGlvbihlKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudClyZXR1cm4hMTt2YXIgbyx0LGksbj1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpO2ZvcihvPTA7bzxuLmxlbmd0aDtvKyspaWYodD1uW29dLnN1YnN0cigwLG5bb10uaW5kZXhPZihcIj1cIikpLGk9bltvXS5zdWJzdHIobltvXS5pbmRleE9mKFwiPVwiKSsxKSwodD10LnJlcGxhY2UoXC9eXFxzK3xcXHMrJFwvZyxcIlwiKSk9PT1lKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoaSl9LHJhbmRTdHI6ZnVuY3Rpb24oZSxvKXtmb3IodmFyIHQ9XCJcIixpPW98fFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIixuPTA7bjxlO24rKyl0Kz1pLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqaS5sZW5ndGgpKTtyZXR1cm4gdH0saXNWYWxpZFVzZXJFdmVudDpmdW5jdGlvbihlKXtyZXR1cm4hKCEoXCJpc1RydXN0ZWRcImluIGUpfHwhZS5pc1RydXN0ZWR8fFwiaWVcIj09PXBvcE1hZ2ljLmJyb3dzZXIubmFtZXx8XCJzYWZhcmlcIj09PXBvcE1hZ2ljLmJyb3dzZXIubmFtZSl8fDAhPWUuc2NyZWVuWCYmMCE9ZS5zY3JlZW5ZfSxpc1ZhbGlkSHJlZjpmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lfHxcIlwiPT1lKXJldHVybiExO3JldHVybiFcL1xccz9qYXZhc2NyaXB0XFxzPzpcL2kudGVzdChlKX0sZmluZExpbmtUb09wZW46ZnVuY3Rpb24oZSl7dmFyIG89ZSx0PSExO3RyeXtmb3IodmFyIGk9MDtpPDIwJiYhby5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpJiZvIT09ZG9jdW1lbnQmJlwiaHRtbFwiIT09by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOylvPW8ucGFyZW50Tm9kZSxpKys7dmFyIG49by5nZXRBdHRyaWJ1dGUoXCJ0YXJnZXRcIik7biYmLTEhPT1uLmluZGV4T2YoXCJfYmxhbmtcIil8fCh0PW8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSl9Y2F0Y2goZSl7fXJldHVybiBwb3BNYWdpYy5pc1ZhbGlkSHJlZih0KXx8KHQ9ITEpLHR8fHdpbmRvdy5sb2NhdGlvbi5ocmVmfSxnZXRQdUlkOmZ1bmN0aW9uKCl7cmV0dXJuXCJva19cIitNYXRoLmZsb29yKDg5OTk5OTk5Kk1hdGgucmFuZG9tKCkrMWU3KX0sZXhlY3V0ZU9uUmVkaXJlY3Q6ZnVuY3Rpb24oKXt0cnl7cG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZHx8XCJmdW5jdGlvblwiIT10eXBlb2YgcG9wTWFnaWMuY29uZmlnLm9uX3JlZGlyZWN0fHxwb3BNYWdpYy5jb25maWcub25fcmVkaXJlY3QoKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiRXJyb3IgZXhlY3V0aW5nIG9uIHJlZGlyZWN0IGNhbGxiYWNrOlwiLGUpfX0sYnJvd3NlckRldGVjdG9yOnticm93c2VyRGVmaW5pdGlvbnM6W1tcImZpcmVmb3hcIixcL0ZpcmVmb3hcXFwvKFswLTkuXSspKD86XFxzfCQpXC9dLFtcIm9wZXJhXCIsXC9PcGVyYVxcXC8oWzAtOS5dKykoPzpcXHN8JClcL10sW1wib3BlcmFcIixcL09QUlxcXC8oWzAtOS5dKykoOj9cXHN8JCkkXC9dLFtcImVkZ2VcIixcL0VkZyg/OmV8KVxcXC8oWzAtOS5fXSspXC9dLFtcImllXCIsXC9UcmlkZW50XFxcLzdcXC4wLipydjooWzAtOS5dKylcXCkuKkdlY2tvJFwvXSxbXCJpZVwiLFwvTVNJRVxccyhbMC05Ll0rKTsuKlRyaWRlbnRcXFwvWzQtN10uMFwvXSxbXCJpZVwiLFwvTVNJRVxccyg3XFwuMClcL10sW1wic2FmYXJpXCIsXC9WZXJzaW9uXFxcLyhbMC05Ll9dKykuKlNhZmFyaVwvXSxbXCJjaHJvbWVcIixcLyg/IUNocm9tLipFZGcoPzplfCkpQ2hyb20oPzplfGl1bSlcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dLFtcImNocm9tZVwiLFwvKD8hQ2hyb20uKk9QUilDaHJvbSg/OmV8aXVtKVxcXC8oWzAtOS5dKykoOj9cXHN8JClcL10sW1wiYmIxMFwiLFwvQkIxMDtcXHNUb3VjaC4qVmVyc2lvblxcXC8oWzAtOS5dKylcL10sW1wiYW5kcm9pZFwiLFwvQW5kcm9pZFxccyhbMC05Ll0rKVwvXSxbXCJpb3NcIixcL1ZlcnNpb25cXFwvKFswLTkuX10rKS4qTW9iaWxlLipTYWZhcmkuKlwvXSxbXCJ5YW5kZXhicm93c2VyXCIsXC9ZYUJyb3dzZXJcXFwvKFswLTkuX10rKVwvXSxbXCJjcmlvc1wiLFwvQ3JpT1NcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dXSxpc0Nocm9tZU9yQ2hyb21pdW06ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cubmF2aWdhdG9yLG89KGUudXNlckFnZW50fHxcIlwiKS50b0xvd2VyQ2FzZSgpLHQ9ZS52ZW5kb3J8fFwiXCI7aWYoLTEhPT1vLmluZGV4T2YoXCJjcmlvc1wiKSlyZXR1cm4hMDtpZihlLnVzZXJBZ2VudERhdGEmJkFycmF5LmlzQXJyYXkoZS51c2VyQWdlbnREYXRhLmJyYW5kcykmJmUudXNlckFnZW50RGF0YS5icmFuZHMubGVuZ3RoPjApe3ZhciBpPWUudXNlckFnZW50RGF0YS5icmFuZHMsbj1pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiR29vZ2xlIENocm9tZVwiPT09ZS5icmFuZH0pKSxyPWkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuXCJDaHJvbWl1bVwiPT09ZS5icmFuZH0pKSYmMj09PWkubGVuZ3RoO3JldHVybiBufHxyfXZhciBhPSEhd2luZG93LmNocm9tZSxjPS0xIT09by5pbmRleE9mKFwiZWRnXCIpLHA9ISF3aW5kb3cub3ByfHwtMSE9PW8uaW5kZXhPZihcIm9wclwiKSxzPSEoIWUuYnJhdmV8fCFlLmJyYXZlLmlzQnJhdmUpLGc9LTEhPT1vLmluZGV4T2YoXCJ2aXZhbGRpXCIpLGQ9LTEhPT1vLmluZGV4T2YoXCJ5YWJyb3dzZXJcIiksbD0tMSE9PW8uaW5kZXhPZihcInNhbXN1bmdicm93c2VyXCIpLHU9LTEhPT1vLmluZGV4T2YoXCJ1Y2Jyb3dzZXJcIik7cmV0dXJuIGEmJlwiR29vZ2xlIEluYy5cIj09PXQmJiFjJiYhcCYmIXMmJiFnJiYhZCYmIWwmJiF1fSxnZXRCcm93c2VySW5mbzpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LG89e25hbWU6XCJvdGhlclwiLHZlcnNpb246XCIxLjBcIix2ZXJzaW9uTnVtYmVyOjEsaXNDaHJvbWU6dGhpcy5pc0Nocm9tZU9yQ2hyb21pdW0oKSxpc01vYmlsZTohIWUubWF0Y2goXC9BbmRyb2lkfEJsYWNrQmVycnl8aVBob25lfGlQYWR8aVBvZHxPcGVyYSBNaW5pfElFTW9iaWxlfFdlYk9TfFdpbmRvd3MgUGhvbmVcL2kpfTtmb3IodmFyIHQgaW4gdGhpcy5icm93c2VyRGVmaW5pdGlvbnMpe3ZhciBpPXRoaXMuYnJvd3NlckRlZmluaXRpb25zW3RdO2lmKGlbMV0udGVzdChlKSl7dmFyIG49aVsxXS5leGVjKGUpLHI9biYmblsxXS5zcGxpdChcL1suX11cLykuc2xpY2UoMCwzKSxhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsMSkuam9pbihcIlwiKXx8XCIwXCI7ciYmci5sZW5ndGg8MyYmQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkociwxPT09ci5sZW5ndGg/WzAsMF06WzBdKSxvLm5hbWU9aVswXSxvLnZlcnNpb249ci5qb2luKFwiLlwiKSxvLnZlcnNpb25OdW1iZXI9cGFyc2VGbG9hdChyWzBdK1wiLlwiK2EpO2JyZWFrfX1yZXR1cm4gb319LG1ldGhvZHM6e2RlZmF1bHQ6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDt2YXIgbz1lLnRhcmdldHx8ZS5zcmNFbGVtZW50LHQ9cG9wTWFnaWMuZmluZExpbmtUb09wZW4obyk7cmV0dXJuIHdpbmRvdy5vcGVuKHQsXCJfYmxhbmtcIikscG9wTWFnaWMuc2V0QXNPcGVuZWQoZSkscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKSxwb3BNYWdpYy50b3AuZG9jdW1lbnQubG9jYXRpb249cG9wTWFnaWMudXJsLHZvaWQgMCE9PWUucHJldmVudERlZmF1bHQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSksITB9LGNocm9tZVRhYjpmdW5jdGlvbihlKXtpZighcG9wTWFnaWMuc2hvdWxkU2hvdygpfHwhcG9wTWFnaWMudmVub3JTaG91bGRTaG93KCl8fCFwb3BNYWdpYy5pc1ZhbGlkVXNlckV2ZW50KGUpKXJldHVybiEwO2lmKHZvaWQgMD09PWUucHJldmVudERlZmF1bHQpcmV0dXJuITA7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG89dG9wLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSx0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnQ7by5ocmVmPXBvcE1hZ2ljLmZpbmRMaW5rVG9PcGVuKHQpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXS5hcHBlbmRDaGlsZChvKTt2YXIgaT1uZXcgTW91c2VFdmVudChcImNsaWNrXCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCx2aWV3OndpbmRvdyxzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAsY3RybEtleTohMCxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMCxidXR0b246MH0pO2kucHJldmVudERlZmF1bHQ9dm9pZCAwLG8uZGlzcGF0Y2hFdmVudChpKSxvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobykscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKSx3aW5kb3cub3Blbihwb3BNYWdpYy51cmwsXCJfc2VsZlwiKSxwb3BNYWdpYy5zZXRBc09wZW5lZChlKX0scG9wdXA6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDt2YXIgbz1cIlwiO2lmKHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mYWxsYmFjayYmIXBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mb3JjZSl7dmFyIHQ9TWF0aC5tYXgoTWF0aC5yb3VuZCguOCp3aW5kb3cuaW5uZXJIZWlnaHQpLDMwMCk7bz1cIm1lbnViYXI9MSxyZXNpemFibGU9MSx3aWR0aD1cIitNYXRoLm1heChNYXRoLnJvdW5kKC43KndpbmRvdy5pbm5lcldpZHRoKSwzMDApK1wiLGhlaWdodD1cIit0K1wiLHRvcD1cIisod2luZG93LnNjcmVlblkrMTAwKStcIixsZWZ0PVwiKyh3aW5kb3cuc2NyZWVuWCsxMDApfXZhciBpPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYsbj13aW5kb3cub3BlbihpLHBvcE1hZ2ljLmdldFB1SWQoKSxvKTtwb3BNYWdpYy5zZXRBc09wZW5lZChlKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe24ubG9jYXRpb24uaHJlZj1wb3BNYWdpYy51cmwscG9wTWFnaWMuZXhlY3V0ZU9uUmVkaXJlY3QoKX0pLDIwMCksdm9pZCAwIT09ZS5wcmV2ZW50RGVmYXVsdCYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX19fTsgICAgcG9wTWFnaWMuaW5pdChhZENvbmZpZyk7XHJcbn0pKCk7XHJcblxyXG5cclxuPFwvc2NyaXB0PiJ9LHsiaWQiOiJleG9tX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNiIsImZjYXAiOiIyIiwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6Ijc2OCIsIm1pbldpZHRoIjpmYWxzZSwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uXC9qYXZhc2NyaXB0XCI+XHJcbihmdW5jdGlvbigpIHtcclxuXHJcbiAgICBcL1wvdmVyc2lvbiAxLjAuMFxyXG5cclxuICAgIHZhciBhZENvbmZpZyA9IHtcclxuICAgIFwiYWRzX2hvc3RcIjogXCJhLnBlbXNydi5jb21cIixcclxuICAgIFwic3luZGljYXRpb25faG9zdFwiOiBcInMucGVtc3J2LmNvbVwiLFxyXG4gICAgXCJpZHpvbmVcIjogMTEzOTcyOCxcclxuICAgIFwicG9wdXBfZmFsbGJhY2tcIjogZmFsc2UsXHJcbiAgICBcInBvcHVwX2ZvcmNlXCI6IGZhbHNlLFxyXG4gICAgXCJjaHJvbWVfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJuZXdfdGFiXCI6IGZhbHNlLFxyXG4gICAgXCJmcmVxdWVuY3lfcGVyaW9kXCI6IDcyMCxcclxuICAgIFwiZnJlcXVlbmN5X2NvdW50XCI6IDEsXHJcbiAgICBcInRyaWdnZXJfbWV0aG9kXCI6IDMsXHJcbiAgICBcInRyaWdnZXJfY2xhc3NcIjogXCJcIixcclxuICAgIFwidHJpZ2dlcl9kZWxheVwiOiAwLFxyXG4gICAgXCJvbmx5X2lubGluZVwiOiBmYWxzZVxyXG59O1xyXG5cclxuaWYoIXdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPWRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbD1PYmplY3QucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsUG9seWZpbGwocixjLGksaixhKXt2YXIgZD1kb2N1bWVudCxzPWQuY3JlYXRlU3R5bGVTaGVldCgpO2E9ZC5hbGw7Yz1bXTtyPXIucmVwbGFjZShcL1xcW2ZvclxcYlwvZ2ksXCJbaHRtbEZvclwiKS5zcGxpdChcIixcIik7Zm9yKGk9ci5sZW5ndGg7aS0tOyl7cy5hZGRSdWxlKHJbaV0sXCJrOnZcIik7Zm9yKGo9YS5sZW5ndGg7ai0tOyl7YVtqXS5jdXJyZW50U3R5bGUuayYmYy5wdXNoKGFbal0pfXMucmVtb3ZlUnVsZSgwKX1yZXR1cm4gY319dmFyIHBvcE1hZ2ljPXt2ZXJzaW9uOjEsY29va2llX25hbWU6XCJcIix1cmw6XCJcIixjb25maWc6e30sb3Blbl9jb3VudDowLHRvcDpudWxsLGJyb3dzZXI6bnVsbCx2ZW5vcl9sb2FkZWQ6ZmFsc2UsdmVub3I6ZmFsc2UsY29uZmlnVHBsOnthZHNfaG9zdDpcIlwiLHN5bmRpY2F0aW9uX2hvc3Q6XCJcIixpZHpvbmU6XCJcIixmcmVxdWVuY3lfcGVyaW9kOjcyMCxmcmVxdWVuY3lfY291bnQ6MSx0cmlnZ2VyX21ldGhvZDoxLHRyaWdnZXJfY2xhc3M6XCJcIixwb3B1cF9mb3JjZTpmYWxzZSxwb3B1cF9mYWxsYmFjazpmYWxzZSxjaHJvbWVfZW5hYmxlZDp0cnVlLG5ld190YWI6ZmFsc2UsY2F0OlwiXCIsdGFnczpcIlwiLGVsOlwiXCIsc3ViOlwiXCIsc3ViMjpcIlwiLHN1YjM6XCJcIixvbmx5X2lubGluZTpmYWxzZSx0cmlnZ2VyX2RlbGF5OjAsY29va2llY29uc2VudDp0cnVlfSxpbml0OmZ1bmN0aW9uKGNvbmZpZyl7aWYodHlwZW9mIGNvbmZpZy5pZHpvbmU9PT1cInVuZGVmaW5lZFwifHwhY29uZmlnLmlkem9uZSl7cmV0dXJufWlmKHR5cGVvZiBjb25maWdbXCJjdXN0b21UYXJnZXRpbmdcIl09PT1cInVuZGVmaW5lZFwiKXtjb25maWdbXCJjdXN0b21UYXJnZXRpbmdcIl09W119d2luZG93W1wiY3VzdG9tVGFyZ2V0aW5nXCJdPWNvbmZpZ1tcImN1c3RvbVRhcmdldGluZ1wiXXx8bnVsbDt2YXIgY3VzdG9tVGFyZ2V0aW5nPU9iamVjdC5rZXlzKGNvbmZpZ1tcImN1c3RvbVRhcmdldGluZ1wiXSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLnNlYXJjaChcImV4X1wiKT49MH0pO2lmKGN1c3RvbVRhcmdldGluZy5sZW5ndGgpe2N1c3RvbVRhcmdldGluZy5mb3JFYWNoKGZ1bmN0aW9uKGN0KXtyZXR1cm4gdGhpcy5jb25maWdUcGxbY3RdPW51bGx9LmJpbmQodGhpcykpfWZvcih2YXIga2V5IGluIHRoaXMuY29uZmlnVHBsKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnVHBsLGtleSkpe2NvbnRpbnVlfWlmKHR5cGVvZiBjb25maWdba2V5XSE9PVwidW5kZWZpbmVkXCIpe3RoaXMuY29uZmlnW2tleV09Y29uZmlnW2tleV19ZWxzZXt0aGlzLmNvbmZpZ1trZXldPXRoaXMuY29uZmlnVHBsW2tleV19fWlmKHR5cGVvZiB0aGlzLmNvbmZpZy5pZHpvbmU9PT1cInVuZGVmaW5lZFwifHx0aGlzLmNvbmZpZy5pZHpvbmU9PT1cIlwiKXtyZXR1cm59aWYodGhpcy5jb25maWcub25seV9pbmxpbmUhPT10cnVlKXt0aGlzLmxvYWRIb3N0ZWQoKX10aGlzLmFkZEV2ZW50VG9FbGVtZW50KHdpbmRvdyxcImxvYWRcIix0aGlzLnByZXBhcmVQb3ApfSxnZXRDb3VudEZyb21Db29raWU6ZnVuY3Rpb24oKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudCl7cmV0dXJuIDB9dmFyIHNob3duQ29va2llPXBvcE1hZ2ljLmdldENvb2tpZShwb3BNYWdpYy5jb29raWVfbmFtZSk7dmFyIGN0cj10eXBlb2Ygc2hvd25Db29raWU9PT1cInVuZGVmaW5lZFwiPzA6cGFyc2VJbnQoc2hvd25Db29raWUpO2lmKGlzTmFOKGN0cikpe2N0cj0wfXJldHVybiBjdHJ9LGdldExhc3RPcGVuZWRUaW1lRnJvbUNvb2tpZTpmdW5jdGlvbigpe3ZhciBzaG93bkNvb2tpZT1wb3BNYWdpYy5nZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUpO3ZhciBkZWxheT1udWxsO2lmKHR5cGVvZiBzaG93bkNvb2tpZSE9PVwidW5kZWZpbmVkXCIpe3ZhciB2YWx1ZT1zaG93bkNvb2tpZS5zcGxpdChcIjtcIilbMV07ZGVsYXk9dmFsdWU+MD9wYXJzZUludCh2YWx1ZSk6MH1pZihpc05hTihkZWxheSkpe2RlbGF5PW51bGx9cmV0dXJuIGRlbGF5fSxzaG91bGRTaG93OmZ1bmN0aW9uKCl7aWYocG9wTWFnaWMub3Blbl9jb3VudD49cG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9jb3VudCl7cmV0dXJuIGZhbHNlfXZhciBjdHI9cG9wTWFnaWMuZ2V0Q291bnRGcm9tQ29va2llKCk7Y29uc3QgbGFzdF9vcGVuZWRfdGltZT1wb3BNYWdpYy5nZXRMYXN0T3BlbmVkVGltZUZyb21Db29raWUoKTtjb25zdCBjdXJyZW50X3RpbWU9TWF0aC5mbG9vcihEYXRlLm5vdygpXC8xZTMpO2NvbnN0IG1heGltdW1EZWxheVRpbWU9bGFzdF9vcGVuZWRfdGltZStwb3BNYWdpYy5jb25maWcudHJpZ2dlcl9kZWxheTtpZihsYXN0X29wZW5lZF90aW1lJiZtYXhpbXVtRGVsYXlUaW1lPmN1cnJlbnRfdGltZSl7cmV0dXJuIGZhbHNlfXBvcE1hZ2ljLm9wZW5fY291bnQ9Y3RyO3JldHVybiEoY3RyPj1wb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X2NvdW50KX0sdmVub3JTaG91bGRTaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHBvcE1hZ2ljLnZlbm9yX2xvYWRlZCYmcG9wTWFnaWMudmVub3I9PT1cIjBcIn0sc2V0QXNPcGVuZWQ6ZnVuY3Rpb24oKXt2YXIgbmV3X2N0cj0xO2lmKHBvcE1hZ2ljLm9wZW5fY291bnQhPT0wKXtuZXdfY3RyPXBvcE1hZ2ljLm9wZW5fY291bnQrMX1lbHNle25ld19jdHI9cG9wTWFnaWMuZ2V0Q291bnRGcm9tQ29va2llKCkrMX1jb25zdCBsYXN0X29wZW5lZF90aW1lPU1hdGguZmxvb3IoRGF0ZS5ub3coKVwvMWUzKTtpZihwb3BNYWdpYy5jb25maWcuY29va2llY29uc2VudCl7cG9wTWFnaWMuc2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lLGAke25ld19jdHJ9OyR7bGFzdF9vcGVuZWRfdGltZX1gLHBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfcGVyaW9kKX19LGxvYWRIb3N0ZWQ6ZnVuY3Rpb24oKXt2YXIgaG9zdGVkU2NyaXB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7aG9zdGVkU2NyaXB0LnR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiO2hvc3RlZFNjcmlwdC5hc3luYz10cnVlO2hvc3RlZFNjcmlwdC5zcmM9XCJcL1wvXCIrdGhpcy5jb25maWcuYWRzX2hvc3QrXCJcL3BvcHVuZGVyMTAwMC5qc1wiO2hvc3RlZFNjcmlwdC5pZD1cInBvcG1hZ2ljbGRyXCI7Zm9yKHZhciBrZXkgaW4gdGhpcy5jb25maWcpe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb25maWcsa2V5KSl7Y29udGludWV9aWYoa2V5PT09XCJhZHNfaG9zdFwifHxrZXk9PT1cInN5bmRpY2F0aW9uX2hvc3RcIil7Y29udGludWV9aG9zdGVkU2NyaXB0LnNldEF0dHJpYnV0ZShcImRhdGEtZXhvLVwiK2tleSx0aGlzLmNvbmZpZ1trZXldKX12YXIgaW5zZXJ0QW5jaG9yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKS5pdGVtKDApO2lmKGluc2VydEFuY2hvci5maXJzdENoaWxkKXtpbnNlcnRBbmNob3IuaW5zZXJ0QmVmb3JlKGhvc3RlZFNjcmlwdCxpbnNlcnRBbmNob3IuZmlyc3RDaGlsZCl9ZWxzZXtpbnNlcnRBbmNob3IuYXBwZW5kQ2hpbGQoaG9zdGVkU2NyaXB0KX19LHByZXBhcmVQb3A6ZnVuY3Rpb24oKXtpZih0eXBlb2YgZXhvSnNQb3AxMDE9PT1cIm9iamVjdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhvSnNQb3AxMDEsXCJhZGRcIikpe3JldHVybn1wb3BNYWdpYy50b3A9c2VsZjtpZihwb3BNYWdpYy50b3AhPT1zZWxmKXt0cnl7aWYodG9wLmRvY3VtZW50LmxvY2F0aW9uLnRvU3RyaW5nKCkpe3BvcE1hZ2ljLnRvcD10b3B9fWNhdGNoKGVycil7fX1wb3BNYWdpYy5jb29raWVfbmFtZT1cInpvbmUtY2FwLVwiK3BvcE1hZ2ljLmNvbmZpZy5pZHpvbmU7aWYocG9wTWFnaWMuc2hvdWxkU2hvdygpKXt2YXIgeG1saHR0cD1uZXcgWE1MSHR0cFJlcXVlc3Q7eG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4bWxodHRwLnJlYWR5U3RhdGU9PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe3BvcE1hZ2ljLnZlbm9yX2xvYWRlZD10cnVlO2lmKHhtbGh0dHAuc3RhdHVzPT0yMDApe3BvcE1hZ2ljLnZlbm9yPXhtbGh0dHAucmVzcG9uc2VUZXh0fWVsc2V7cG9wTWFnaWMudmVub3I9XCIwXCJ9fX07dmFyIHByb3RvY29sPWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sIT09XCJodHRwczpcIiYmZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2whPT1cImh0dHA6XCI/XCJodHRwczpcIjpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbDt4bWxodHRwLm9wZW4oXCJHRVRcIixwcm90b2NvbCtcIlwvXC9cIitwb3BNYWdpYy5jb25maWcuc3luZGljYXRpb25faG9zdCtcIlwvdmVub3IucGhwXCIsdHJ1ZSk7dHJ5e3htbGh0dHAuc2VuZCgpfWNhdGNoKGVycm9yKXtwb3BNYWdpYy52ZW5vcl9sb2FkZWQ9dHJ1ZX19cG9wTWFnaWMuYnVpbGRVcmwoKTtwb3BNYWdpYy5icm93c2VyPXBvcE1hZ2ljLmJyb3dzZXJEZXRlY3Rvci5kZXRlY3RCcm93c2VyKG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKCFwb3BNYWdpYy5jb25maWcuY2hyb21lX2VuYWJsZWQmJihwb3BNYWdpYy5icm93c2VyLm5hbWU9PT1cImNocm9tZVwifHxwb3BNYWdpYy5icm93c2VyLm5hbWU9PT1cImNyaW9zXCIpKXtyZXR1cm59dmFyIHBvcE1ldGhvZD1wb3BNYWdpYy5nZXRQb3BNZXRob2QocG9wTWFnaWMuYnJvd3Nlcik7cG9wTWFnaWMuYWRkRXZlbnQoXCJjbGlja1wiLHBvcE1ldGhvZCl9LGdldFBvcE1ldGhvZDpmdW5jdGlvbihicm93c2VySW5mbyl7aWYocG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZvcmNlKXtyZXR1cm4gcG9wTWFnaWMubWV0aG9kcy5wb3B1cH1pZihwb3BNYWdpYy5jb25maWcucG9wdXBfZmFsbGJhY2smJmJyb3dzZXJJbmZvLm5hbWU9PT1cImNocm9tZVwiJiZicm93c2VySW5mby52ZXJzaW9uPj02OCYmIWJyb3dzZXJJbmZvLmlzTW9iaWxlKXtyZXR1cm4gcG9wTWFnaWMubWV0aG9kcy5wb3B1cH1pZihicm93c2VySW5mby5pc01vYmlsZSl7cmV0dXJuIHBvcE1hZ2ljLm1ldGhvZHMuZGVmYXVsdH1pZihicm93c2VySW5mby5uYW1lPT09XCJjaHJvbWVcIil7cmV0dXJuIHBvcE1hZ2ljLm1ldGhvZHMuY2hyb21lVGFifXJldHVybiBwb3BNYWdpYy5tZXRob2RzLmRlZmF1bHR9LGJ1aWxkVXJsOmZ1bmN0aW9uKCl7dmFyIHByb3RvY29sPWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sIT09XCJodHRwczpcIiYmZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2whPT1cImh0dHA6XCI/XCJodHRwczpcIjpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbDt2YXIgcD10b3A9PT1zZWxmP2RvY3VtZW50LlVSTDpkb2N1bWVudC5yZWZlcnJlcjt2YXIgc2NyaXB0X2luZm89e3R5cGU6XCJpbmxpbmVcIixuYW1lOlwicG9wTWFnaWNcIix2ZXI6dGhpcy52ZXJzaW9ufTt2YXIgZW5jb2RlU2NyaXB0SW5mbz1mdW5jdGlvbihzY3JpcHRfaW5mbyl7dmFyIHJlc3VsdD1zY3JpcHRfaW5mb1tcInR5cGVcIl0rXCJ8XCIrc2NyaXB0X2luZm9bXCJuYW1lXCJdK1wifFwiK3NjcmlwdF9pbmZvW1widmVyXCJdO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYnRvYShyZXN1bHQpKX07dmFyIGN1c3RvbVRhcmdldGluZ1BhcmFtcz1cIlwiO2lmKGN1c3RvbVRhcmdldGluZyYmT2JqZWN0LmtleXMoY3VzdG9tVGFyZ2V0aW5nKS5sZW5ndGgpe3ZhciBjdXN0b21UYXJnZXRpbmdLZXlzPXR5cGVvZiBjdXN0b21UYXJnZXRpbmc9PT1cIm9iamVjdFwiP09iamVjdC5rZXlzKGN1c3RvbVRhcmdldGluZyk6Y3VzdG9tVGFyZ2V0aW5nO3ZhciB2YWx1ZTtjdXN0b21UYXJnZXRpbmdLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih0eXBlb2YgY3VzdG9tVGFyZ2V0aW5nPT09XCJvYmplY3RcIil7dmFsdWU9Y3VzdG9tVGFyZ2V0aW5nW2tleV19ZWxzZSBpZihBcnJheS5pc0FycmF5KGN1c3RvbVRhcmdldGluZykpe3ZhbHVlPXNjcmlwdEVsLmdldEF0dHJpYnV0ZShrZXkpfXZhciBrZXlXaXRob3V0RXhvUHJlZml4PWtleS5yZXBsYWNlKFwiZGF0YS1leG8tXCIsXCJcIik7Y3VzdG9tVGFyZ2V0aW5nUGFyYW1zKz1gJiR7a2V5V2l0aG91dEV4b1ByZWZpeH09JHt2YWx1ZX1gfSl9dGhpcy51cmw9cHJvdG9jb2wrXCJcL1wvXCIrdGhpcy5jb25maWcuc3luZGljYXRpb25faG9zdCtcIlwvc3BsYXNoLnBocFwiK1wiP2NhdD1cIit0aGlzLmNvbmZpZy5jYXQrXCImaWR6b25lPVwiK3RoaXMuY29uZmlnLmlkem9uZStcIiZ0eXBlPThcIitcIiZwPVwiK2VuY29kZVVSSUNvbXBvbmVudChwKStcIiZzdWI9XCIrdGhpcy5jb25maWcuc3ViKyh0aGlzLmNvbmZpZy5zdWIyIT09XCJcIj9cIiZzdWIyPVwiK3RoaXMuY29uZmlnLnN1YjI6XCJcIikrKHRoaXMuY29uZmlnLnN1YjMhPT1cIlwiP1wiJnN1YjM9XCIrdGhpcy5jb25maWcuc3ViMzpcIlwiKStcIiZibG9jaz0xXCIrXCImZWw9XCIrdGhpcy5jb25maWcuZWwrXCImdGFncz1cIit0aGlzLmNvbmZpZy50YWdzK1wiJmNvb2tpZWNvbnNlbnQ9XCIrdGhpcy5jb25maWcuY29va2llY29uc2VudCtcIiZzY3JfaW5mbz1cIitlbmNvZGVTY3JpcHRJbmZvKHNjcmlwdF9pbmZvKStjdXN0b21UYXJnZXRpbmdQYXJhbXN9LGFkZEV2ZW50VG9FbGVtZW50OmZ1bmN0aW9uKG9iaix0eXBlLGZuKXtpZihvYmouYWRkRXZlbnRMaXN0ZW5lcil7b2JqLmFkZEV2ZW50TGlzdGVuZXIodHlwZSxmbixmYWxzZSl9ZWxzZSBpZihvYmouYXR0YWNoRXZlbnQpe29ialtcImVcIit0eXBlK2ZuXT1mbjtvYmpbdHlwZStmbl09ZnVuY3Rpb24oKXtvYmpbXCJlXCIrdHlwZStmbl0od2luZG93LmV2ZW50KX07b2JqLmF0dGFjaEV2ZW50KFwib25cIit0eXBlLG9ialt0eXBlK2ZuXSl9ZWxzZXtvYmpbXCJvblwiK3R5cGVdPW9ialtcImVcIit0eXBlK2ZuXX19LGFkZEV2ZW50OmZ1bmN0aW9uKHR5cGUsZm4pe3ZhciB0YXJnZXRFbGVtZW50cztpZihwb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2Q9PVwiM1wiKXt0YXJnZXRFbGVtZW50cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKTtmb3IoaT0wO2k8dGFyZ2V0RWxlbWVudHMubGVuZ3RoO2krKyl7cG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQodGFyZ2V0RWxlbWVudHNbaV0sdHlwZSxmbil9cmV0dXJufWlmKHBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZD09XCIyXCImJnBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZCE9XCJcIil7dmFyIHRyaWdnZXJfY2xhc3Nlczt2YXIgdHJpZ2dlcl9jbGFzc2VzX2ZpbmFsPVtdO2lmKHBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2NsYXNzLmluZGV4T2YoXCIsXCIpPT09LTEpe3RyaWdnZXJfY2xhc3Nlcz1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5zcGxpdChcIiBcIil9ZWxzZXt2YXIgdHJpbW1lZF90cmlnZ2VyX2NsYXNzZXM9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3MucmVwbGFjZShcL1xcc1wvZyxcIlwiKTt0cmlnZ2VyX2NsYXNzZXM9dHJpbW1lZF90cmlnZ2VyX2NsYXNzZXMuc3BsaXQoXCIsXCIpfWZvcih2YXIgaT0wO2k8dHJpZ2dlcl9jbGFzc2VzLmxlbmd0aDtpKyspe2lmKHRyaWdnZXJfY2xhc3Nlc1tpXSE9PVwiXCIpe3RyaWdnZXJfY2xhc3Nlc19maW5hbC5wdXNoKFwiLlwiK3RyaWdnZXJfY2xhc3Nlc1tpXSl9fXRhcmdldEVsZW1lbnRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodHJpZ2dlcl9jbGFzc2VzX2ZpbmFsLmpvaW4oXCIsIFwiKSk7Zm9yKGk9MDtpPHRhcmdldEVsZW1lbnRzLmxlbmd0aDtpKyspe3BvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KHRhcmdldEVsZW1lbnRzW2ldLHR5cGUsZm4pfXJldHVybn1wb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudChkb2N1bWVudCx0eXBlLGZuKX0sc2V0Q29va2llOmZ1bmN0aW9uKG5hbWUsdmFsdWUsdHRsX21pbnV0ZXMpe2lmKCF0aGlzLmNvbmZpZy5jb29raWVjb25zZW50KXtyZXR1cm4gZmFsc2V9dHRsX21pbnV0ZXM9cGFyc2VJbnQodHRsX21pbnV0ZXMsMTApO3ZhciBub3dfZGF0ZT1uZXcgRGF0ZTtub3dfZGF0ZS5zZXRNaW51dGVzKG5vd19kYXRlLmdldE1pbnV0ZXMoKStwYXJzZUludCh0dGxfbWludXRlcykpO3ZhciBjX3ZhbHVlPWVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkrXCI7IGV4cGlyZXM9XCIrbm93X2RhdGUudG9VVENTdHJpbmcoKStcIjsgcGF0aD1cL1wiO2RvY3VtZW50LmNvb2tpZT1uYW1lK1wiPVwiK2NfdmFsdWV9LGdldENvb2tpZTpmdW5jdGlvbihuYW1lKXtpZighdGhpcy5jb25maWcuY29va2llY29uc2VudCl7cmV0dXJuIGZhbHNlfXZhciBpLHgseSxjb29raWVzQXJyYXk9ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKTtmb3IoaT0wO2k8Y29va2llc0FycmF5Lmxlbmd0aDtpKyspe3g9Y29va2llc0FycmF5W2ldLnN1YnN0cigwLGNvb2tpZXNBcnJheVtpXS5pbmRleE9mKFwiPVwiKSk7eT1jb29raWVzQXJyYXlbaV0uc3Vic3RyKGNvb2tpZXNBcnJheVtpXS5pbmRleE9mKFwiPVwiKSsxKTt4PXgucmVwbGFjZShcL15cXHMrfFxccyskXC9nLFwiXCIpO2lmKHg9PT1uYW1lKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHkpfX19LHJhbmRTdHI6ZnVuY3Rpb24obGVuZ3RoLHBvc3NpYmxlQ2hhcnMpe3ZhciB0ZXh0PVwiXCI7dmFyIHBvc3NpYmxlPXBvc3NpYmxlQ2hhcnN8fFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3RleHQrPXBvc3NpYmxlLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqcG9zc2libGUubGVuZ3RoKSl9cmV0dXJuIHRleHR9LGlzVmFsaWRVc2VyRXZlbnQ6ZnVuY3Rpb24oZXZlbnQpe2lmKFwiaXNUcnVzdGVkXCJpbiBldmVudCYmZXZlbnQuaXNUcnVzdGVkJiZwb3BNYWdpYy5icm93c2VyLm5hbWUhPT1cImllXCImJnBvcE1hZ2ljLmJyb3dzZXIubmFtZSE9PVwic2FmYXJpXCIpe3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGV2ZW50LnNjcmVlblghPTAmJmV2ZW50LnNjcmVlblkhPTB9fSxpc1ZhbGlkSHJlZjpmdW5jdGlvbihocmVmKXtpZih0eXBlb2YgaHJlZj09PVwidW5kZWZpbmVkXCJ8fGhyZWY9PVwiXCIpe3JldHVybiBmYWxzZX12YXIgZW1wdHlfcmVmPVwvXFxzP2phdmFzY3JpcHRcXHM/OlwvaTtyZXR1cm4hZW1wdHlfcmVmLnRlc3QoaHJlZil9LGZpbmRMaW5rVG9PcGVuOmZ1bmN0aW9uKGNsaWNrZWRFbGVtZW50KXt2YXIgdGFyZ2V0PWNsaWNrZWRFbGVtZW50O3ZhciBsb2NhdGlvbj1mYWxzZTt0cnl7dmFyIGJyZWFrQ3RyPTA7d2hpbGUoYnJlYWtDdHI8MjAmJiF0YXJnZXQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSYmdGFyZ2V0IT09ZG9jdW1lbnQmJnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09XCJodG1sXCIpe3RhcmdldD10YXJnZXQucGFyZW50Tm9kZTticmVha0N0cisrfXZhciBlbGVtZW50VGFyZ2V0QXR0cj10YXJnZXQuZ2V0QXR0cmlidXRlKFwidGFyZ2V0XCIpO2lmKCFlbGVtZW50VGFyZ2V0QXR0cnx8ZWxlbWVudFRhcmdldEF0dHIuaW5kZXhPZihcIl9ibGFua1wiKT09PS0xKXtsb2NhdGlvbj10YXJnZXQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKX19Y2F0Y2goZXJyKXt9aWYoIXBvcE1hZ2ljLmlzVmFsaWRIcmVmKGxvY2F0aW9uKSl7bG9jYXRpb249ZmFsc2V9cmV0dXJuIGxvY2F0aW9ufHx3aW5kb3cubG9jYXRpb24uaHJlZn0sZ2V0UHVJZDpmdW5jdGlvbigpe3JldHVyblwib2tfXCIrTWF0aC5mbG9vcig4OTk5OTk5OSpNYXRoLnJhbmRvbSgpKzFlNyl9LGJyb3dzZXJEZXRlY3Rvcjp7YnJvd3NlckRlZmluaXRpb25zOltbXCJmaXJlZm94XCIsXC9GaXJlZm94XFxcLyhbMC05Ll0rKSg/Olxcc3wkKVwvXSxbXCJvcGVyYVwiLFwvT3BlcmFcXFwvKFswLTkuXSspKD86XFxzfCQpXC9dLFtcIm9wZXJhXCIsXC9PUFJcXFwvKFswLTkuXSspKDo/XFxzfCQpJFwvXSxbXCJlZGdlXCIsXC9FZGcoPzplfClcXFwvKFswLTkuX10rKVwvXSxbXCJpZVwiLFwvVHJpZGVudFxcXC83XFwuMC4qcnY6KFswLTkuXSspXFwpLipHZWNrbyRcL10sW1wiaWVcIixcL01TSUVcXHMoWzAtOS5dKyk7LipUcmlkZW50XFxcL1s0LTddLjBcL10sW1wiaWVcIixcL01TSUVcXHMoN1xcLjApXC9dLFtcInNhZmFyaVwiLFwvVmVyc2lvblxcXC8oWzAtOS5fXSspLipTYWZhcmlcL10sW1wiY2hyb21lXCIsXC8oPyFDaHJvbS4qRWRnKD86ZXwpKUNocm9tKD86ZXxpdW0pXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXSxbXCJjaHJvbWVcIixcLyg/IUNocm9tLipPUFIpQ2hyb20oPzplfGl1bSlcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dLFtcImJiMTBcIixcL0JCMTA7XFxzVG91Y2guKlZlcnNpb25cXFwvKFswLTkuXSspXC9dLFtcImFuZHJvaWRcIixcL0FuZHJvaWRcXHMoWzAtOS5dKylcL10sW1wiaW9zXCIsXC9WZXJzaW9uXFxcLyhbMC05Ll9dKykuKk1vYmlsZS4qU2FmYXJpLipcL10sW1wieWFuZGV4YnJvd3NlclwiLFwvWWFCcm93c2VyXFxcLyhbMC05Ll9dKylcL10sW1wiY3Jpb3NcIixcL0NyaU9TXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXV0sZGV0ZWN0QnJvd3NlcjpmdW5jdGlvbih1c2VyQWdlbnQpe3ZhciBpc01vYmlsZT11c2VyQWdlbnQubWF0Y2goXC9BbmRyb2lkfEJsYWNrQmVycnl8aVBob25lfGlQYWR8aVBvZHxPcGVyYSBNaW5pfElFTW9iaWxlfFdlYk9TfFdpbmRvd3MgUGhvbmVcL2kpO2Zvcih2YXIgaSBpbiB0aGlzLmJyb3dzZXJEZWZpbml0aW9ucyl7dmFyIGRlZmluaXRpb249dGhpcy5icm93c2VyRGVmaW5pdGlvbnNbaV07aWYoZGVmaW5pdGlvblsxXS50ZXN0KHVzZXJBZ2VudCkpe3ZhciBtYXRjaD1kZWZpbml0aW9uWzFdLmV4ZWModXNlckFnZW50KTt2YXIgdmVyc2lvbj1tYXRjaCYmbWF0Y2hbMV0uc3BsaXQoXC9bLl9dXC8pLnNsaWNlKDAsMyk7dmFyIHZlcnNpb25UYWlscz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh2ZXJzaW9uLDEpLmpvaW4oXCJcIil8fFwiMFwiO2lmKHZlcnNpb24mJnZlcnNpb24ubGVuZ3RoPDMpe0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHZlcnNpb24sdmVyc2lvbi5sZW5ndGg9PT0xP1swLDBdOlswXSl9cmV0dXJue25hbWU6ZGVmaW5pdGlvblswXSx2ZXJzaW9uOnZlcnNpb24uam9pbihcIi5cIiksdmVyc2lvbk51bWJlcjpwYXJzZUZsb2F0KHZlcnNpb25bMF0rXCIuXCIrdmVyc2lvblRhaWxzKSxpc01vYmlsZTppc01vYmlsZX19fXJldHVybntuYW1lOlwib3RoZXJcIix2ZXJzaW9uOlwiMS4wXCIsdmVyc2lvbk51bWJlcjoxLGlzTW9iaWxlOmlzTW9iaWxlfX19LG1ldGhvZHM6e2RlZmF1bHQ6ZnVuY3Rpb24odHJpZ2dlcmVkRXZlbnQpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQodHJpZ2dlcmVkRXZlbnQpKXJldHVybiB0cnVlO3ZhciBjbGlja2VkRWxlbWVudD10cmlnZ2VyZWRFdmVudC50YXJnZXR8fHRyaWdnZXJlZEV2ZW50LnNyY0VsZW1lbnQ7dmFyIGhyZWY9cG9wTWFnaWMuZmluZExpbmtUb09wZW4oY2xpY2tlZEVsZW1lbnQpO3dpbmRvdy5vcGVuKGhyZWYsXCJfYmxhbmtcIik7cG9wTWFnaWMuc2V0QXNPcGVuZWQoKTtwb3BNYWdpYy50b3AuZG9jdW1lbnQubG9jYXRpb249cG9wTWFnaWMudXJsO2lmKHR5cGVvZiB0cmlnZ2VyZWRFdmVudC5wcmV2ZW50RGVmYXVsdCE9PVwidW5kZWZpbmVkXCIpe3RyaWdnZXJlZEV2ZW50LnByZXZlbnREZWZhdWx0KCk7dHJpZ2dlcmVkRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9cmV0dXJuIHRydWV9LGNocm9tZVRhYjpmdW5jdGlvbihldmVudCl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChldmVudCkpcmV0dXJuIHRydWU7aWYodHlwZW9mIGV2ZW50LnByZXZlbnREZWZhdWx0IT09XCJ1bmRlZmluZWRcIil7ZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC5zdG9wUHJvcGFnYXRpb24oKX1lbHNle3JldHVybiB0cnVlfXZhciBhPXRvcC53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7dmFyIHRhcmdldD1ldmVudC50YXJnZXR8fGV2ZW50LnNyY0VsZW1lbnQ7YS5ocmVmPXBvcE1hZ2ljLmZpbmRMaW5rVG9PcGVuKHRhcmdldCk7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLmFwcGVuZENoaWxkKGEpO3ZhciBlPW5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIix7YnViYmxlczp0cnVlLGNhbmNlbGFibGU6dHJ1ZSx2aWV3OndpbmRvdyxzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAsY3RybEtleTp0cnVlLGFsdEtleTpmYWxzZSxzaGlmdEtleTpmYWxzZSxtZXRhS2V5OnRydWUsYnV0dG9uOjB9KTtlLnByZXZlbnREZWZhdWx0PXVuZGVmaW5lZDthLmRpc3BhdGNoRXZlbnQoZSk7YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO3dpbmRvdy5vcGVuKHBvcE1hZ2ljLnVybCxcIl9zZWxmXCIpO3BvcE1hZ2ljLnNldEFzT3BlbmVkKCl9LHBvcHVwOmZ1bmN0aW9uKHRyaWdnZXJlZEV2ZW50KXtpZighcG9wTWFnaWMuc2hvdWxkU2hvdygpfHwhcG9wTWFnaWMudmVub3JTaG91bGRTaG93KCl8fCFwb3BNYWdpYy5pc1ZhbGlkVXNlckV2ZW50KHRyaWdnZXJlZEV2ZW50KSlyZXR1cm4gdHJ1ZTt2YXIgd2luT3B0aW9ucz1cIlwiO2lmKHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mYWxsYmFjayYmIXBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mb3JjZSl7dmFyIGhlaWdodD1NYXRoLm1heChNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCouOCksMzAwKTt2YXIgd2lkdGg9TWF0aC5tYXgoTWF0aC5yb3VuZCh3aW5kb3cuaW5uZXJXaWR0aCouNyksMzAwKTt2YXIgdG9wPXdpbmRvdy5zY3JlZW5ZKzEwMDt2YXIgbGVmdD13aW5kb3cuc2NyZWVuWCsxMDA7d2luT3B0aW9ucz1cIm1lbnViYXI9MSxyZXNpemFibGU9MSx3aWR0aD1cIit3aWR0aCtcIixoZWlnaHQ9XCIraGVpZ2h0K1wiLHRvcD1cIit0b3ArXCIsbGVmdD1cIitsZWZ0fXZhciBwcmVQb3BVcmw9ZG9jdW1lbnQubG9jYXRpb24uaHJlZjt2YXIgcG9wV2luPXdpbmRvdy5vcGVuKHByZVBvcFVybCxwb3BNYWdpYy5nZXRQdUlkKCksd2luT3B0aW9ucyk7c2V0VGltZW91dChmdW5jdGlvbigpe3BvcFdpbi5sb2NhdGlvbi5ocmVmPXBvcE1hZ2ljLnVybH0sMjAwKTtwb3BNYWdpYy5zZXRBc09wZW5lZCgpO2lmKHR5cGVvZiB0cmlnZ2VyZWRFdmVudC5wcmV2ZW50RGVmYXVsdCE9PVwidW5kZWZpbmVkXCIpe3RyaWdnZXJlZEV2ZW50LnByZXZlbnREZWZhdWx0KCk7dHJpZ2dlcmVkRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9fX19OyAgICBwb3BNYWdpYy5pbml0KGFkQ29uZmlnKTtcclxufSkoKTtcclxuXHJcblxyXG48XC9zY3JpcHQ+In1d