Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNjctYzEteDItcHJlLXdhc2gtcmVjaGFyZ2UtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzY3IEMxIFgyIFBSRSBXQVNIIFJFQ0hBUkdFJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NDk4JywKICAgICAgcHJpY2U6ICcxOCw1MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdEw6l0YWNoYW50JywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICdMZXNzaXZlIGV0IHNvaW4gZHUgbGluZ2UnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDM2Ny1jMS14Mi1wcmUtd2FzaC1yZWNoYXJnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIlAzNjcgQzEgWDIgUFJFIFdBU0ggUkVDSEFSR0UiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJGUkFfUFJPRFVDVF9vMDAxeDAxXzEwNDQ5OCIsCiAgICAgICAgICAgICJwcmljZSI6ICIxOCw1MCDigqwiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTVEFOSE9NRSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICJMZXNzaXZlIGV0IHNvaW4gZHUgbGluZ2UiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibGF1bmRyeS1zdGFpbi1yZW1vdmVyIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM2Ny5qcGc/dj0xNzY2MTU0MjMxJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjcuanBnP3Y9MTc2NjE1NDIzMSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY3LmpwZz92PTE3NjYxNTQyMzEmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM2Ny5qcGc/dj0xNzY2MTU0MjMxJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjcuanBnP3Y9MTc2NjE1NDIzMSA5MDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjcuanBnP3Y9MTc2NjE1NDIzMSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMzY3IEMxIFgyIFBSRSBXQVNIIFJFQ0hBUkdFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTU5OTQ4NjY1IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTU5OTQ4NjY1IiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDI4MzUxMzUzIiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzY3LWMxLXgyLXByZS13YXNoLXJlY2hhcmdlIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk1OTk0ODY2NSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMjUlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk1OTk0ODY2NSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM2Ny1jMS14Mi1wcmUtd2FzaC1yZWNoYXJnZSIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTU5OTQ4NjY1IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTU5OTQ4NjY1IEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTU5OTQ4NjY1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvdCBkZSAyIGTDqXRhY2hhbnRzIGF2YW50LWxhdmFnZSAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNjcgQzEgWDIgUFJFIFdBU0ggUkVDSEFSR0UKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICBwcmljZS0tb24tc2FsZSIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMTgsNTAg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBwcm9tb3Rpb25uZWw8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMTgsNTAg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDI0LDgwIOKCrAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Qcml4IHVuaXRhaXJlPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGFyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzY3LWMxLXgyLXByZS13YXNoLXJlY2hhcmdlIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NTk5NDg2NjUiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NTk5NDg2NjUiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MjgzNTEzNTMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNjctYzEteDItcHJlLXdhc2gtcmVjaGFyZ2UiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG90IGRlIDIgZMOpdGFjaGFudHMgYXZhbnQtbGF2YWdlCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzY3IEMxIFgyIFBSRSBXQVNIIFJFQ0hBUkdFCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPsOpbGltaW5lIGVuIHByb2ZvbmRldXIgbGVzIHRhY2hlcyBsZXMgcGx1cyBpbmNydXN0w6llcywgZMOocyAzMCDCsEM8L3NwYW4+PC9saT48bGk+PHNwYW4+QWdpdCBlbiAxIMOgIDIgbWludXRlcyBzZXVsZW1lbnQsIHN1ciB0b3V0IHR5cGUgZGUgdGFjaGVzPC9zcGFuPjwvbGk+PGxpPjxzcGFuPlJlc3BlY3RlIGxlcyB0ZXh0aWxlcyBldCBsZXMgY291bGV1cnM8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AzNjctYzEteDItcHJlLXdhc2gtcmVjaGFyZ2UiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9JUiBMJiMzOTtPRkZSRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNjgtYzEteDItZGFpbHktd2FzaC10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1AzNjggQzEgWDIgREFJTFkgV0FTSCcsCiAgICAgIGl0ZW1faWQ6ICdGUkFfUFJPRFVDVF9vMDAxeDAxXzEwNDQ5OScsCiAgICAgIHByaWNlOiAnMjAsNTAg4oKsJywKICAgICAgaXRlbV9icmFuZDogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQmVzdCBwcm9kdWl0cyBuZXR0b3lhbnRzIG3DqW5hZ2VycycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDM2OC1jMS14Mi1kYWlseS13YXNoLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDM2OCBDMSBYMiBEQUlMWSBXQVNIIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ0OTkiLAogICAgICAgICAgICAicHJpY2UiOiAiMjAsNTAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiYmVzdC1ob3VzZWhvbGQtY2xlYW5lcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY4XzMzZjIwMmE3LWRhNWYtNDljYi1hMzljLWViMTFmNTAwZjllYS5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjhfMzNmMjAyYTctZGE1Zi00OWNiLWEzOWMtZWIxMWY1MDBmOWVhLmpwZz92PTE3NjYxNTczNjgmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM2OF8zM2YyMDJhNy1kYTVmLTQ5Y2ItYTM5Yy1lYjExZjUwMGY5ZWEuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY4XzMzZjIwMmE3LWRhNWYtNDljYi1hMzljLWViMTFmNTAwZjllYS5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjhfMzNmMjAyYTctZGE1Zi00OWNiLWEzOWMtZWIxMWY1MDBmOWVhLmpwZz92PTE3NjYxNTczNjggOTAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY4XzMzZjIwMmE3LWRhNWYtNDljYi1hMzljLWViMTFmNTAwZjllYS5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAzNjggQzEgWDIgREFJTFkgV0FTSCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2MDM0MTg4MSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2MDM0MTg4MSIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQyODc3NzMzNyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDM2OC1jMS14Mi1kYWlseS13YXNoIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MDM0MTg4MSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMjElCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MDM0MTg4MSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM2OC1jMS14Mi1kYWlseS13YXNoIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjAzNDE4ODEiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjAzNDE4ODEgQmFkZ2UtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjAzNDE4ODEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBsZXNzaXZlcyBibGFuYyBldCBjb3VsZXVycyBhdSBjaG9peCAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNjggQzEgWDIgREFJTFkgV0FTSAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAyMCw1MCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAyMCw1MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMjUsODAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNjgtYzEteDItZGFpbHktd2FzaCIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYwMzQxODgxIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYwMzQxODgxIiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDI4Nzc3MzM3IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzY4LWMxLXgyLWRhaWx5LXdhc2giPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBsZXNzaXZlcyBibGFuYyBldCBjb3VsZXVycyBhdSBjaG9peAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM2OCBDMSBYMiBEQUlMWSBXQVNICiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPlVuZSBsZXNzaXZlIGNvbmNlbnRyw6llIHBvdXIgbGUgbGluZ2UgYmxhbmMgZXQgZGUgY291bGV1cjwvc3Bhbj48L2xpPjxsaT48c3Bhbj5VbiBmb3JtYXQgMTUwMG1sIGZhbWlsaWFsIGV0IDUgcGFyZnVtcyBhdSBjaG9peCBkb250IHVuIHBhcmZ1bSBpbsOpZGl0IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4yMCUgZGUgcsOpZHVjdGlvbiBkw6hzIDIgYWNoZXTDqWVzIGF1IGNob2l4IDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNjgtYzEteDItZGFpbHktd2FzaCIgY2xhc3M9InF1aWNrLWFkZF9fbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVpY2stYWRkX19zdWJtaXQgYnV0dG9uIGJ1dHRvbi0tZnVsbC13aWR0aCBidXR0b24tLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUkVFUiBWT1RSRSBCT1gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNjktYzEteDItbGVzc2l2ZXMtZXhwZXJ0ZXMtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzY5IEMxIFgyIExFU1NJVkVTIEVYUEVSVEVTJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTAwJywKICAgICAgcHJpY2U6ICcyMSw5MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdMZSBtb2lzIGR1IGJsYW5jJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICdQcm9tbyBuZXR0b3lhbnRzIG3DqW5hZ2VycycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMzY5LWMxLXgyLWxlc3NpdmVzLWV4cGVydGVzLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDM2OSBDMSBYMiBMRVNTSVZFUyBFWFBFUlRFUyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTAwIiwKICAgICAgICAgICAgInByaWNlIjogIjIxLDkwIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIlByb21vIG5ldHRveWFudHMgbcOpbmFnZXJzIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImxlLW1vaXMtZHUtYmxhbmMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJz4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY5X2EyN2JhZjBhLTFhNzItNGZjYS1iMTEzLWJlZGQ2YzkzN2Y4MC5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjlfYTI3YmFmMGEtMWE3Mi00ZmNhLWIxMTMtYmVkZDZjOTM3ZjgwLmpwZz92PTE3NjYxNTczNjgmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM2OV9hMjdiYWYwYS0xYTcyLTRmY2EtYjExMy1iZWRkNmM5MzdmODAuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY5X2EyN2JhZjBhLTFhNzItNGZjYS1iMTEzLWJlZGQ2YzkzN2Y4MC5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNjlfYTI3YmFmMGEtMWE3Mi00ZmNhLWIxMTMtYmVkZDZjOTM3ZjgwLmpwZz92PTE3NjYxNTczNjggOTAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzY5X2EyN2JhZjBhLTFhNzItNGZjYS1iMTEzLWJlZGQ2YzkzN2Y4MC5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlAzNjkgQzEgWDIgTEVTU0lWRVMgRVhQRVJURVMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjA2MzY3OTMiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjA2MzY3OTMiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MjkwNzIyNDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNjktYzEteDItbGVzc2l2ZXMtZXhwZXJ0ZXMiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PHNwYW4gaWQ9IkJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwNjM2NzkzIiBjbGFzcz0iYmFkZ2UgYmFkZ2UtLWJvdHRvbS1sZWZ0IGNvbG9yLXNjaGVtZS1kNmE1YzAzNi02YzQ1LTQ3Y2YtYWRkNi1iYWRmZWZiNDVmZDkiPi0yMSUKPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5IT01FCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwNjM2NzkzIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMzY5LWMxLXgyLWxlc3NpdmVzLWV4cGVydGVzIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjA2MzY3OTMiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjA2MzY3OTMgQmFkZ2UtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjA2MzY3OTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBsZXNzaXZlcyBleHBlcnRlcyBhdSBjaG9peCAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNjkgQzEgWDIgTEVTU0lWRVMgRVhQRVJURVMKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICBwcmljZS0tb24tc2FsZSIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMjEsOTAg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBwcm9tb3Rpb25uZWw8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMjEsOTAg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDI3LDgwIOKCrAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Qcml4IHVuaXRhaXJlPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGFyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzY5LWMxLXgyLWxlc3NpdmVzLWV4cGVydGVzIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjA2MzY3OTMiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjA2MzY3OTMiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MjkwNzIyNDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNjktYzEteDItbGVzc2l2ZXMtZXhwZXJ0ZXMiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBsZXNzaXZlcyBleHBlcnRlcyBhdSBjaG9peAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM2OSBDMSBYMiBMRVNTSVZFUyBFWFBFUlRFUwogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5EZXMgbGVzc2l2ZXMgZXhwZXJ0ZXMgcG91ciBjaGFxdWUgdHlwZSBkZSBsaW5nZSA8L3NwYW4+PC9saT48bGk+PHNwYW4+RGVzIGZvcm11bGVzIGNvbmNlbnRyw6llcyBldCBlZmZpY2FjZSBkw6hzIDIwwrBDIDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4yMCUgZGUgcsOpZHVjdGlvbiBkw6hzIDIgYWNoZXTDqWVzIGF1IGNob2l4IDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNjktYzEteDItbGVzc2l2ZXMtZXhwZXJ0ZXMiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFRVIgVk9UUkUgQk9YCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzAtYzEteDEtcHVyZS1zb2Z0LXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDM3MCBDMSBYMSBQVVJFIFNPRlQnLAogICAgICBpdGVtX2lkOiAnRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDEnLAogICAgICBwcmljZTogJzEwLDkwIOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0xlIG1vaXMgZHUgYmxhbmMnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJ1Byb21vIG5ldHRveWFudHMgbcOpbmFnZXJzJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAzNzAtYzEteDEtcHVyZS1zb2Z0LXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDM3MCBDMSBYMSBQVVJFIFNPRlQiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJGUkFfUFJPRFVDVF9vMDAxeDAxXzEwNDUwMSIsCiAgICAgICAgICAgICJwcmljZSI6ICIxMCw5MCDigqwiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJTVEFOSE9NRSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICJQcm9tbyBuZXR0b3lhbnRzIG3DqW5hZ2VycyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJsZS1tb2lzLWR1LWJsYW5jIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3MF80MjZmZmNjZS1mNGRhLTQ3NmEtYmEyZC01MTNiMzM3ZjQ4ODkuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzcwXzQyNmZmY2NlLWY0ZGEtNDc2YS1iYTJkLTUxM2IzMzdmNDg4OS5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzBfNDI2ZmZjY2UtZjRkYS00NzZhLWJhMmQtNTEzYjMzN2Y0ODg5LmpwZz92PTE3NjYxNTczNjgmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3MF80MjZmZmNjZS1mNGRhLTQ3NmEtYmEyZC01MTNiMzM3ZjQ4ODkuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzcwXzQyNmZmY2NlLWY0ZGEtNDc2YS1iYTJkLTUxM2IzMzdmNDg4OS5qcGc/dj0xNzY2MTU3MzY4IDkwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3MF80MjZmZmNjZS1mNGRhLTQ3NmEtYmEyZC01MTNiMzM3ZjQ4ODkuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMzcwIEMxIFgxIFBVUkUgU09GVCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2MDg5ODkzNyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2MDg5ODkzNyIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQyOTMzNDM5MyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDM3MC1jMS14MS1wdXJlLXNvZnQiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PHNwYW4gaWQ9IkJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwODk4OTM3IiBjbGFzcz0iYmFkZ2UgYmFkZ2UtLWJvdHRvbS1sZWZ0IGNvbG9yLXNjaGVtZS1kNmE1YzAzNi02YzQ1LTQ3Y2YtYWRkNi1iYWRmZWZiNDVmZDkiPi0yMiUKPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5IT01FCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwODk4OTM3IiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMzcwLWMxLXgxLXB1cmUtc29mdCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwODk4OTM3IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwODk4OTM3IEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYwODk4OTM3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgYWRvdWNpc3NhbnQgYXUgY2hvaXggCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzcwIEMxIFgxIFBVUkUgU09GVAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAxMCw5MCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAxMCw5MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMTMsOTAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzAtYzEteDEtcHVyZS1zb2Z0IiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjA4OTg5MzciIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjA4OTg5MzciIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MjkzMzQzOTMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzAtYzEteDEtcHVyZS1zb2Z0Ij4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgYWRvdWNpc3NhbnQgYXUgY2hvaXgKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNzAgQzEgWDEgUFVSRSBTT0ZUCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPlVuIGFkb3VjaXNzYW50IGNvbmNlbnRyw6kgcXVpIHJlc3BlY3RlIGxlcyBmaWJyZXMgZXQgbWFpbnRpZW50IGxlcyBjb3VsZXVycyA8L3NwYW4+PC9saT48bGk+PHNwYW4+NCBwYXJmdW1zIGF1IGNob2l4IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4yMCUgZGUgcsOpZHVjdGlvbiBkw6hzIDEgYWNoZXTDqTwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzAtYzEteDEtcHVyZS1zb2Z0IiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUVSIFZPVFJFIEJPWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzEtYzEtZGVlcC1nZWwtc2NyYXRjaHktY2xvdGgtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzcxIEMxIERFRVAgR0VMICsgU0NSQVRDSFkgQ0xPVEgnLAogICAgICBpdGVtX2lkOiAnRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDMnLAogICAgICBwcmljZTogJzE4LDUwIOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0FjY2Vzc29pcmVzIG3DqW5hZ2VycycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDM3MS1jMS1kZWVwLWdlbC1zY3JhdGNoeS1jbG90aC10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIlAzNzEgQzEgREVFUCBHRUwgKyBTQ1JBVENIWSBDTE9USCIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTAzIiwKICAgICAgICAgICAgInByaWNlIjogIjE4LDUwIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIlByb21vIG5ldHRveWFudHMgbcOpbmFnZXJzIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImhvdXNlaG9sZC1hY2Nlc3NvcmllcyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzFfY2VjYjc1OGUtZmMxNy00NGJkLTkzNTItODJmNzg1NDE2NjE4LmpwZz92PTE3NjYxNTYwNzQmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfQ1NfUDM3MV9jZWNiNzU4ZS1mYzE3LTQ0YmQtOTM1Mi04MmY3ODU0MTY2MTguanBnP3Y9MTc2NjE1NjA3NCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9DU19QMzcxX2NlY2I3NThlLWZjMTctNDRiZC05MzUyLTgyZjc4NTQxNjYxOC5qcGc/dj0xNzY2MTU2MDc0JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzFfY2VjYjc1OGUtZmMxNy00NGJkLTkzNTItODJmNzg1NDE2NjE4LmpwZz92PTE3NjYxNTYwNzQmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfQ1NfUDM3MV9jZWNiNzU4ZS1mYzE3LTQ0YmQtOTM1Mi04MmY3ODU0MTY2MTguanBnP3Y9MTc2NjE1NjA3NCA5MDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzFfY2VjYjc1OGUtZmMxNy00NGJkLTkzNTItODJmNzg1NDE2NjE4LmpwZz92PTE3NjYxNTYwNzQmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iUDM3MSBDMSBERUVQIEdFTCArIFNDUkFUQ0hZIENMT1RIIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYxMDMwMDA5IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYxMDMwMDA5IiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDI5NDY1NDY1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzcxLWMxLWRlZXAtZ2VsLXNjcmF0Y2h5LWNsb3RoIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTAzMDAwOSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMjUlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTAzMDAwOSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3MS1jMS1kZWVwLWdlbC1zY3JhdGNoeS1jbG90aCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxMDMwMDA5IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxMDMwMDA5IEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxMDMwMDA5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1byBzYWxsZSBkZSBiYWlucyAtIEdlbCBkw6lzaW5jcnVzdGFudCArIG1pY3JvZmlicmUgZG91YmxlIHRleHR1cmUgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzcxIEMxIERFRVAgR0VMICsgU0NSQVRDSFkgQ0xPVEgKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICBwcmljZS0tb24tc2FsZSIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMTgsNTAg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBwcm9tb3Rpb25uZWw8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMTgsNTAg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDI0LDgwIOKCrAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Qcml4IHVuaXRhaXJlPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGFyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzcxLWMxLWRlZXAtZ2VsLXNjcmF0Y2h5LWNsb3RoIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjEwMzAwMDkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjEwMzAwMDkiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0Mjk0NjU0NjUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzEtYzEtZGVlcC1nZWwtc2NyYXRjaHktY2xvdGgiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVvIHNhbGxlIGRlIGJhaW5zIC0gR2VsIGTDqXNpbmNydXN0YW50ICsgbWljcm9maWJyZSBkb3VibGUgdGV4dHVyZQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM3MSBDMSBERUVQIEdFTCArIFNDUkFUQ0hZIENMT1RICiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPlVuZSBtaWNyb2ZpYnJlIGJpLXRleHR1cmUgcG91ciBncmF0dGVyLCBuZXR0b3llciwgYWJzb3JiZXIgZXQgZmFpcmUgYnJpbGxlciBsYSBzYWxsZSBkZSBiYWlucyA8L3NwYW4+PC9saT48bGk+PHNwYW4+TmV0dG95YW50IHNhbGxlIGRlIGJhaW5zIHF1aSBkw6lzaW5jcnVzdGUgbGEgc2FsZXTDqSBzYW5zIHJheWVyPC9zcGFuPjwvbGk+PGxpPjxzcGFuPjI1JSBkZSByw6lkdWN0aW9uIHBvdXIgbCdhY2hhdCBkdSBkdW8gPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMzcxLWMxLWRlZXAtZ2VsLXNjcmF0Y2h5LWNsb3RoIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZPSVIgTCYjMzk7T0ZGUkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzMtYzEtZHVvLXdjLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDM3MyBDMSBEVU8gV0MnLAogICAgICBpdGVtX2lkOiAnRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDUnLAogICAgICBwcmljZTogJzI1LDAwIOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0TDqXNpbmZlY3RhbnRzJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICdQcm9tbyBuZXR0b3lhbnRzIG3DqW5hZ2VycycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMzczLWMxLWR1by13Yy10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiIgZ3RtLWNhcmQtZGF0YT0nCiAgICAgICAgewogICAgICAgICAgICAiaXRlbV9uYW1lIjogIlAzNzMgQzEgRFVPIFdDIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDUiLAogICAgICAgICAgICAicHJpY2UiOiAiMjUsMDAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiZGlzaW5mZWN0YW50cyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzNfMzNkZDY4NzctZjU4OC00NjcyLTgyYTgtMzNmYWM5YjQ2MzY1LmpwZz92PTE3NjYxNTYwNzUmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfQ1NfUDM3M18zM2RkNjg3Ny1mNTg4LTQ2NzItODJhOC0zM2ZhYzliNDYzNjUuanBnP3Y9MTc2NjE1NjA3NSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9DU19QMzczXzMzZGQ2ODc3LWY1ODgtNDY3Mi04MmE4LTMzZmFjOWI0NjM2NS5qcGc/dj0xNzY2MTU2MDc1JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzNfMzNkZDY4NzctZjU4OC00NjcyLTgyYTgtMzNmYWM5YjQ2MzY1LmpwZz92PTE3NjYxNTYwNzUmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfQ1NfUDM3M18zM2RkNjg3Ny1mNTg4LTQ2NzItODJhOC0zM2ZhYzliNDYzNjUuanBnP3Y9MTc2NjE1NjA3NSA5MDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X0NTX1AzNzNfMzNkZDY4NzctZjU4OC00NjcyLTgyYTgtMzNmYWM5YjQ2MzY1LmpwZz92PTE3NjYxNTYwNzUmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iUDM3MyBDMSBEVU8gV0MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjEzMjQ5MjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjEzMjQ5MjEiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzAzMTc0MzMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzMtYzEtZHVvLXdjIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTMyNDkyMSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMzclCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTMyNDkyMSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3My1jMS1kdW8td2MiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTMyNDkyMSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTMyNDkyMSBCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTMyNDkyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdW8gV0MgLSBHZWwgZMOpc2luZmVjdGFudCArIGtpdCBicm9zc2UgV0MgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzczIEMxIERVTyBXQwogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAyNSwwMCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAyNSwwMCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMzksNzAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzMtYzEtZHVvLXdjIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjEzMjQ5MjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjEzMjQ5MjEiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzAzMTc0MzMiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzMtYzEtZHVvLXdjIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1byBXQyAtIEdlbCBkw6lzaW5mZWN0YW50ICsga2l0IGJyb3NzZSBXQwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM3MyBDMSBEVU8gV0MKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+TGUgbmV0dG95YW50IHN1cnB1aXNzYW50IHBvdXIgbGVzIFdDIHF1aSBuZXR0b2llLCBkw6lzaW5mZWN0ZSBldCBkw6l0YXJ0ZSA8L3NwYW4+PC9saT48bGk+PHNwYW4+TGEgYnJvc3NlIFdDIGluY3VydsOpZSBwb3VyIHVuIG1heGltdW0gZCdlZmZpY2FjaXTDqSBldCBzb24gYmFjIGQnw6lnb3V0dGFnZSBpbnTDqWdyw6k8L3NwYW4+PC9saT48bGk+PHNwYW4+MzUlIGRlIHLDqWR1Y3Rpb24gcG91ciBsJ2FjaGF0IGR1IGR1byA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzMtYzEtZHVvLXdjIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZPSVIgTCYjMzk7T0ZGUkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzQtYzEteDEtZGlzaC1nZWwtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzc0IEMxIFgxIERJU0ggR0VMJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTA2JywKICAgICAgcHJpY2U6ICcxMiw1MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdMZXMgUHJvZHVpdHMgU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJ1Byb21vIG5ldHRveWFudHMgbcOpbmFnZXJzJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAzNzQtYzEteDEtZGlzaC1nZWwtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMzc0IEMxIFgxIERJU0ggR0VMIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDYiLAogICAgICAgICAgICAicHJpY2UiOiAiMTIsNTAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibm9zLXByb2R1aXRzLXN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NF9hN2IyMDAxYS00NGI2LTQ3ZjgtODJmYS01Mzc2Nzk0N2M0OTAuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc0X2E3YjIwMDFhLTQ0YjYtNDdmOC04MmZhLTUzNzY3OTQ3YzQ5MC5qcGc/dj0xNzY2MTU3MzY4JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzRfYTdiMjAwMWEtNDRiNi00N2Y4LTgyZmEtNTM3Njc5NDdjNDkwLmpwZz92PTE3NjYxNTczNjgmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NF9hN2IyMDAxYS00NGI2LTQ3ZjgtODJmYS01Mzc2Nzk0N2M0OTAuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc0X2E3YjIwMDFhLTQ0YjYtNDdmOC04MmZhLTUzNzY3OTQ3YzQ5MC5qcGc/dj0xNzY2MTU3MzY4IDkwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NF9hN2IyMDAxYS00NGI2LTQ3ZjgtODJmYS01Mzc2Nzk0N2M0OTAuanBnP3Y9MTc2NjE1NzM2OCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMzc0IEMxIFgxIERJU0ggR0VMIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYxNTIxNTI5IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYxNTIxNTI5IiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDMwNzc2MTg1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzc0LWMxLXgxLWRpc2gtZ2VsIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTUyMTUyOSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMTYlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTUyMTUyOSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3NC1jMS14MS1kaXNoLWdlbCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxNTIxNTI5IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxNTIxNTI5IEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxNTIxNTI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgZ2VsIGNvbmNlbnRyw6kgbGF2ZS12YWlzc2VsbGUgYXUgY2hvaXggCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzc0IEMxIFgxIERJU0ggR0VMCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAgcHJpY2UtLW9uLXNhbGUiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBoYWJpdHVlbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDEyLDUwIOKCrAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggcHJvbW90aW9ubmVsPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDEyLDUwIOKCrAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBoYWJpdHVlbDwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAxNCw5MCDigqwKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJpeCB1bml0YWlyZTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BhciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48YSBocmVmPSIvcHJvZHVjdHMvcDM3NC1jMS14MS1kaXNoLWdlbCIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYxNTIxNTI5IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYxNTIxNTI5IiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDMwNzc2MTg1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzc0LWMxLXgxLWRpc2gtZ2VsIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgZ2VsIGNvbmNlbnRyw6kgbGF2ZS12YWlzc2VsbGUgYXUgY2hvaXgKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNzQgQzEgWDEgRElTSCBHRUwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+R2VsIGxhdmUtdmFpc3NlbGxlIDMgZW4gMSAgOiBMYXZhZ2UsIHJpbsOnYWdlIGV0IHNlbCByw6lnw6luw6lyYW50PC9zcGFuPjwvbGk+PGxpPjxzcGFuPjE1IG1sIHN1ZmZpc2VudCwgMiBwYXJmdW1zIGF1IGNob2l4IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4xNSUgZGUgcsOpZHVjdGlvbiBkw6hzIDEgYWNoZXTDqSA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzc0LWMxLXgxLWRpc2gtZ2VsIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUVSIFZPVFJFIEJPWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzUtYzEteDItZGlzaC1nZWwtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzc1IEMxIFgyIERJU0ggR0VMJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTA3JywKICAgICAgcHJpY2U6ICcyMiwzMCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdMZXMgUHJvZHVpdHMgU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJ1Byb21vIG5ldHRveWFudHMgbcOpbmFnZXJzJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAzNzUtYzEteDItZGlzaC1nZWwtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMzc1IEMxIFgyIERJU0ggR0VMIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDciLAogICAgICAgICAgICAicHJpY2UiOiAiMjIsMzAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibm9zLXByb2R1aXRzLXN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NV8yMGQ3ZDIzOC1mM2U2LTRiMzAtYjZkYS0xOGY0MmQ0MDVjYTcuanBnP3Y9MTc2NjE1NzM3NSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc1XzIwZDdkMjM4LWYzZTYtNGIzMC1iNmRhLTE4ZjQyZDQwNWNhNy5qcGc/dj0xNzY2MTU3Mzc1JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzVfMjBkN2QyMzgtZjNlNi00YjMwLWI2ZGEtMThmNDJkNDA1Y2E3LmpwZz92PTE3NjYxNTczNzUmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NV8yMGQ3ZDIzOC1mM2U2LTRiMzAtYjZkYS0xOGY0MmQ0MDVjYTcuanBnP3Y9MTc2NjE1NzM3NSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc1XzIwZDdkMjM4LWYzZTYtNGIzMC1iNmRhLTE4ZjQyZDQwNWNhNy5qcGc/dj0xNzY2MTU3Mzc1IDkwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3NV8yMGQ3ZDIzOC1mM2U2LTRiMzAtYjZkYS0xOGY0MmQ0MDVjYTcuanBnP3Y9MTc2NjE1NzM3NSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMzc1IEMxIFgyIERJU0ggR0VMIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYxODE2NDQxIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYxODE2NDQxIiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDMxMDcxMDk3IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzc1LWMxLXgyLWRpc2gtZ2VsIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTgxNjQ0MSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMjUlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MTgxNjQ0MSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3NS1jMS14Mi1kaXNoLWdlbCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxODE2NDQxIiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxODE2NDQxIEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYxODE2NDQxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgZ2VscyBjb25jZW50csOpcyBsYXZlLXZhaXNzZWxsZSBhdSBjaG9peCAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAzNzUgQzEgWDIgRElTSCBHRUwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICBwcmljZS0tb24tc2FsZSIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgMjIsMzAg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBwcm9tb3Rpb25uZWw8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgMjIsMzAg4oKsCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IGhhYml0dWVsPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIDI5LDgwIOKCrAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Qcml4IHVuaXRhaXJlPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGFyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzc1LWMxLXgyLWRpc2gtZ2VsIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjE4MTY0NDEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjE4MTY0NDEiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzEwNzEwOTciIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzUtYzEteDItZGlzaC1nZWwiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBnZWxzIGNvbmNlbnRyw6lzIGxhdmUtdmFpc3NlbGxlIGF1IGNob2l4CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzc1IEMxIFgyIERJU0ggR0VMCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkdlbCBsYXZlLXZhaXNzZWxsZSAzIGVuIDEgIDogTGF2YWdlLCByaW7Dp2FnZSBldCBzZWwgcsOpZ8OpbsOpcmFudDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4xNSBtbCBzdWZmaXNlbnQsIDIgcGFyZnVtcyBhdSBjaG9peCA8L3NwYW4+PC9saT48bGk+PHNwYW4+MjUlIGRlIHLDqWR1Y3Rpb24gZMOocyAyIGFjaGV0w6lzIGF1IGNob2l4ICA8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPjxhIGhyZWY9Ii9wcm9kdWN0cy9wMzc1LWMxLXgyLWRpc2gtZ2VsIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUVSIFZPVFJFIEJPWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzYtYzEteDEtc29pbi1tYXRlcmlhdXgtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMzc2IEMxIFgxIFNPSU4gTUFURVJJQVVYJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTA4JywKICAgICAgcHJpY2U6ICcxMCw1MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdMZXMgUHJvZHVpdHMgU3RhbmhvbWUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJ1Byb21vIG5ldHRveWFudHMgbcOpbmFnZXJzJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogICAgLy8gU2VuZCAiZmluaXNoZWQiIGV2ZW50CiAgICBpZiAoYXhQcm9kdWN0TGlzdC5sZW5ndGggPT09IHdpbmRvdy50aGVtZS5pdGVtc19jb3VudCkgewogICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2xpc3RfY29tcGxldGUnLAogICAgICAgIGF4UHJvZHVjdExpc3Q6IGF4UHJvZHVjdExpc3QsCiAgICAgIH0pOwogICAgfQogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXAzNzYtYzEteDEtc29pbi1tYXRlcmlhdXgtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMzc2IEMxIFgxIFNPSU4gTUFURVJJQVVYIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDgiLAogICAgICAgICAgICAicHJpY2UiOiAiMTAsNTAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAibm9zLXByb2R1aXRzLXN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3Nl8zNTMzNDUyYy0zYzlhLTQyNWUtODk1ZS00MTVlOWY0NGE0N2EuanBnP3Y9MTc2NjE1NzM3NCZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc2XzM1MzM0NTJjLTNjOWEtNDI1ZS04OTVlLTQxNWU5ZjQ0YTQ3YS5qcGc/dj0xNzY2MTU3Mzc0JndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzZfMzUzMzQ1MmMtM2M5YS00MjVlLTg5NWUtNDE1ZTlmNDRhNDdhLmpwZz92PTE3NjYxNTczNzQmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3Nl8zNTMzNDUyYy0zYzlhLTQyNWUtODk1ZS00MTVlOWY0NGE0N2EuanBnP3Y9MTc2NjE1NzM3NCZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc2XzM1MzM0NTJjLTNjOWEtNDI1ZS04OTVlLTQxNWU5ZjQ0YTQ3YS5qcGc/dj0xNzY2MTU3Mzc0IDkwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3Nl8zNTMzNDUyYy0zYzlhLTQyNWUtODk1ZS00MTVlOWY0NGE0N2EuanBnP3Y9MTc2NjE1NzM3NCZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMzc2IEMxIFgxIFNPSU4gTUFURVJJQVVYIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzE1MjczOTYyMjc1MTkzIiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjE1MjczOTYyMjc1MTkzIiBkYXRhLXZhcmlhbnQtaWQ9IjU2MzQ5NDMxNTI5ODQ5IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5mci9wcm9kdWN0cy9wMzc2LWMxLXgxLXNvaW4tbWF0ZXJpYXV4Ij4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjI3NTE5MyIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMTYlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjI3NTE5MyIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3Ni1jMS14MS1zb2luLW1hdGVyaWF1eCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYyMjc1MTkzIiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYyMjc1MTkzIEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYyMjc1MTkzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgc29pbiBtYXTDqXJpYXV4IGF1IGNob2l4IAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM3NiBDMSBYMSBTT0lOIE1BVEVSSUFVWAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAxMCw1MCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAxMCw1MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMTIsNTAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzYtYzEteDEtc29pbi1tYXRlcmlhdXgiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2MjI3NTE5MyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2MjI3NTE5MyIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQzMTUyOTg0OSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDM3Ni1jMS14MS1zb2luLW1hdGVyaWF1eCI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIHNvaW4gbWF0w6lyaWF1eCBhdSBjaG9peAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM3NiBDMSBYMSBTT0lOIE1BVEVSSUFVWAogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5EZXMgcHJvZHVpdHMgZXhwZXJ0cyBwb3VyIHZvcyBtYXTDqXJpYXV4IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj5JbHMgbmV0dG9pZW50IGV0IHByb3TDqGdlbnQgdm9zIG9iamV0cyBsZXMgcGx1cyBwcsOpY2lldXggPC9zcGFuPjwvbGk+PGxpPjxzcGFuPjE1JSBkZSByw6lkdWN0aW9uIGTDqHMgMSBhY2hldMOpIDwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0icXVpY2stYWRkIG5vLWpzLWhpZGRlbiI+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzYtYzEteDEtc29pbi1tYXRlcmlhdXgiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFRVIgVk9UUkUgQk9YCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAzNzctYzEteDItc29pbnMtbWF0ZXJpYXV4LXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDM3NyBDMSBYMiBTT0lOUyBNQVRFUklBVVgnLAogICAgICBpdGVtX2lkOiAnRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MDknLAogICAgICBwcmljZTogJzE4LDUwIOKCrCcsCiAgICAgIGl0ZW1fYnJhbmQ6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0xlcyBQcm9kdWl0cyBTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnUHJvbW8gbmV0dG95YW50cyBtw6luYWdlcnMnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDM3Ny1jMS14Mi1zb2lucy1tYXRlcmlhdXgtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMzc3IEMxIFgyIFNPSU5TIE1BVEVSSUFVWCIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTA5IiwKICAgICAgICAgICAgInByaWNlIjogIjE4LDUwIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIlByb21vIG5ldHRveWFudHMgbcOpbmFnZXJzIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogIm5vcy1wcm9kdWl0cy1zdGFuaG9tZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzdfYTFjM2RhN2QtOWY3Yy00MjU0LWJmOTEtYzZlOTdkMjYyYzE1LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3N19hMWMzZGE3ZC05ZjdjLTQyNTQtYmY5MS1jNmU5N2QyNjJjMTUuanBnP3Y9MTc2NjE1NzM3NCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMzc3X2ExYzNkYTdkLTlmN2MtNDI1NC1iZjkxLWM2ZTk3ZDI2MmMxNS5qcGc/dj0xNzY2MTU3Mzc0JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzdfYTFjM2RhN2QtOWY3Yy00MjU0LWJmOTEtYzZlOTdkMjYyYzE1LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDM3N19hMWMzZGE3ZC05ZjdjLTQyNTQtYmY5MS1jNmU5N2QyNjJjMTUuanBnP3Y9MTc2NjE1NzM3NCA5MDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AzNzdfYTFjM2RhN2QtOWY3Yy00MjU0LWJmOTEtYzZlOTdkMjYyYzE1LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iUDM3NyBDMSBYMiBTT0lOUyBNQVRFUklBVVgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjkwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjI2Njg0MDkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjI2Njg0MDkiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzE5MjMwNjUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzctYzEteDItc29pbnMtbWF0ZXJpYXV4Ij4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjxzcGFuIGlkPSJCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjY2ODQwOSIgY2xhc3M9ImJhZGdlIGJhZGdlLS1ib3R0b20tbGVmdCBjb2xvci1zY2hlbWUtZDZhNWMwMzYtNmM0NS00N2NmLWFkZDYtYmFkZmVmYjQ1ZmQ5Ij4tMjYlCjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOSE9NRQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjY2ODQwOSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvcDM3Ny1jMS14Mi1zb2lucy1tYXRlcmlhdXgiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjY2ODQwOSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjY2ODQwOSBCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2MjY2ODQwOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIHNvaW5zIG1hdMOpcmlhdXggYXUgY2hvaXggCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMzc3IEMxIFgyIFNPSU5TIE1BVEVSSUFVWAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAxOCw1MCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAxOCw1MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMjUsMDAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AzNzctYzEteDItc29pbnMtbWF0ZXJpYXV4IiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjI2Njg0MDkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjI2Njg0MDkiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzE5MjMwNjUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AzNzctYzEteDItc29pbnMtbWF0ZXJpYXV4Ij4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgc29pbnMgbWF0w6lyaWF1eCBhdSBjaG9peAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDM3NyBDMSBYMiBTT0lOUyBNQVRFUklBVVgKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+RGVzIHByb2R1aXRzIGV4cGVydHMgcG91ciB2b3MgbWF0w6lyaWF1eCA8L3NwYW4+PC9saT48bGk+PHNwYW4+SWxzIG5ldHRvaWVudCBldCBwcm90w6hnZW50IHZvcyBvYmpldHMgbGVzIHBsdXMgcHLDqWNpZXV4IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4yNSUgZGUgcsOpZHVjdGlvbiBkw6hzIDIgYWNoZXTDqXMgYXUgY2hvaXggPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj48YSBocmVmPSIvcHJvZHVjdHMvcDM3Ny1jMS14Mi1zb2lucy1tYXRlcmlhdXgiIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFRVIgVk9UUkUgQk9YCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAxMzMtYzEteDEtYWxsLXB1cnBvc2UtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdQMTMzIEMxIFgxIEFMTCBQVVJQT1NFJywKICAgICAgaXRlbV9pZDogJ0ZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTEwJywKICAgICAgcHJpY2U6ICcxMyw1MCDigqwnLAogICAgICBpdGVtX2JyYW5kOiAnU1RBTkhPTUUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdCZXN0IGh5Z2nDqG5lIGV0IHNvaW5zJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICdQcm9tbyBoeWdpw6huZSBldCBzb2lucycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICAgIC8vIFNlbmQgImZpbmlzaGVkIiBldmVudAogICAgaWYgKGF4UHJvZHVjdExpc3QubGVuZ3RoID09PSB3aW5kb3cudGhlbWUuaXRlbXNfY291bnQpIHsKICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9saXN0X2NvbXBsZXRlJywKICAgICAgICBheFByb2R1Y3RMaXN0OiBheFByb2R1Y3RMaXN0LAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1wMTMzLWMxLXgxLWFsbC1wdXJwb3NlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiIiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiUDEzMyBDMSBYMSBBTEwgUFVSUE9TRSIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTEwIiwKICAgICAgICAgICAgInByaWNlIjogIjEzLDUwIOKCrCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlNUQU5IT01FIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIlByb21vIGh5Z2nDqG5lIGV0IHNvaW5zIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImJlc3QtaHlnaWVuZS1hbmQtY2FyZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AxMzNfNmEzZDhiYmMtNjRjYy00ZmE5LTlkMTktOWNlNWY5ZDhjYTQ4LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDEzM182YTNkOGJiYy02NGNjLTRmYTktOWQxOS05Y2U1ZjlkOGNhNDguanBnP3Y9MTc2NjE1NzM3NCZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMTMzXzZhM2Q4YmJjLTY0Y2MtNGZhOS05ZDE5LTljZTVmOWQ4Y2E0OC5qcGc/dj0xNzY2MTU3Mzc0JndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AxMzNfNmEzZDhiYmMtNjRjYy00ZmE5LTlkMTktOWNlNWY5ZDhjYTQ4LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDEzM182YTNkOGJiYy02NGNjLTRmYTktOWQxOS05Y2U1ZjlkOGNhNDguanBnP3Y9MTc2NjE1NzM3NCA5MDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AxMzNfNmEzZDhiYmMtNjRjYy00ZmE5LTlkMTktOWNlNWY5ZDhjYTQ4LmpwZz92PTE3NjYxNTczNzQmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iUDEzMyBDMSBYMSBBTEwgUFVSUE9TRSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2Mjk5NjA4OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2Mjk5NjA4OSIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQzMjI1MDc0NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDEzMy1jMS14MS1hbGwtcHVycG9zZSI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48c3BhbiBpZD0iQmFkZ2UtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjI5OTYwODkiIGNsYXNzPSJiYWRnZSBiYWRnZS0tYm90dG9tLWxlZnQgY29sb3Itc2NoZW1lLWQ2YTVjMDM2LTZjNDUtNDdjZi1hZGQ2LWJhZGZlZmI0NWZkOSI+LTE1JQo8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBTkhPTUUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTUyNzM5NjI5OTYwODkiID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3AxMzMtYzEteDEtYWxsLXB1cnBvc2UiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2Mjk5NjA4OSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2Mjk5NjA4OSBCYWRnZS10ZW1wbGF0ZS0tMTcxNzc2MzA5NjU5NDVfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xNTI3Mzk2Mjk5NjA4OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIGNyw6htZSBoeWRyYXRhbnRlIGF1IGNob2l4IAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDEzMyBDMSBYMSBBTEwgUFVSUE9TRQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIHByaWNlLS1vbi1zYWxlIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAxMyw1MCDigqwKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5Qcml4IHByb21vdGlvbm5lbDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICAxMyw1MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMTUsOTAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AxMzMtYzEteDEtYWxsLXB1cnBvc2UiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2Mjk5NjA4OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2Mjk5NjA4OSIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQzMjI1MDc0NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDEzMy1jMS14MS1hbGwtcHVycG9zZSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIGNyw6htZSBoeWRyYXRhbnRlIGF1IGNob2l4CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBQMTMzIEMxIFgxIEFMTCBQVVJQT1NFCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPkNyw6htZSBub3Vycmlzc2FudGUgY29ycHMgZXQgdmlzYWdlIHBvdXIgdG91dGUgbGEgZmFtaWxsZTwvc3Bhbj48L2xpPjxsaT48c3Bhbj4yIHNlbnRldXJzIGF1IGNob2l4IDwvc3Bhbj48L2xpPjxsaT48c3Bhbj4xNSUgZGUgcsOpZHVjdGlvbiBkw6hzIDEgYWNoZXTDqWU8L3NwYW4+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9InF1aWNrLWFkZCBuby1qcy1oaWRkZW4iPjxhIGhyZWY9Ii9wcm9kdWN0cy9wMTMzLWMxLXgxLWFsbC1wdXJwb3NlIiBjbGFzcz0icXVpY2stYWRkX19saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWljay1hZGRfX3N1Ym1pdCBidXR0b24gYnV0dG9uLS1mdWxsLXdpZHRoIGJ1dHRvbi0tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUVSIFZPVFJFIEJPWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC90LzE0L2Fzc2V0cy9jb21wb25lbnQtcmF0aW5nLmNzcz92PTE1Nzc3MTg1NDU5MjEzNzEzNzg0MTcyMTA0ODY3MyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KPGxpbmsgaHJlZj0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvdC8xNC9hc3NldHMvY29tcG9uZW50LXZvbHVtZS1wcmljaW5nLmNzcz92PTU3NjUxNDYwOTU0MzA2Mzk1MzMxNzIxMDQ4NjcyIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgoKCgoKPHNjcmlwdD4KICAvLyBDcmVhdGUgUHJvZHVjdCBMaXN0IGFycmF5CiAgaWYgKCFheFByb2R1Y3RMaXN0KSB7CiAgICB2YXIgYXhQcm9kdWN0TGlzdCA9IFtdOwogIH0KCiAgLy8gQ3JlYXRlIFByb2R1Y3QgY2xpY2sgYXJyYXkKICBpZiAoIWF4SXRlbSkgewogICAgdmFyIGF4SXRlbSA9IFtdOwogIH0KCiAgaWYgKCFsaXN0TmFtZSkgewogICAgdmFyIGxpc3ROYW1lID0gJyc7CiAgfSBlbHNlIHsKICAgIGxpc3ROYW1lID0gJyc7CiAgfQoKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgLy8gT25jbGljayBldmVudAogICAgdmFyIHByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndG0tY2FyZC1wcm9kdWN0LXAxMzUtYzEteDEtZGVvLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnUDEzNSBDMSBYMSBERU8nLAogICAgICBpdGVtX2lkOiAnRlJBX1BST0RVQ1RfbzAwMXgwMV8xMDQ1MTInLAogICAgICBwcmljZTogJzgsNzAg4oKsJywKICAgICAgaXRlbV9icmFuZDogJ1NUQU5IT01FJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTVEFOSE9NRScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnQmVzdCBoeWdpw6huZSBldCBzb2lucycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnUHJvbW8gaHlnacOobmUgZXQgc29pbnMnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgICAvLyBTZW5kICJmaW5pc2hlZCIgZXZlbnQKICAgIGlmIChheFByb2R1Y3RMaXN0Lmxlbmd0aCA9PT0gd2luZG93LnRoZW1lLml0ZW1zX2NvdW50KSB7CiAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfbGlzdF9jb21wbGV0ZScsCiAgICAgICAgYXhQcm9kdWN0TGlzdDogYXhQcm9kdWN0TGlzdCwKICAgICAgfSk7CiAgICB9CiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtcDEzNS1jMS14MS1kZW8tdGVtcGxhdGUtLTE3MTc3NjMwOTY1OTQ1X182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJQMTM1IEMxIFgxIERFTyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIkZSQV9QUk9EVUNUX28wMDF4MDFfMTA0NTEyIiwKICAgICAgICAgICAgInByaWNlIjogIjgsNzAg4oKsIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiU1RBTkhPTUUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiUHJvbW8gaHlnacOobmUgZXQgc29pbnMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiYmVzdC1oeWdpZW5lLWFuZC1jYXJlIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICc+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDEzNV9lMjUwODE5Yy04ZTg3LTRlYjctOGVlYi01MTcyMjFmYTVjN2IuanBnP3Y9MTc2NjE1NzM4MSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMTM1X2UyNTA4MTljLThlODctNGViNy04ZWViLTUxNzIyMWZhNWM3Yi5qcGc/dj0xNzY2MTU3MzgxJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLmZyL2Nkbi9zaG9wL2ZpbGVzL0ZSQV9wcm9kdWN0X09TX1AxMzVfZTI1MDgxOWMtOGU4Ny00ZWI3LThlZWItNTE3MjIxZmE1YzdiLmpwZz92PTE3NjYxNTczODEmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDEzNV9lMjUwODE5Yy04ZTg3LTRlYjctOGVlYi01MTcyMjFmYTVjN2IuanBnP3Y9MTc2NjE1NzM4MSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5mci9jZG4vc2hvcC9maWxlcy9GUkFfcHJvZHVjdF9PU19QMTM1X2UyNTA4MTljLThlODctNGViNy04ZWViLTUxNzIyMWZhNWM3Yi5qcGc/dj0xNzY2MTU3MzgxIDkwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuZnIvY2RuL3Nob3AvZmlsZXMvRlJBX3Byb2R1Y3RfT1NfUDEzNV9lMjUwODE5Yy04ZTg3LTRlYjctOGVlYi01MTcyMjFmYTVjN2IuanBnP3Y9MTc2NjE1NzM4MSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJQMTM1IEMxIFgxIERFTyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI5MDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iOTAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xNTI3Mzk2MzQ1NDg0MSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxNTI3Mzk2MzQ1NDg0MSIgZGF0YS12YXJpYW50LWlkPSI1NjM0OTQzMjcwOTQ5NyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuZnIvcHJvZHVjdHMvcDEzNS1jMS14MS1kZW8iPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PHNwYW4gaWQ9IkJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYzNDU0ODQxIiBjbGFzcz0iYmFkZ2UgYmFkZ2UtLWJvdHRvbS1sZWZ0IGNvbG9yLXNjaGVtZS1kNmE1YzAzNi02YzQ1LTQ3Y2YtYWRkNi1iYWRmZWZiNDVmZDkiPi0yMCUKPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5IT01FCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYzNDU0ODQxIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9wMTM1LWMxLXgxLWRlbyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYzNDU0ODQxIiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYzNDU0ODQxIEJhZGdlLXRlbXBsYXRlLS0xNzE3NzYzMDk2NTk0NV9fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTE1MjczOTYzNDU0ODQxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgZMOpb2RvcmFudCBhdSBjaG9peCAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFAxMzUgQzEgWDEgREVPCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAgcHJpY2UtLW9uLXNhbGUiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBoYWJpdHVlbDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIDgsNzAg4oKsCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJpeCBwcm9tb3Rpb25uZWw8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgOCw3MCDigqwKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByaXggaGFiaXR1ZWw8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgMTAsOTAg4oKsCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByaXggdW5pdGFpcmU8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwYXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PGEgaHJlZj0iL3Byb2R1Y3RzL3AxMzUtYzEteDEtZGVvIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTUyNzM5NjM0NTQ4NDEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTUyNzM5NjM0NTQ4NDEiIGRhdGEtdmFyaWFudC1pZD0iNTYzNDk0MzI3MDk0OTciIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLmZyL3Byb2R1Y3RzL3AxMzUtYzEteDEtZGVvIj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgZMOpb2RvcmFudCBhdSBjaG9peAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgUDEzNSBDMSBYMSBERU8KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+RMOpb2RvcmFudHMgb3UgYW50aS10cmFuc2lyYW50cyBwcm90ZWN0aW9uIDQ4aCA8L3NwYW4+PC9saT48bGk+PHNwYW4+Rm9ybWF0IGJpbGxlIG91IGZvcm1hdCBzcHJheSA8L3NwYW4+PC9saT48bGk+PHNwYW4+MjAlIGRlIHLDqWR1Y3Rpb24gZMOocyAxIGFjaGV0w6kgPC9zcGFuPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJxdWljay1hZGQgbm8tanMtaGlkZGVuIj48YSBocmVmPSIvcHJvZHVjdHMvcDEzNS1jMS14MS1kZW8iIGNsYXNzPSJxdWljay1hZGRfX2xpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InF1aWNrLWFkZF9fc3VibWl0IGJ1dHRvbiBidXR0b24tLWZ1bGwtd2lkdGggYnV0dG9uLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFRVIgVk9UUkUgQk9YCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+