PD9waHAKCm5hbWVzcGFjZSBNb2R1bGVzXEZiclByYWxcSHR0cFxDb250cm9sbGVyczsKCnVzZSBNZW51Owp1c2UgTW9kdWxlc1xGYnJQcmFsXEVudGl0aWVzXEZiclByYWxTZXR0aW5nOwoKLyoqCiAqIERhdGEgaG9va3MgY2FsbGVkIGJ5IEFwcFxVdGlsc1xNb2R1bGVVdGlsOjpnZXRNb2R1bGVEYXRhKCkuCiAqLwpjbGFzcyBEYXRhQ29udHJvbGxlcgp7CiAgICAvKioKICAgICAqIEluamVjdCB0aGUgIlN1Ym1pdCB0byBGQlIiIFllcy9ObyBvcHRpb24gaW50byB0aGUgUE9TIC8gQWRkIFNhbGUgc2NyZWVuLgogICAgICogQ29yZSBjYWxscyB0aGlzIHZpYSBnZXRNb2R1bGVEYXRhKCdnZXRfcG9zX3NjcmVlbl92aWV3JywgLi4uKSBhbmQgQGluY2x1ZGVJZidzCiAgICAgKiB0aGUgcmV0dXJuZWQgdmlld19wYXRoIGluc2lkZSB0aGUgc2FsZSBmb3JtLiBSZXR1cm5zIFtdIChub3RoaW5nKSB3aGVuIEZCUiBpcyBvZmYuCiAgICAgKgogICAgICogQHBhcmFtICBhcnJheXxudWxsICAkZGF0YQogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bvc19zY3JlZW5fdmlldygkZGF0YSA9IG51bGwpCiAgICB7CiAgICAgICAgJGJ1c2luZXNzX2lkID0gcmVxdWVzdCgpLT5zZXNzaW9uKCktPmdldCgndXNlci5idXNpbmVzc19pZCcpOwogICAgICAgIGlmIChlbXB0eSgkYnVzaW5lc3NfaWQpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRzZXR0aW5nID0gRmJyUHJhbFNldHRpbmc6OmZvckJ1c2luZXNzKCRidXNpbmVzc19pZCk7CiAgICAgICAgaWYgKGVtcHR5KCRzZXR0aW5nKSB8fCBlbXB0eSgkc2V0dGluZy0+aXNfZW5hYmxlZCkpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3ZpZXdfcGF0aCcgPT4gJ2ZicnByYWw6OnBvc19jaGVja2JveCcsCiAgICAgICAgICAgICd2aWV3X2RhdGEnID0+IFsnYXV0bycgPT4gKGJvb2wpICRzZXR0aW5nLT5hdXRvX3N1Ym1pdF0sCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCB0aGUgRkJSIERpZ2l0YWwgSW52b2ljaW5nIHNlY3Rpb24gdG8gdGhlIGFkbWluIHNpZGViYXIuCiAgICAgKiBDb3JlIGNhbGxzIHRoaXMgdmlhIGdldE1vZHVsZURhdGEoJ21vZGlmeUFkbWluTWVudScpLgogICAgICoKICAgICAqIFNob3dzIG9ubHkgd2hlbiBGQlIgaXMgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgYnVzaW5lc3MsIGFuZCBvbmx5IHRvCiAgICAgKiBhZG1pbnMgLyBzdXBlcmFkbWluLiBUaGUgU2V0dGluZ3MgcGFnZSBpcyBpbnRlbnRpb25hbGx5IE5PVCBsaW5rZWQgaGVyZQogICAgICogKG9wZW4gaXQgZGlyZWN0bHkgYXQgL2Zici1wcmFsL3NldHRpbmdzKS4gUGVyLWJ1c2luZXNzOiBlYWNoIGJ1c2luZXNzCiAgICAgKiBzZWVzIHRoaXMgb25seSB3aGVuIGl0IGhhcyBlbmFibGVkIGl0cyBvd24gRkJSIGNvbmZpZ3VyYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RpZnlBZG1pbk1lbnUoKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRidXNpbmVzc19pZCA9IHNlc3Npb24oKS0+Z2V0KCd1c2VyLmJ1c2luZXNzX2lkJyk7CiAgICAgICAgICAgIGlmIChlbXB0eSgkYnVzaW5lc3NfaWQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzZXR0aW5nID0gRmJyUHJhbFNldHRpbmc6OmZvckJ1c2luZXNzKCRidXNpbmVzc19pZCk7CiAgICAgICAgICAgIGlmIChlbXB0eSgkc2V0dGluZykgfHwgZW1wdHkoJHNldHRpbmctPmlzX2VuYWJsZWQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpc19hZG1pbiA9IGF1dGgoKS0+Y2hlY2soKQogICAgICAgICAgICAgICAgJiYgKGF1dGgoKS0+dXNlcigpLT5oYXNSb2xlKCdBZG1pbiMnIC4gJGJ1c2luZXNzX2lkKSB8fCBhdXRoKCktPnVzZXIoKS0+Y2FuKCdzdXBlcmFkbWluJykpOwogICAgICAgICAgICBpZiAoISAkaXNfYWRtaW4pIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWVudTo6bW9kaWZ5KCdhZG1pbi1zaWRlYmFyLW1lbnUnLCBmdW5jdGlvbiAoJG1lbnUpIHsKICAgICAgICAgICAgICAgICRtZW51LT5kcm9wZG93bigKICAgICAgICAgICAgICAgICAgICAnRkJSIERpZ2l0YWwgSW52b2ljaW5nJywKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHN1YikgewogICAgICAgICAgICAgICAgICAgICAgICAkc3ViLT51cmwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwoJ2Zici1wcmFsL3Byb2R1Y3QtbWFwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdCBNYXBwaW5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYWN0aXZlJyA9PiByZXF1ZXN0KCktPnNlZ21lbnQoMSkgPT0gJ2Zici1wcmFsJyAmJiByZXF1ZXN0KCktPnNlZ21lbnQoMikgPT0gJ3Byb2R1Y3QtbWFwJ10KICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Yi0+dXJsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsKCdmYnItcHJhbC9pbnZvaWNlcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZCUiBTdWJtaXNzaW9ucycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FjdGl2ZScgPT4gcmVxdWVzdCgpLT5zZWdtZW50KDEpID09ICdmYnItcHJhbCcgJiYgcmVxdWVzdCgpLT5zZWdtZW50KDIpID09ICdpbnZvaWNlcyddCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICA4NiwKICAgICAgICAgICAgICAgICAgICBbJ2ljb24nID0+ICdmYXMgZmEtZmlsZS1pbnZvaWNlLWRvbGxhciddCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIFxMb2c6OmVycm9yKCdGYnJQcmFsIERhdGFDb250cm9sbGVyIG1vZGlmeUFkbWluTWVudSBlcnJvcjogJyAuICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KfQo= Not Found
404
Not Found