mockup-dallas.citizenservice-digital.com
Open in
urlscan Pro
185.210.101.112
Public Scan
Submitted URL: https://mockup-dallas.citizenservice-digital.com/
Effective URL: https://mockup-dallas.citizenservice-digital.com/Pages/default.aspx.html
Submission: On March 31 via automatic, source certstream-suspicious — Scanned from DE
Effective URL: https://mockup-dallas.citizenservice-digital.com/Pages/default.aspx.html
Submission: On March 31 via automatic, source certstream-suspicious — Scanned from DE
Form analysis
1 forms found in the DOMPOST /Pages/default.aspx.html
<form method="post" action="/Pages/default.aspx.html" id="aspnetForm" onsubmit="if (typeof(_spFormOnSubmitWrapper) != 'undefined') {return _spFormOnSubmitWrapper();} else {return true;}">
<input type="hidden" name="_wpcmWpid" id="_wpcmWpid" value="">
<input type="hidden" name="wpcmVal" id="wpcmVal" value="">
<input type="hidden" name="MSOWebPartPage_PostbackSource" id="MSOWebPartPage_PostbackSource" value="">
<input type="hidden" name="MSOTlPn_SelectedWpId" id="MSOTlPn_SelectedWpId" value="">
<input type="hidden" name="MSOTlPn_View" id="MSOTlPn_View" value="0">
<input type="hidden" name="MSOTlPn_ShowSettings" id="MSOTlPn_ShowSettings" value="False">
<input type="hidden" name="MSOGallery_SelectedLibrary" id="MSOGallery_SelectedLibrary" value="">
<input type="hidden" name="MSOGallery_FilterString" id="MSOGallery_FilterString" value="">
<input type="hidden" name="MSOTlPn_Button" id="MSOTlPn_Button" value="none">
<input type="hidden" name="__REQUESTDIGEST" id="__REQUESTDIGEST" value="0xBB96C03BDA283E57F778DCE8349C2D6B2636DB86085F7864571F9C6CA53B28D23F3D1E3546484AC8FF2B4E47C51FEECBECE9E1CB26AE56019B3552E4237E9B5B,31 Mar 2022 08:41:44 -0000">
<input type="hidden" name="MSOSPWebPartManager_DisplayModeName" id="MSOSPWebPartManager_DisplayModeName" value="Browse">
<input type="hidden" name="MSOSPWebPartManager_ExitingDesignMode" id="MSOSPWebPartManager_ExitingDesignMode" value="false">
<input type="hidden" name="MSOWebPartPage_Shared" id="MSOWebPartPage_Shared" value="">
<input type="hidden" name="MSOLayout_LayoutChanges" id="MSOLayout_LayoutChanges" value="">
<input type="hidden" name="MSOLayout_InDesignMode" id="MSOLayout_InDesignMode" value="">
<input type="hidden" name="_wpSelected" id="_wpSelected" value="">
<input type="hidden" name="_wzSelected" id="_wzSelected" value="">
<input type="hidden" name="MSOSPWebPartManager_OldDisplayModeName" id="MSOSPWebPartManager_OldDisplayModeName" value="Browse">
<input type="hidden" name="MSOSPWebPartManager_StartWebPartEditingName" id="MSOSPWebPartManager_StartWebPartEditingName" value="false">
<input type="hidden" name="MSOSPWebPartManager_EndWebPartEditing" id="MSOSPWebPartManager_EndWebPartEditing" value="false">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUBMA9kFgJmD2QWAgIBD2QWBAIBD2QWBgIRD2QWAmYPZBYCAgMPFgIeE1ByZXZpb3VzQ29udHJvbE1vZGULKYgBTWljcm9zb2Z0LlNoYXJlUG9pbnQuV2ViQ29udHJvbHMuU1BDb250cm9sTW9kZSwgTWljcm9zb2Z0LlNoYXJlUG9pbnQsIFZlcnNpb249MTUuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49NzFlOWJjZTExMWU5NDI5YwFkAiUPZBYCAgMPZBYCZg9kFgJmDzwrAAYAZAInD2QWAgIBD2QWCgUmZ184ZDc1ZDdhYV82YTA4XzRiYzlfODRjZl9iNjE4NTRhMGM0MjYPZBYCZg8WAh4JaW5uZXJodG1sBZYGPGxpPjxhIGhyZWY9J2h0dHBzOi8vZGFsbGFzY2l0eWhhbGwuY29tL1BhZ2VzL0Nvcm9uYS1WaXJ1cy5hc3B4JyB0YXJnZXQ9J19zZWxmJyBkYXRhLWdhLWFjdGlvbj0nQ2xpY2snIGRhdGEtZ2EtY2F0ZWdvcnk9J0ZlYXR1cmVkIE5ld3MnIGRhdGEtZ2EtbGFiZWw9J0ltcG9ydGFudCBJbmZvcm1hdGlvbiBSZWdhcmRpbmcgQ29yb25hdmlydXMgKENPVklELTE5KSc+SW1wb3J0YW50IEluZm9ybWF0aW9uIFJlZ2FyZGluZyBDb3JvbmF2aXJ1cyAoQ09WSUQtMTkpPC9hPjwvbGk+PGxpPjxhIGhyZWY9J2h0dHBzOi8vd3d3LmRhbGxhc2NpdHluZXdzLm5ldC9uZXctZGFsbGFzLWdvdi1kb21haW4tbmFtZScgdGFyZ2V0PSdfQmxhbmsnIGRhdGEtZ2EtYWN0aW9uPSdDbGljaycgZGF0YS1nYS1jYXRlZ29yeT0nRmVhdHVyZWQgTmV3cycgZGF0YS1nYS1sYWJlbD0nTmV3IERhbGxhcy5HT1YgRG9tYWluIE5hbWUnPk5ldyBEYWxsYXMuR09WIERvbWFpbiBOYW1lPC9hPjwvbGk+PGxpPjxhIGhyZWY9J2h0dHA6Ly93d3cuZGFsbGFzY2l0eW5ld3MubmV0L2NpdHktZGFsbGFzLWFkb3B0cy1uZXctZWNvbm9taWMtZGV2ZWxvcG1lbnQtcG9saWN5JyB0YXJnZXQ9J19zZWxmJyBkYXRhLWdhLWFjdGlvbj0nQ2xpY2snIGRhdGEtZ2EtY2F0ZWdvcnk9J0ZlYXR1cmVkIE5ld3MnIGRhdGEtZ2EtbGFiZWw9J0NpdHkgb2YgRGFsbGFzIGFkb3B0cyBuZXcgRWNvbm9taWMgRGV2ZWxvcG1lbnQgUG9saWN5Jz5DaXR5IG9mIERhbGxhcyBhZG9wdHMgbmV3IEVjb25vbWljIERldmVsb3BtZW50IFBvbGljeTwvYT48L2xpPmQFJmdfZWZiODMzMThfZTQyMF80NDU1X2FjOGZfZmUzOTRkOGMzYTMwD2QWAmYPFgQeBWNsYXNzBR9tcy1ydGUtZW1iZWRjb2RlIG1zLXJ0ZS1lbWJlZHdwHwEF1QI8aDMgc3R5bGU9ImJvcmRlci1ib3R0b206bm9uZTsgY29sb3I6IHJnYig2OCwgNjgsIDY4KSI+RkVBVFVSRUQgTkVXUzwvaDM+DQo8YSBocmVmPSJodHRwOi8vZGFsbGFzY2l0eW5ld3MubmV0IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbWQiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXI6IDFweCBzb2xpZCAjMDE2NmNlOyBjb2xvcjogIzAxNjZjZTsiIGRhdGEtZ2EtYWN0aW9uPSJFeHRlcm5hbCBMaW5rIiBkYXRhLWdhLWNhdGVnb3J5PSJGZWF0dXJlZCBOZXdzIiBkYXRhLWdhLWxhYmVsPSJSZWFkIE1vcmUiPlZpZXcgTW9yZSBOZXdzPC9hPmQFJmdfYzRmYTc3MGFfNjg4OF80ZmJiX2I2MDFfNDRhMTFmNDJjNzNmD2QWAmYPFgQfAgUfbXMtcnRlLWVtYmVkY29kZSBtcy1ydGUtZW1iZWR3cB8BBZCcATxzdHlsZT4NCi5zcG90bGlnaHQtdGl0bGV7DQogICAgZm9udC13ZWlnaHQ6Ym9sZDsNCiAgICBwYWRkaW5nOjVweDsNCn0NCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9InNwb3RsaWdodC10aXRsZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMiBzdHlsZT0iY29sb3I6IHJnYig2OCwgNjgsIDY4KSI+U1BPVExJR0hUPC9oMj4NCjwvZGl2Pg0KDQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICAoZnVuY3Rpb24gKCQpIHsNCg0KICAgICAgICAgICAgJC5mbi5zY3JvbGxib3ggPSBmdW5jdGlvbiAoY29uZmlnKSB7DQogICAgICAgICAgICAgICAgLy9kZWZhdWx0IGNvbmZpZw0KICAgICAgICAgICAgICAgIHZhciBkZWZDb25maWcgPSB7DQogICAgICAgICAgICAgICAgICAgIGxpbmVhcjogdHJ1ZSwgICAgICAgICAgLy8gU2Nyb2xsIG1ldGhvZA0KICAgICAgICAgICAgICAgICAgICBzdGFydERlbGF5OiAxMCwgICAgICAgICAgLy8gU3RhcnQgZGVsYXkgKGluIHNlY29uZHMpDQogICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxMCwgICAgICAgICAgICAgICAvLyBEZWxheSBhZnRlciBlYWNoIHNjcm9sbCBldmVudCAoaW4gc2Vjb25kcykNCiAgICAgICAgICAgICAgICAgICAgc3RlcDogMjUsICAgICAgICAgICAgICAgIC8vIERpc3RhbmNlIG9mIGVhY2ggc2luZ2xlIHN0ZXAgKGluIHBpeGVscykNCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDI1LCAgICAgICAgICAgICAgLy8gRGVsYXkgYWZ0ZXIgZWFjaCBzaW5nbGUgc3RlcCAoaW4gbWlsbGlzZWNvbmRzKQ0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2hJdGVtczogMSwgICAgICAgICAvLyBJdGVtcyB0byBzd2l0Y2ggYWZ0ZXIgZWFjaCBzY3JvbGwgZXZlbnQNCiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAndmVydGljYWwnLA0KICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogJ2F1dG8nLA0KICAgICAgICAgICAgICAgICAgICBhdXRvUGxheTogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgIG9uTW91c2VPdmVyUGF1c2U6IHRydWUsDQogICAgICAgICAgICAgICAgICAgIHBhdXNlZDogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgIHF1ZXVlOiBudWxsLA0KICAgICAgICAgICAgICAgICAgICBsaXN0RWxlbWVudDogJ3VsJywNCiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW1FbGVtZW50OiAnbGknLA0KICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZUxvb3A6IHRydWUsICAgICAvLyBJbmZpbml0ZSBsb29wIG9yIG5vdA0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2hBbW91bnQ6IDAsICAgICAgICAvLyBHaXZlIGEgbnVtYmVyIGlmIHlvdSBkb24ndCB3YW50IHRvIGhhdmUgaW5maW5pdGUgbG9vcA0KICAgICAgICAgICAgICAgICAgICBhZnRlckZvcndhcmQ6IG51bGwsICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBhZnRlciBlYWNoIGZvcndhcmQgYWN0aW9uDQogICAgICAgICAgICAgICAgICAgIGFmdGVyQmFja3dhcmQ6IG51bGwsICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYmFja3dhcmQgYWN0aW9uDQogICAgICAgICAgICAgICAgICAgIHRyaWdnZXJTdGFja2FibGU6IGZhbHNlIC8vIEFsbG93IHRyaWdnZXJzIHdoZW4gYWN0aW9uIGlzIG5vdCBmaW5pc2ggeWV0DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICBjb25maWcgPSAkLmV4dGVuZChkZWZDb25maWcsIGNvbmZpZyk7DQogICAgICAgICAgICAgICAgY29uZmlnLnNjcm9sbE9mZnNldCA9IGNvbmZpZy5kaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgPyAnc2Nyb2xsVG9wJyA6ICdzY3JvbGxMZWZ0JzsNCiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnF1ZXVlKSB7DQogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5xdWV1ZSA9ICQoJyMnICsgY29uZmlnLnF1ZXVlKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQodGhpcyksDQogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJVTCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0lkID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGxJZCA9IG51bGwsDQogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZWQgPSBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VTdGFjaywNCiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t3YXJkLA0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0Q2xvY2ssDQogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxGb3J3YXJkLA0KICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQmFja3dhcmQsDQogICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkSG92ZXIsDQogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUhvdmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoQ291bnQgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZFRyaWdnZXJJbmRleCA9IDA7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5vbk1vdXNlT3ZlclBhdXNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuYmluZCgnbW91c2VvdmVyJywgZnVuY3Rpb24gKCkgeyBwYXVzZWQgPSB0cnVlOyB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iaW5kKCdtb3VzZW91dCcsIGZ1bmN0aW9uICgpIHsgcGF1c2VkID0gZmFsc2U7IH0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclVMID0gY29udGFpbmVyLmNoaWxkcmVuKGNvbmZpZy5saXN0RWxlbWVudCArICc6Zmlyc3QtY2hpbGQnKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBpbml0IGRlZmF1bHQgc3dpdGNoQW1vdW50DQogICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuaW5maW5pdGVMb29wID09PSBmYWxzZSAmJiBjb25maWcuc3dpdGNoQW1vdW50ID09PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3dpdGNoQW1vdW50ID0gY29udGFpbmVyVUwuY2hpbGRyZW4oKS5sZW5ndGg7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBzY3JvbGxGb3J3YXJkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhdXNlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJMaSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Njcm9sbE9mZnNldCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxEaXN0YW5jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVTdGVwOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdXJMaSA9IGNvbnRhaW5lclVMLmNoaWxkcmVuKGNvbmZpZy5saXN0SXRlbUVsZW1lbnQgKyAnOmZpcnN0LWNoaWxkJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpc3RhbmNlID0gY29uZmlnLmRpc3RhbmNlICE9PSAnYXV0bycgPyBjb25maWcuZGlzdGFuY2UgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGlyZWN0aW9uID09PSAndmVydGljYWwnID8gY3VyTGkub3V0ZXJIZWlnaHQodHJ1ZSkgOiBjdXJMaS5vdXRlcldpZHRoKHRydWUpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmxpbmVhcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVN0ZXAgPSBNYXRoLm1heCgzLCBwYXJzZUludCgoc2Nyb2xsRGlzdGFuY2UgLSBjb250YWluZXJbMF1bY29uZmlnLnNjcm9sbE9mZnNldF0pICogMC4zLCAxMCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Njcm9sbE9mZnNldCA9IE1hdGgubWluKGNvbnRhaW5lclswXVtjb25maWcuc2Nyb2xsT2Zmc2V0XSArIHRoZVN0ZXAsIDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTY3JvbGxPZmZzZXQgPSBNYXRoLm1pbihjb250YWluZXJbMF1bY29uZmlnLnNjcm9sbE9mZnNldF0gKyBjb25maWcuc3RlcCwgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJbMF1bY29uZmlnLnNjcm9sbE9mZnNldF0gPSBuZXdTY3JvbGxPZmZzZXQ7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTY3JvbGxPZmZzZXQgPj0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuc3dpdGNoSXRlbXM7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnF1ZXVlICYmIGNvbmZpZy5xdWV1ZS5maW5kKGNvbmZpZy5saXN0SXRlbUVsZW1lbnQpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclVMLmFwcGVuZChjb25maWcucXVldWUuZmluZChjb25maWcubGlzdEl0ZW1FbGVtZW50KVswXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJVTC5jaGlsZHJlbihjb25maWcubGlzdEl0ZW1FbGVtZW50ICsgJzpmaXJzdC1jaGlsZCcpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVUwuYXBwZW5kKGNvbnRhaW5lclVMLmNoaWxkcmVuKGNvbmZpZy5saXN0SXRlbUVsZW1lbnQgKyAnOmZpcnN0LWNoaWxkJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc3dpdGNoQ291bnQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclswXVtjb25maWcuc2Nyb2xsT2Zmc2V0XSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzY3JvbGxpbmdJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nSWQgPSBudWxsOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihjb25maWcuYWZ0ZXJGb3J3YXJkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWZ0ZXJGb3J3YXJkLmNhbGwoY29udGFpbmVyLCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hDb3VudDogc3dpdGNoQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZDogY29udGFpbmVyVUwuY2hpbGRyZW4oY29uZmlnLmxpc3RJdGVtRWxlbWVudCArICc6Zmlyc3QtY2hpbGQnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50cmlnZ2VyU3RhY2thYmxlICYmIHN0YWNrZWRUcmlnZ2VySW5kZXggIT09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZVN0YWNrKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5pbmZpbml0ZUxvb3AgPT09IGZhbHNlICYmIHN3aXRjaENvdW50ID49IGNvbmZpZy5zd2l0Y2hBbW91bnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmF1dG9QbGF5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGxJZCA9IHNldFRpbWVvdXQoZm9yd2FyZCwgY29uZmlnLmRlbGF5ICogMTAwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIC8vIEJhY2t3YXJkDQogICAgICAgICAgICAgICAgICAgIC8vIDEuIElmIGZvcndhcmRpbmcsIHRoZW4gcmV2ZXJzZQ0KICAgICAgICAgICAgICAgICAgICAvLyAyLiBJZiBzdG9waW5nLCB0aGVuIGJhY2t3YXJkIG9uY2UNCiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQmFja3dhcmQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF1c2VkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1ckxpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2Nyb2xsT2Zmc2V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbERpc3RhbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVN0ZXA7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXQNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJbMF1bY29uZmlnLnNjcm9sbE9mZnNldF0gPT09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29uZmlnLnN3aXRjaEl0ZW1zOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVUwuY2hpbGRyZW4oY29uZmlnLmxpc3RJdGVtRWxlbWVudCArICc6bGFzdC1jaGlsZCcpLmluc2VydEJlZm9yZShjb250YWluZXJVTC5jaGlsZHJlbihjb25maWcubGlzdEl0ZW1FbGVtZW50ICsgJzpmaXJzdC1jaGlsZCcpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJMaSA9IGNvbnRhaW5lclVMLmNoaWxkcmVuKGNvbmZpZy5saXN0SXRlbUVsZW1lbnQgKyAnOmZpcnN0LWNoaWxkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRGlzdGFuY2UgPSBjb25maWcuZGlzdGFuY2UgIT09ICdhdXRvJyA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kaXN0YW5jZSA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgPyBjdXJMaS5oZWlnaHQoKSA6IGN1ckxpLndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyWzBdW2NvbmZpZy5zY3JvbGxPZmZzZXRdID0gc2Nyb2xsRGlzdGFuY2U7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5ldyBvZmZzZXQNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmxpbmVhcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVN0ZXAgPSBNYXRoLm1heCgzLCBwYXJzZUludChjb250YWluZXJbMF1bY29uZmlnLnNjcm9sbE9mZnNldF0gKiAwLjMsIDEwKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2Nyb2xsT2Zmc2V0ID0gTWF0aC5tYXgoY29udGFpbmVyWzBdW2NvbmZpZy5zY3JvbGxPZmZzZXRdIC0gdGhlU3RlcCwgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Njcm9sbE9mZnNldCA9IE1hdGgubWF4KGNvbnRhaW5lclswXVtjb25maWcuc2Nyb2xsT2Zmc2V0XSAtIGNvbmZpZy5zdGVwLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclswXVtjb25maWcuc2Nyb2xsT2Zmc2V0XSA9IG5ld1Njcm9sbE9mZnNldDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1Njcm9sbE9mZnNldCA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tc3dpdGNoQ291bnQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzY3JvbGxpbmdJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nSWQgPSBudWxsOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihjb25maWcuYWZ0ZXJCYWNrd2FyZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFmdGVyQmFja3dhcmQuY2FsbChjb250YWluZXIsIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaENvdW50OiBzd2l0Y2hDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkOiBjb250YWluZXJVTC5jaGlsZHJlbihjb25maWcubGlzdEl0ZW1FbGVtZW50ICsgJzpmaXJzdC1jaGlsZCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnRyaWdnZXJTdGFja2FibGUgJiYgc3RhY2tlZFRyaWdnZXJJbmRleCAhPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlU3RhY2soKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmF1dG9QbGF5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGxJZCA9IHNldFRpbWVvdXQoZm9yd2FyZCwgY29uZmlnLmRlbGF5ICogMTAwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIHJlbGVhc2VTdGFjayA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFja2VkVHJpZ2dlckluZGV4ID09PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrZWRUcmlnZ2VySW5kZXggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZFRyaWdnZXJJbmRleC0tOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGxJZCA9IHNldFRpbWVvdXQoZm9yd2FyZCwgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrZWRUcmlnZ2VySW5kZXgrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2Nyb2xsSWQgPSBzZXRUaW1lb3V0KGJhY2t3YXJkLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgICAgICBmb3J3YXJkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzY3JvbGxpbmdJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdJZCA9IHNldEludGVydmFsKHNjcm9sbEZvcndhcmQsIGNvbmZpZy5zcGVlZCk7DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHNjcm9sbGluZ0lkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0lkID0gc2V0SW50ZXJ2YWwoc2Nyb2xsQmFja3dhcmQsIGNvbmZpZy5zcGVlZCk7DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBtb3VzZW92ZXIgZnVuY3Rpb24uDQogICAgICAgICAgICAgICAgICAgIGZvcndhcmRIb3ZlciA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hdXRvUGxheSA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoc2Nyb2xsaW5nSWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nSWQgPSBzZXRJbnRlcnZhbChzY3JvbGxGb3J3YXJkLCBjb25maWcuc3BlZWQpOw0KICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICBwYXVzZUhvdmVyID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgICAgICByZXNldENsb2NrID0gZnVuY3Rpb24gKGRlbGF5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkgPSBkZWxheSB8fCBjb25maWcuZGVsYXk7DQogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobmV4dFNjcm9sbElkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuYXV0b1BsYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2Nyb2xsSWQgPSBzZXRUaW1lb3V0KGZvcndhcmQsIGNvbmZpZy5kZWxheSAqIDEwMDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuYXV0b1BsYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGxJZCA9IHNldFRpbWVvdXQoZm9yd2FyZCwgY29uZmlnLnN0YXJ0RGVsYXkgKiAxMDAwKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIGJpbmQgZXZlbnRzIGZvciBjb250YWluZXINCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmJpbmQoJ3Jlc2V0Q2xvY2snLCBmdW5jdGlvbiAoZGVsYXkpIHsgcmVzZXRDbG9jayhkZWxheSk7IH0pOw0KICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuYmluZCgnZm9yd2FyZCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHJpZ2dlclN0YWNrYWJsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdJZCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkVHJpZ2dlckluZGV4Kys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG5leHRTY3JvbGxJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmJpbmQoJ2JhY2t3YXJkJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50cmlnZ2VyU3RhY2thYmxlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGluZ0lkICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrZWRUcmlnZ2VySW5kZXgtLTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG5leHRTY3JvbGxJZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iaW5kKCdwYXVzZUhvdmVyJywgZnVuY3Rpb24gKCkgeyBwYXVzZUhvdmVyKCk7IH0pOw0KICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuYmluZCgnZm9yd2FyZEhvdmVyJywgZnVuY3Rpb24gKCkgeyBmb3J3YXJkSG92ZXIoKTsgfSk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iaW5kKCdzcGVlZFVwJywgZnVuY3Rpb24gKHNwZWVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BlZWQgPT09ICd1bmRlZmluZWQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQgPSBNYXRoLm1heCgxLCBwYXJzZUludChjb25maWcuc3BlZWQgLyAyLCAxMCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNwZWVkID0gc3BlZWQ7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iaW5kKCdzcGVlZERvd24nLCBmdW5jdGlvbiAoc3BlZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZCA9IGNvbmZpZy5zcGVlZCAqIDI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3BlZWQgPSBzcGVlZDsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmJpbmQoJ3VwZGF0ZUNvbmZpZycsIGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSAkLmV4dGVuZChjb25maWcsIG9wdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfTsNCg0KICAgICAgICB9KGpRdWVyeSkpOw0KICAgIDwvc2NyaXB0Pg0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAgICAgJChmdW5jdGlvbiAoKSB7DQoNCiAgICAgICAgICAgICQoJyNwaS10aWxlcycpLnNjcm9sbGJveCh7DQogICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnaCcsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICQoJyNwaS10aWxlcy1iYWNrd2FyZCcpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAkKCcjcGktdGlsZXMnKS50cmlnZ2VyKCdiYWNrd2FyZCcpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCcjcGktdGlsZXMtZm9yd2FyZCcpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAkKCcjcGktdGlsZXMnKS50cmlnZ2VyKCdmb3J3YXJkJyk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgPC9zY3JpcHQ+DQoNCg0KPHNjcmlwdCBzcmM9Ii9TdHlsZSUyMExpYnJhcnkvanMvYW5ndWxhci5taW4uanMiPjwvc2NyaXB0Pg0KDQo8c2NyaXB0Pg0KICAgIA0KICAgICAgIHZhciBteUFuZ0FwcCA9IGFuZ3VsYXIubW9kdWxlKCdBbmdBcHBTcG90TGlnaHQnLCBbXSk7DQogICAgICAgbXlBbmdBcHAuY29udHJvbGxlcignYW5nU3BvdExpZ2h0Q29udHJvbGxlcicsIGZ1bmN0aW9uICgkc2NvcGUsICRodHRwKSB7DQogICAgICAgICAgIHZhciB0b2RheSA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICRodHRwKHsNCiAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsDQogICAgICAgICAgICAgICB1cmw6IHJlbW92ZUhUVFBmcm9tVVJMKF9zcFBhZ2VDb250ZXh0SW5mby53ZWJBYnNvbHV0ZVVybCkgKyAiL19hcGkvd2ViL2xpc3RzL2dldEJ5VGl0bGUoJ1Nwb3RMaWdodCcpL2l0ZW1zPyRzZWxlY3Q9U3RhcnREYXRlLEVuZERhdGUsT3JkZXIsU3BvdGxpZ2h0VGl0bGUsT3BlbkluVGhlTmV4dFRhYixMaW5rLEVuY29kZWRBYnNVcmwiICsNCiAgICAgICAgICAgICAgICAgICAiJiRvcmRlcmJ5PU9yZGVyMCBhc2MmJGZpbHRlcj1TdGFydERhdGUgbGUgZGF0ZXRpbWUnIiArIHRvZGF5LnRvSVNPU3RyaW5nKCkgKyAiJyBhbmQgRW5kRGF0ZSBnZSBkYXRldGltZSciICsgdG9kYXkudG9JU09TdHJpbmcoKSArICInIiwNCiAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgIkFjY2VwdCI6ICJhcHBsaWNhdGlvbi9qc29uO29kYXRhPXZlcmJvc2UiIH0NCiAgICAgICAgICAgfSkuc3VjY2VzcyhmdW5jdGlvbiAoZCwgcywgaCwgYykgew0KICAgICAgICAgICAgICAgJHNjb3BlLnNwb3RsaWdodHMgPSBkLmQucmVzdWx0czsNCiAgICAgICAgICAgICAgIHZhciBiYWNrdXBDb3VudCA9IDMgLSAkc2NvcGUuc3BvdGxpZ2h0cy5sZW5ndGg7DQogICAgICAgICAgICAgICBpZiAoYmFja3VwQ291bnQgPiAwKSB7DQogICAgICAgICAgICAgICAgICAgJGh0dHAoew0KICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLA0KICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlbW92ZUhUVFBmcm9tVVJMKF9zcFBhZ2VDb250ZXh0SW5mby53ZWJBYnNvbHV0ZVVybCkrICIvX2FwaS93ZWIvbGlzdHMvZ2V0QnlUaXRsZSgnU3BvdExpZ2h0JykvaXRlbXM/JHNlbGVjdD1PcmRlcixTcG90bGlnaHRUaXRsZSxPcGVuSW5UaGVOZXh0VGFiLExpbmssRW5jb2RlZEFic1VybCYkb3JkZXJieT1PcmRlcjAgZGVzYyIsDQogICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgIkFjY2VwdCI6ICJhcHBsaWNhdGlvbi9qc29uO29kYXRhPXZlcmJvc2UiIH0NCiAgICAgICAgICAgICAgICAgICB9KS5zdWNjZXNzKGZ1bmN0aW9uIChkLCBzLCBoLCBjKSB7DQogICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zcG90bGlnaHRzLnB1c2guYXBwbHkoJHNjb3BlLnNwb3RsaWdodHMsICBkLmQucmVzdWx0cyk7DQogICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgfSk7DQogICAgICAgICANCg0KICAgICAgICAgICAvLyRzY29wZS5waWN0dXJlcyA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgLy8gICAgcmV0dXJuICRzY29wZS5zcG90bGlnaHRzLmNvbmNhdCgkc2NvcGUuc3BvdGxpZ2h0QmFja3Vwcyk7DQogICAgICAgICAgIC8vfQ0KDQoNCiAgICAgICAgICAgJHNjb3BlLmdldFRhcmdldCA9IGZ1bmN0aW9uKHRhcmdldFN0cmluZykgew0KICAgICAgICAgICAgICAgaWYgKHRhcmdldFN0cmluZykNCiAgICAgICAgICAgICAgICAgICByZXR1cm4gIl9ibGFuayI7DQogICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgcmV0dXJuICJfc2VsZiI7DQogICAgICAgICAgIH0NCg0KICAgICAkc2NvcGUuZ2V0U3Jjd2l0aG91dEhUVFAgPSBmdW5jdGlvbih1cmxTdHJpbmcpIHsNCiAgICAgICAgICAgICB2YXIgaHR0cEluZGV4ID0gdXJsU3RyaW5nLmluZGV4T2YoIjovLyIpOw0KICAgICAgICAgICAgaWYoaHR0cEluZGV4ID4gMCkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFN0cmluZy5zbGljZShodHRwSW5kZXgrMSk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsU3RyaW5nOw0KDQogICAgICAgICAgIH0NCg0KICAgICAgIH0pICAgICAgDQogICAgICAgICAgDQo8L3NjcmlwdD4NCg0KPGRpdiBuZy1hcHA9IkFuZ0FwcFNwb3RMaWdodCIgY2xhc3M9InNwLXJvdyI+DQogICAgPGRpdiBpZD0icGktc2Nyb2xsLXRpbGVzIiBuZy1jb250cm9sbGVyPSJhbmdTcG90TGlnaHRDb250cm9sbGVyIj4NCiAgICAgICAgPGRpdiBpZD0icGktdGlsZXMtYnRuIiBjbGFzcz0idGV4dC1jZW50ZXIiPg0KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biIgaWQ9InBpLXRpbGVzLWJhY2t3YXJkIj48L2E+DQogICAgICAgICAgICA8YSBjbGFzcz0iYnRuIiBpZD0icGktdGlsZXMtZm9yd2FyZCI+PC9hPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBpZD0icGktdGlsZXMiIGNsYXNzPSJzY3JvbGwtaW1nIj4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0idW5zdHlsZWQiIGlkPSJ0aWxlc1VsIj4NCiAgICAgICAgICAgICAgICA8bGkgbmctcmVwZWF0PSJwaWN0dXJlIGluIHNwb3RsaWdodHMiPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7e3BpY3R1cmUuTGluay5Vcmx9fSIgdGFyZ2V0PSJ7e2dldFRhcmdldChwaWN0dXJlLk9wZW5JblRoZU5leHRUYWIpfX0iICBkYXRhLWdhLWFjdGlvbj0iTGluayIgZGF0YS1nYS1jYXRlZ29yeT0iSG9tZSIgZGF0YS1nYS1sYWJlbD0ie3twaWN0dXJlLlNwb3RsaWdodFRpdGxlfX0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iaW1hZ2UtdGh1bWJzIiBuZy1zcmM9Int7cGljdHVyZS5FbmNvZGVkQWJzVXJsfX0iIGFsdD0iIiBhcmlhLWhpZGRlbj0idHJ1ZSIgLz48c3BhbiBjbGFzcz0ibm9wYWQgc3BvdGxpZ2h0LXRpdGxlIj57e3BpY3R1cmUuU3BvdGxpZ2h0VGl0bGV9fTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPGJyIC8+DQoNCjxzdHlsZT4NCgkjY291bnRkb3duew0KCQl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJCXBhZGRpbmc6IDIwcHggMDsNCgkJYm9yZGVyLXRvcDogc29saWQgMXB4ICM5OTk7DQoJfQ0KCSNjb3VudGRvd24gaDN7DQoJCWZvbnQtZmFtaWx5OiAnUm9ib3RvJzsNCgkJZm9udC13ZWlnaHQ6IDYwMDsNCgkJZm9udC1zaXplOiAyOHB4Ow0KCQljb2xvcjogcmdiKDMsNjMsMTM2KTsNCgkJYm9yZGVyLWJvdHRvbTpub25lOw0KCX0NCg0KCSNjb3VudGRvd24tMXsNCgkJcGFkZGluZzoyNXB4IDA7DQoJfQ0KCSNjb3VudGRvd24tZGlzcGxheXsNCgkJZGlzcGxheTogYmxvY2s7DQoJCWJvcmRlci1yYWRpdXM6IDEwcHg7DQoJCS8qaGVpZ2h0OiAxNDBweDsqLw0KCSAgICBtYXgtd2lkdGg6IDcwMHB4Ow0KCSAgICBtYXJnaW46IDAgYXV0bzsNCgl9DQoJI2NvdW50ZG93bi0yew0KCQlwYWRkaW5nOiAwcHggMDsNCgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgDQoJCXBhZGRpbmc6IDEwcHggNTBweCAxMHB4IDMwcHg7DQoJICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA2NXB4Ow0KCSAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNjVweDsNCgkgICAgaGVpZ2h0OiAxMDVweDsNCgkgICANCgl9DQoJLyojY291bnRkb3duLTIgYXsNCgkJZGlzcGxheTogYmxvY2s7DQoJCSBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9TdHlsZSUyMExpYnJhcnkvSW1hZ2VzL05leHQlMjBBcnJvdy5zdmciKTsNCgkJYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQ7DQoJCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQogICAgYmFja2dyb3VuZC1zaXplOiAyMHB4Ow0KICAgIHBhZGRpbmc6IDAgMzAlIDAgMDsNCgl9Ki8NCgkjY291bnRkb3duLTIgYSBpbWd7DQoJCWhlaWdodDogMTAwJTsNCgl9DQoJI2NvdW50ZG93bi0yIGgzew0KCQlmb250LWZhbWlseTogJ1JvYm90byc7DQoJCXBhZGRpbmc6MHB4Ow0KCQlmb250LXNpemU6IDMycHg7DQoJCWxpbmUtaGVpZ2h0OiAxOw0KCQlib3JkZXI6IG5vbmU7DQoJCWNvbG9yOiByZ2IoMyw2MywxMzYpOw0KCQlmb250LXdlaWdodDogNjAwOw0KCX0NCgkjY291bnRkb3duLTIgaDV7DQoJCWZvbnQtZmFtaWx5OiAnUm9ib3RvJzsNCgkJZm9udC1zaXplOiAxOHB4Ow0KCQljb2xvcjpyZ2IoMzgsMTE1LDIwOSk7DQoJCWZvbnQtd2VpZ2h0OiA1MDA7DQoJCXBhZGRpbmc6MHB4Ow0KCQlsaW5lLWhlaWdodDogMTsNCgkJYm9yZGVyOiBub25lOw0KDQoJfQ0KCSNjb3VudGRvd24tM3sNCgkJZGlzcGxheTogaW5saW5lLWJsb2NrOw0KCQliYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMyw2MywxMzYpOw0KCQlwYWRkaW5nOjE1cHggMCAxNXB4IDQwcHg7DQoJCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDY1cHg7DQoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDY1cHg7DQoJCWhlaWdodDogMTA1cHg7DQoJfQ0KDQoJI2NvdW50ZG93bi0zIGgzew0KCQlmb250LWZhbWlseTogJ1JvYm90byc7DQoJCWZvbnQtc2l6ZTogNDRweDsNCgkJZm9udC13ZWlnaHQ6IDUwMDsNCgkJY29sb3I6ICNmZmY7DQoJCXBhZGRpbmc6MDsNCgkJYm9yZGVyOiBub25lOw0KCX0NCg0KICAgICNjb3VudGRvd24tMyAubWV0cmljew0KICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byc7DQogICAgICAgIGZvbnQtc2l6ZTogNDRweDsNCiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgIHBhZGRpbmc6MDsNCiAgICAgICAgYm9yZGVyOiBub25lOw0KICAgIH0NCg0KCSNjb3VudGRvd24tMyAuY29sLXhzLTN7DQoJCWJvcmRlci1yaWdodDogc29saWQgMXB4ICNjNWQzZmM7DQoJCXBhZGRpbmc6IDA7DQoJfQ0KCSNjb3VudGRvd24tMyAuY29sLXhzLTM6bGFzdC1vZi10eXBlew0KCQlib3JkZXItcmlnaHQ6IG5vbmU7DQoJfQ0KCQ0KCSNjb3VudGRvd24tMyBwew0KCQlmb250LWZhbWlseTogJ1JvYm90byc7DQoJCWNvbG9yOiNjNWQzZmM7DQoJCWZvbnQtd2VpZ2h0OiA2MDA7DQoJCWZvbnQtc2l6ZToxMnB4Ow0KCQlwYWRkaW5nOiAwOw0KCQltYXJnaW46IDA7DQoJfQ0KCQ0KIAkueHhzLWhpZGV7DQogCQlkaXNwbGF5OiBibG9jazsNCiAJfQ0KIAkueHhzLXNob3d7DQogCQlkaXNwbGF5Om5vbmU7DQogCX0NCiAJI2NvdW50ZG93bi0zIC5jb2wteHMtMzpudGgtb2YtdHlwZSgyKXsNCgkJYm9yZGVyLXJpZ2h0OiB2aXNpYmxlOw0KCX0NCiNzcG90bGlnaHQtaG9tZSB7DQogICAgcGFkZGluZzogNTBweCAwcHggMzBweCAwOw0KfQ0KDQogQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpew0KICAgICNjb3VudGRvd24tZGlzcGxheSAuY29sLXhzLTcsDQogICAgI2NvdW50ZG93bi1kaXNwbGF5IC5jb2wteHMtNXsNCiAgICAJd2lkdGg6IDEwMCU7DQogICAgfQ0KIAkjY291bnRkb3duLTMgLmNvbC14cy0zew0KCQl3aWR0aDogNTAlOw0KCX0NCiAJLnh4cy1oaWRlew0KIAkJZGlzcGxheTogbm9uZTsNCiAJfQ0KIAkueHhzLXNob3d7DQogCQlkaXNwbGF5OmJsb2NrOw0KIAl9DQogCSNjb3VudGRvd24tMyAuY29sLXhzLTM6bnRoLW9mLXR5cGUoMil7DQoJCWJvcmRlci1yaWdodDogbm9uZTsNCgl9DQogCSNjb3VudGRvd24tM3sJDQogCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0NXB4Ow0KCSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNDVweDsNCgkgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsNCgkgICAgcGFkZGluZzogMTBweCAyMHB4Ow0KCSAgICBoZWlnaHQ6IDk1cHg7DQoJfQ0KCSNjb3VudGRvd24tMnsNCgkJZGlzcGxheTogYmxvY2s7CQkNCgkJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDQ1cHg7DQoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDQ1cHg7DQoJCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7DQoJICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOw0KCSAgICAgcGFkZGluZzogMTVweCAyMHB4Ow0KCQloZWlnaHQ6IDk1cHg7DQoJfQ0KCSNjb3VudGRvd24tZGlzcGxheXsNCgkJZGlzcGxheTogYmxvY2s7DQoJCXBhZGRpbmc6IDAgMTBweDsNCgl9DQojc3BvdGxpZ2h0LWhvbWUgew0KICAgIHBhZGRpbmc6IDUwcHggMHB4Ow0KfQ0KIH0NCg0KPC9zdHlsZT5kBSZnXzRiNGVhNzY0XzA5MWVfNGY2MV85MGM0X2VjODQxZjlkNTc2ZQ9kFgJmDxYEHwIFH21zLXJ0ZS1lbWJlZGNvZGUgbXMtcnRlLWVtYmVkd3AfAQXR/wE8ZGl2IGlkPSJob21lcGFnZSI+DQoNCjwhLS0NCjxkaXYgY2xhc3M9InRleHQtY2VudGVyIiBzdHlsZT0icGFkZGluZzoyMHB4O2JhY2tncm91bmQtY29sb3I6I0ZGQjMzMzsiPjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+PGEgaHJlZj0iL1BhZ2VzL0Nvcm9uYS1WaXJ1cy5hc3B4IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Y29sb3I6IzAwMUIzQjtiYWNrZ3JvdW5kLWltYWdlOnVybCgnL1B1Ymxpc2hpbmdJbWFnZXMvY29yb25hdmlydXMvYmx1ZS1hbGVydC1pY29uLnBuZycpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjIwcHggMjBweDsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4OyBwYWRkaW5nLWxlZnQ6NDBweDtmb250LXNpemU6MjJweCI+SW1wb3J0YW50IEluZm9ybWF0aW9uIFJlZ2FyZGluZyBDb3JvbmF2aXJ1cyAoQ09WSUQmIzgyMTE7MTkpPC9hPjwvZGl2PjwvZGl2Pg0KLS0+DQoNCjxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7IGJhY2tncm91bmQtY29sb3I6IzdFQzZGRjsiPg0KPGRpdiBjbGFzcz0iY29sLXhzLTEyIHRleHQtY2VudGVyIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkZCMzMzOyBwYWRkaW5nOjIwcHgiPjxhIGhyZWY9Ii9QYWdlcy9Db3JvbmEtVmlydXMuYXNweCIgc3R5bGU9ImZvbnQtc2l6ZToyMnB4OyBjb2xvcjojMDAxQjNCOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgcGFkZGluZzoyMHB4OyI+PGltZyBzcmM9Ii9QdWJsaXNoaW5nSW1hZ2VzL2Nvcm9uYXZpcnVzL2JsdWUtYWxlcnQtaWNvbi5wbmciIHN0eWxlPSJoZWlnaHQ6IDIwcHg7IG1hcmdpbi1yaWdodDogMTBweDsgcGFkZGluZy1ib3R0b206IDJweDsgIiBhbHQ9IiIvPkltcG9ydGFudCBDT1ZJRC0xOSBJbmZvcm1hdGlvbjwvYT48L2Rpdj4NCjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyBoZWlnaHQ6IDBweDsgd2lkdGg6MTAwJSI+PC9kaXY+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0iY29sLXhzLTEyIHRleHQtY2VudGVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGgyIHN0eWxlPSJjb2xvcjojNjY2OyBmb250LXN0eWxlOml0YWxpYzsgZm9udC1mYW1pbHk6J0xhdG8nO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtwYWRkaW5nOjE1cHggMDttYXJnaW4tYm90dG9tOjMwcHg7Ij5PdXIgY29yZSB2YWx1ZXMgYXJlIEVtcGF0aHksIEV0aGljcywgRXhjZWxsZW5jZSwgRXF1aXR5PC9oMj48L2Rpdj4NCg0KDQo8ZGl2IGlkPSJwb3B1bGFybGlua3MiPg0KPGRpdiBjbGFzcz0iY29udGFpbmVyIj4NCg0KDQo8IS0tY29sdW1uIG9uZS0tPg0KPGRpdiBjbGFzcz0iY29sLTMiPg0KPGRpdiBpZD0idG9kYXlpd2FudHRvIj4NCjx1bCBpZD0idG9kYXlpd2FudHRvLXVsIj4NCjxsaSBjbGFzcz0icGF5Ij48YSBjbGFzcz0iaXdhbnR0b21vZGFsIGJ0biBidG4tbWQiIGhyZWY9IiNwYXkiPlBheTwvYT48L2xpPg0KPGxpIGNsYXNzPSJmaW5kIj48YSBjbGFzcz0iaXdhbnR0b21vZGFsIGJ0biBidG4tbWQiIGhyZWY9IiNmaW5kIj5GaW5kPC9hPjwvbGk+DQo8bGkgY2xhc3M9InJlcXVlc3QiPjxhIGNsYXNzPSJpd2FudHRvbW9kYWwgYnRuIGJ0bi1tZCIgaHJlZj0iI3JlcXVlc3QiPlJlcXVlc3Q8L2E+PC9saT4NCjxsaSBjbGFzcz0ib3Blbi1kYXRhIj48YSAgaHJlZj0iL1BhZ2VzL0RhbGxhcy1EYXRhaHViLmFzcHgiIGNsYXNzPSJidG4gYnRuLW1kIj5EYWxsYXMgRGF0YSBIdWI8L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwOi8vZmluYW5jaWFsdHJhbnNwYXJlbmN5LmRhbGxhc2NpdHloYWxsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiBpZD0iZmluYW50aWFsLXRyYW5zcGFyZW5jeSIgY2xhc3M9ImJ0biBidG4tbWQiPkZpbmFuY2lhbCBUcmFuc3BhcmVuY3k8L2E+PC9saT4NCjwhLS08bGkgY2xhc3M9Im9wZW4tZGF0YSI+PGEgY2xhc3M9Iml3YW50dG9tb2RhbCBidG4gYnRuLW1kIiBocmVmPSIjb3BlbmRhdGEiPk9wZW4gRGF0YTwvYT48L2xpPg0KLS0+DQo8IS0tPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9wdWJsaWMtYWZmYWlycy1vdXRyZWFjaC9vcGVucmVjb3Jkcy9QYWdlcy9kZWZhdWx0LmFzcHgiIGlkPSJvcGVuLXJlY29yZHMiIGNsYXNzPSJidG4gYnRuLW1kIj5PcGVuIFJlY29yZHMgUmVxdWVzdDwvYT48L2xpPi0tPg0KPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGFsbGFzdHguZ292cWEudXMvV0VCQVBQL19ycy8oUyhhdmZpdjRobjFycnJxbWxqNTR0bWF6ZnApKS9TdXBwb3J0SG9tZS5hc3B4P3NTZXNzaW9uSUQ9IiB0YXJnZXQ9Il9ibGFuayIgaWQ9Im9wZW4tcmVjb3JkcyIgY2xhc3M9ImJ0biBidG4tbWQiPk9wZW4gUmVjb3JkcyBSZXF1ZXN0PC9hPjwvbGk+DQo8L3VsPg0KPC9kaXY+DQo8L2Rpdj4NCjwhLS1jb2x1bW4gb25lLS0+DQoNCjxkaXYgY2xhc3M9ImNvbC0zIj4NCjxkaXYgaWQ9Im9mZmljaWFscG9zdGluZ3MiIGNsYXNzPSJvZmZpY2lhbC1wb3N0aW5ncyBsaXN0LWl0ZW1zIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuOyI+DQo8aDMgc3R5bGU9ImNvbG9yOiByZ2IoNjgsIDY4LCA2OCkiPk9mZmljaWFsIFBvc3RpbmdzPC9oMz4NCjx1bCBjbGFzcz0iaG0tYm94LWxpbmtzIj4NCjxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvYnVkZ2V0L2ZpbmFuY2lhbHRyYW5zcGFyZW5jeS9QYWdlcy9DdXJyZW50LUJ1ZGdldC5hc3B4IiBpZD0iYnVkZ2V0Ij5GWSAyMDIxLTIyIEFkb3B0ZWQgQnVkZ2V0PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jaXR5b2ZkYWxsYXMubGVnaXN0YXIuY29tLyIgaWQ9ImNvdW5jaWwtbWVldGluZ3MiIHRhcmdldD0iX2JsYW5rIj5Db3VuY2lsIE1lZXRpbmdzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2dvdmVybm1lbnQvY2l0eWNvdW5jaWwvUGFnZXMvY291bmNpbC1hdHRlbmRhbmNlLmFzcHgiIGlkPSJjb3VuY2lsLWF0dGVuZGFuY2UiPkNvdW5jaWwgQXR0ZW5kYW5jZTwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9jYWxlbmRhci8iIGlkPSJjaXR5LWNhbGVuZGFyIj5DaXR5IENhbGVuZGFyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL1BhZ2VzL3B1YmxpYy1ub3RpY2VzLmFzcHgiIGlkPSJwdWJsaWMtbm90aWNlcyI+UHVibGljIE5vdGljZXM8L2E+PC9saT4NCjxsaT48YSBocmVmPSIvZ292ZXJubWVudC9jaXR5c2VjcmV0YXJ5L1BhZ2VzL1B1YmxpYy1NZWV0aW5ncy5hc3B4IiBpZD0ib3Blbi1tZWV0aW5ncyI+T3BlbiBNZWV0aW5nczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9nb3Zlcm5tZW50L2NpdHltYW5hZ2VyL1BhZ2VzL2NvdW5jaWwtbWVtb3MuYXNweCIgaWQ9ImNvdW5jaWwtbWVtb3MiPkNvdW5jaWwgTWVtb3M8L2E+PC9saT4NCjxsaT48YSBocmVmPSIvUGFnZXMvd2F0Y2gtY2l0eS1tZWV0aW5ncy1vbmxpbmUuYXNweCIgY2xhc3M9InN3YWdpdCBidG4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJnYigzLDYzLDEzNik7IHBhZGRpbmc6MTFweCAxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6d2hpdGU7bWFyZ2luOjA7IiBpZD0iY2l0eS1tZWV0aW5nLXZpZGVvIj5XYXRjaCBDaXR5IE1lZXRpbmdzIE9ubGluZTwvYT48L2xpPg0KPC91bD4NCjwvZGl2Pg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9ImNvbC0zIGNvbC1lbmQiPg0KPGRpdiBpZD0ib2ZmaWNpYWxwb3N0aW5nczIiIGNsYXNzPSJvZmZpY2lhbC1wb3N0aW5ncyBsaXN0LWl0ZW1zIj4NCjxoMyBzdHlsZT0iY29sb3I6IHJnYig2OCwgNjgsIDY4KSI+UXVpY2sgTGlua3M8L2gzPg0KDQo8dWwgY2xhc3M9ImhtLWJveC1saW5rcyI+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL3dhdGVydXRpbGl0aWVzIiBpZD0icXVpY2stbGlua3Mtd2F0ZXIiPldhdGVyIFV0aWxpdGllczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9zYW5pdGF0aW9uIiBpZD0icXVpY2stbGlua3Mtc2FuaXRhdGlvbiI+VHJhc2ggUGlja3VwPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL3N1c3RhaW5hYmxlZGV2ZWxvcG1lbnQvYnVpbGRpbmdpbnNwZWN0aW9uL1BhZ2VzL2luZGV4LmFzcHgiIGlkPSJxdWljay1saW5rcy1idWlsZGluZy1wZXJtaXRzLWluc3BlY3Rpb25zIj5CdWlsZGluZyBQZXJtaXRzICZhbXA7IEluc3BlY3Rpb25zPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2h1bWFucmVzb3VyY2VzL2VtcGxveW1lbnQvUGFnZXMvZGVmYXVsdC5hc3B4IiBpZD0icXVpY2stbGlua3Mtam9icyI+Sm9iczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9jb3VydGRldGVudGlvbnNlcnZpY2VzL1BhZ2VzL2RlZmF1bHQuYXNweCIgaWQ9InF1aWNrLWxpbmtzLXRyYWZmaWMtdGlja2V0cyI+VHJhZmZpYyAmYW1wOyBDaXZpbCBUaWNrZXRzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2NvdXJ0ZGV0ZW50aW9uc2VydmljZXMvUGFnZXMvV2FycmFudC1JbmZvLmFzcHgiIGlkPSJxdWljay1saW5rcy1jb3VydHMiPkNvdXJ0IFdhcnJhbnRzICZhbXA7IEJvbmRzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2RhbGxhcy1hbmltYWwtc2VydmljZXMvUGFnZXMvZGVmYXVsdC5hc3B4IiBpZD0icXVpY2stbGlua3MtYW5pbWFsLXNlcnZpY2VzIj5BbmltYWwgU2VydmljZXM8L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwczovL3d3dy4yMTF0ZXhhcy5vcmcvIiBpZD0icXVpY2stbGlua3MtMjExIiB0YXJnZXQ9Il9ibGFuayI+Mi0xLTEgVGV4YXMgKFN0YXRlIEFzc2lzdGFuY2UpPC9hPjwvbGk+DQoNCjwvdWw+DQo8L2Rpdj4NCjwvZGl2Pg0KDQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4NCjwvZGl2Pg0KDQoNCg0KICA8c2VjdGlvbiBjbGFzcz0ic2VydmljZXMtYmFubmVyIj4NCiAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZTMxMSBjb2wtbWQtMTIgY29sLXhzLTEyIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy02IGNvbC1tZC02IGNvbC14cy0xMiIgaWQ9InBpY3R1cmUzMTFhcHAiPiAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW4tbWlkZGxlIj4NCiAgICAgICAgICAgICAgPGgzID48c3Bhbj5Eb3dubG9hZCB0aGUgTmV3IDwvc3Bhbj48YnIvPk91ckRhbGxhcyBNb2JpbGUgQXBwPC9oMz4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vaXR1bmVzLmFwcGxlLmNvbS91cy9hcHAvZGFsbGFzLTMxMS9pZDY5MjkwMjA4OD9tdD04IyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJhcHBpY29uIj48aW1nIHNyYz0iL1B1Ymxpc2hpbmdJbWFnZXMvc3RhdGljL2FwcC1zdG9yZS1iYWRnZS5wbmciIGNsYXNzPSJhcHAtYmFkZ2UgYXBwbGVhcHAiIGFsdD0iQXBwbGUgQXBwIFN0b3JlIEJhZGdlIi8+PC9hPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20uZGFsbGFzY2l0eWhhbGwuZGFsbGFzMzExJmhsPWVuIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImFwcGljb24iPjxpbWcgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvZ29vZ2xlLXBsYXktYmFkZ2UucG5nIiBjbGFzcz0iYXBwLWJhZGdlIGdvb2dsZWFwcCIgYWx0PSJHb29nbGUgUGxheSBTdG9yZSBCYWRnZSIgLz48L2E+DQogICAgICAgICAgICAgIDwvZGl2PiAgICAgIA0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVjayB2aXNpYmxlLXh4cyBjb2wteHMtMTIiPg0KICAgICAgICAgICAgICAgIDxpbWcgaWQ9ImRhbGxhczMxMW1vYmlsZSIgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvMzExLW1vYmlsZS1hcHAtbmV3LmpwZyIgYWx0PSJEYWxsYXMgMzExIE1vYmlsZSBhcHAiIHRpdGxlPSJEYWxsYXMtMzExLU1vYmlsZS1BcHAiIG1lZGlhLXNpbXBsZT0idHJ1ZSI+DQogICAgICAgICAgICAgICAgIDwhLS0gIDxoMz5DaGVjayBTZXJ2aWNlIFJlcXVlc3QgU3RhdHVzPC9oMz4NCiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iU2VydmljZSBSZXF1ZXN0ICMgKGkuZS4gMTktMDAwMDAwMDEpIiBjbGFzcz0idGV4dEZpZWxkIHNlYXJjaGlucHV0IiBvbmtleWRvd249InNlYXJjaDMxMShldmVudCkiICAvPiAtLT4NCiAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICANCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYgY29sLW1kLTYgY29sLXhzLTEyIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItMzExIj4NCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lci0zMTEtdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+MzExIEZyZXF1ZW50bHkgUmVxdWVzdGVkIFNlcnZpY2VzPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idW5saXN0ZWQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGFsbGFzY3JtLmZvcmNlLmNvbS9wdWJsaWMvcmVxdWVzdC9DT0RFR0VORVJBTC9sb2NhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiPkNvZGUgQ29uY2VybnM8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhbGxhc2NybS5mb3JjZS5jb20vcHVibGljL3JlcXVlc3QvU1BTVlNOT1QvbG9jYXRpb24iIHRhcmdldD0iX2JsYW5rIj5TYW5pdGF0aW9uIFJvbGwgQ2FydDwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGFsbGFzY3JtLmZvcmNlLmNvbS9wdWJsaWMvcmVxdWVzdC9TQU5NSVNHQS9sb2NhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiPk1pc3NlZCBHYXJiYWdlPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kYWxsYXNjcm0uZm9yY2UuY29tL3B1YmxpYy9yZXF1ZXN0L1NUU1JPVVNUL2xvY2F0aW9uIiB0YXJnZXQ9Il9ibGFuayI+U3RyZWV0IFJlcGFpcjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZGFsbGFzY3JtLmZvcmNlLmNvbS9wdWJsaWMvcmVxdWVzdC9QV1RST1YvbG9jYXRpb24iIHRhcmdldD0iX2JsYW5rIj5QYXJraW5nIOKAkyBSZXBvcnQgYSBWaW9sYXRpb248L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhbGxhc2NybS5mb3JjZS5jb20vcHVibGljL3JlcXVlc3QvQU5JTE9TREMvbG9jYXRpb24iIHRhcmdldD0iX2JsYW5rIj5BbmltYWwgTG9vc2U8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2RhbGxhc2NybS5mb3JjZS5jb20vcHVibGljL3JlcXVlc3QvREVBREFOUFUvbG9jYXRpb24iIHRhcmdldD0iX2JsYW5rIj5EZWFkIEFuaW1hbCBQaWNrIFVwPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kYWxsYXNjcm0uZm9yY2UuY29tL3B1YmxpYy9yZXF1ZXN0L0RQRDI0SFIvbG9jYXRpb24iIHRhcmdldD0iX2JsYW5rIj4yNCBIb3VyIFBhcmtpbmc8L2E+PC9saT4gICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9tZS0zMTEtYnV0dG9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGFsbGFzY3JtLmZvcmNlLmNvbS9wdWJsaWMvc2VydmljZXR5cGVzIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zaWRlIGJ0bi1tZCIgc3R5bGU9ImZvbnQtc2l6ZTogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiM4RUM5MDA7Y29sb3I6IzIyMjIyMjsiPlJlcXVlc3QgYSBTZXJ2aWNlPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9zZXJ2aWNlcy8zMTEiIGNsYXNzPSJidG4gYnRuLW1pbmltYWwtcmV2ZXJzZSBidG4tc2lkZSBidG4tbWQiIHN0eWxlPSJmb250LXNpemU6IDFlbSI+QWJvdXQgMzExPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIDwhLS08YSBocmVmPSJodHRwczovL2RhbGxhc2NybS5mb3JjZS5jb20vRGFsbGFzMzExS25vd2xlZGdlL3MvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tbWluaW1hbC1yZXZlcnNlIGJ0bi1zaWRlIGJ0bi1tZCIgc3R5bGU9ImZvbnQtc2l6ZTogMWVtIj4zMTEgS25vd2xlZGdlYmFzZTwvYT4tLT4NCiAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgDQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlMzExIGNoZWNrIGhpZGRlbi14cyI+DQogICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImNoZWNrLXNlcnZpY2UtcmVxdWVzdCIgc3R5bGU9ImZvbnQtc2l6ZTogMS40ZW07cGFkZGluZzogNXB4IDIwcHg7bWF4LXdpZHRoOiAzNTBweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Y29sb3I6ICNmZmY7Ym9yZGVyLWJvdHRvbTogbm9uZTsiPkNoZWNrIFNlcnZpY2UgUmVxdWVzdCBTdGF0dXM8L2xhYmVsPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlcnZpY2UgUmVxdWVzdCAjIChpLmUuIDE5LTAwMDAwMDAxKSIgY2xhc3M9InRleHRGaWVsZCIgb25rZXlkb3duPSJzZWFyY2gzMTEoZXZlbnQpIiBpZD0iY2hlY2stc2VydmljZS1yZXF1ZXN0IiAgLz4NCiAgICAgICAgPC9kaXY+DQo8L3NlY3Rpb24+DQoNCjxzdHlsZT4NCi5pbi1taWRkbGV7DQogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCggcmdiYSgwLCAwLCAwLCAwLjIpLCByZ2JhKDAsIDAsIDAsIDAuNykgKSwgdXJsKCcvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvMzExLW1vYmlsZS1hcHAtbmV3LmpwZycpOw0KICAvKmJhY2tncm91bmQtaW1hZ2U6IHVybCgiL1B1Ymxpc2hpbmdJbWFnZXMvc3RhdGljLzMxMS1tb2JpbGUtYXBwLW5ldy5qcGciKTsqLw0KYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCmJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQpsZWZ0OiA0MHB4Ow0KcGFkZGluZy1ib3R0b206IDMwcHg7DQpoZWlnaHQ6IDEwMCU7DQpwYWRkaW5nOiAyMzBweCAwIDAgNDBweDsNCn0NCi5pbi1taWRkbGUgaDN7DQogIGZvbnQtc2l6ZTogMjhweDsNCiAgZm9udC13ZWlnaHQ6ICA1MDA7DQp9DQouaW4tbWlkZGxlIGgzIHNwYW57DQogIGZvbnQtc2l6ZTogMjJweDsNCiAgYm9yZGVyOiBub25lOw0KICBmb250LXN0eWxlOiBpdGFsaWM7ICANCiAgcGFkZGluZy1ib3R0b206ICAgMHB4Ow0KfQ0KDQoNCi5zZXJ2aWNlMzExew0KICBwYWRkaW5nIDogMHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDE2NmNlOw0KICANCn0NCi5zZXJ2aWNlMzExIHVsew0KICBwYWRkaW5nLWxlZnQ6ICAgMHB4Ow0KICBwYWRkaW5nLWJvdHRvbTogICAxNXB4Ow0KfQ0KLnNlcnZpY2UzMTEgaDN7DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQp9DQoNCi5zZXJ2aWNlMzExIGgyLA0KLnNlcnZpY2UzMTEgaDN7DQogY29sb3I6ICNmZmY7DQogYm9yZGVyLWJvdHRvbTogICBub25lOw0KfQ0KLnNlcnZpY2UzMTEgdWwgbGkgYXsNCiBjb2xvcjogI2U5ZWJmMDsNCiBib3JkZXItYm90dG9tOiAgIG5vbmU7DQp9DQouc2VydmljZTMxMSB1bCBsaXsgDQogICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMDUsMjA1LDIwNSwwLjIpOw0KICAgcGFkZGluZy10b3A6IDhweDsNCiAgIHBhZGRpbmctYm90dG9tOiA2cHg7DQp9DQojcGljdHVyZTMxMWFwcHsgIA0KICBoZWlnaHQ6IDM3MHB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQojZGFsbGFzMzExbW9iaWxlew0KICB3aWR0aDogMTAwJTsNCiAgb3BhY2l0eTogMC44OyANCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsNCn0NCi5hcHBpY29uew0KICB3aWR0aDogMTUwcHg7DQogIHBhZGRpbmctcmlnaHQ6IDEwcHg7DQp9DQouYXBwaWNvbiBpbWd7DQogIHdpZHRoOiAxMjBweCAhaW1wb3J0YW50Ow0KICBwYWRkaW5nLXJpZ2h0OiAxMHB4Ow0KICBoZWlnaHQ6IDM1cHg7DQp9DQouY2hlY2t7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMzNkNzk7DQogIHBhZGRpbmc6IDIwcHggMCAgOyAgIA0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIHdpZHRoOiAxMDAlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7IA0KfQ0KLmNoZWNrIGgzew0KICBwYWRkaW5nOiA1cHggMjBweDsNCiAgbWF4LXdpZHRoOiAzNTBweDsgDQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCi5jaGVjayBpbnB1dHsgIA0KICBtYXgtd2lkdGg6IDkwJTsNCnBhZGRpbmctbGVmdDogMjBweDsNCnBhZGRpbmc6IDEwcHg7DQpoZWlnaHQ6IDQ1cHg7DQp3aWR0aDogNzAwcHg7DQp9DQouaGlkZGVuLXh4c3sNCiAgdmlzaWJpbGl0eTogdmlzaWJsZTsNCn0NCi52aXNpYmxlLXh4c3sNCiAgZGlzcGxheTogbm9uZTsNCn0NCi5pbm5lci0zMTEgdWx7DQogICAgY29sdW1uLWNvdW50OiAyOw0KfQ0KLmlubmVyLTMxMS10aXRsZSBoM3sNCiAgICBwYWRkaW5nLWJvdHRvbTogICAwOw0KfQ0KDQpzZWN0aW9uLnNlcnZpY2VzLWJhbm5lciB7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMTY2Y2U7IH0NCg0Kc2VjdGlvbi5zZXJ2aWNlcy1iYW5uZXIgew0KICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlOw0KICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9DQoNCi5tYnItei1pbmRleDIwIHsNCiAgei1pbmRleDogMjA7IH0NCg0KDQovKiEgTWVkaWEgICovDQoubWVkaWEtc2l6ZS1pdGVtIHsNCiAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsNCiAgLW1vei1mbGV4OiAxIDEgYXV0bzsNCiAgLW1zLWZsZXg6IDEgMSBhdXRvOw0KICAtby1mbGV4OiAxIDEgYXV0bzsNCiAgZmxleDogMSAxIGF1dG87IH0NCg0KLm1lZGlhLWNvbnRlbnQgew0KICAtd2Via2l0LWZsZXgtYmFzaXM6IDEwMCU7DQogIGZsZXgtYmFzaXM6IDEwMCU7IH0NCg0KLm1lZGlhLWNvbnRhaW5lci1yb3cgew0KICBkaXNwbGF5OiAtbXMtZmxleGJveDsNCiAgZGlzcGxheTogLXdlYmtpdC1mbGV4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7DQogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93Ow0KICBmbGV4LWRpcmVjdGlvbjogcm93Ow0KICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsNCiAgLW1zLWZsZXgtd3JhcDogd3JhcDsNCiAgZmxleC13cmFwOiB3cmFwOw0KICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsNCiAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7DQogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsNCiAgLXdlYmtpdC1hbGlnbi1pdGVtczogc3RhcnQ7DQogIC1tcy1mbGV4LWFsaWduOiBzdGFydDsNCiAgYWxpZ24taXRlbXM6IHN0YXJ0OyB9DQogIC5tZWRpYS1jb250YWluZXItcm93IC5tZWRpYS1zaXplLWl0ZW0gew0KICAgIHdpZHRoOiAzNzVweDsgfQ0KDQoubWVkaWEtY29udGFpbmVyLWNvbHVtbiB7DQogIGRpc3BsYXk6IC1tcy1mbGV4Ym94Ow0KICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7DQogIGRpc3BsYXk6IGZsZXg7DQogIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOw0KICAtbXMtZmxleC13cmFwOiB3cmFwOw0KICBmbGV4LXdyYXA6IHdyYXA7DQogIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOw0KICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjsNCiAgYWxpZ24tY29udGVudDogY2VudGVyOw0KICAtd2Via2l0LWFsaWduLWl0ZW1zOiBzdHJldGNoOw0KICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsNCiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0NCiAgLm1lZGlhLWNvbnRhaW5lci1jb2x1bW4gPiAqIHsNCiAgICB3aWR0aDogMTAwJTsgfQ0KDQpAbWVkaWEgKG1pbi13aWR0aDogNTgycHgpIHsNCi5zZXJ2aWNlMzExIHVsIGxpOm50aC1jaGlsZCg0bis0KSB7DQogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsNCn0NCiAgLm1lZGlhLWNvbnRhaW5lci1yb3cgew0KICAgIC13ZWJraXQtZmxleC13cmFwOiBub3dyYXA7DQogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOw0KICAgIGZsZXgtd3JhcDogbm93cmFwOyB9IH0NCg0KLm1ici1maWd1cmUgaW1nLCAubWJyLWZpZ3VyZSBpZnJhbWUgew0KICBkaXNwbGF5OiBibG9jazsNCiAgd2lkdGg6IDEwMCU7IH0NCg0KLm1ici1maWd1cmUgew0KICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXI7DQogIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOw0KICAtd2Via2l0LWFsaWduLXNlbGY6IGNlbnRlcjsNCiAgYWxpZ24tc2VsZjogY2VudGVyOyB9DQoNCi5tZWRpYS1jb250YWluZXIgPiBkaXYgew0KICBtYXgtd2lkdGg6IDEwMCU7IH0NCg0KLm1ici1maWd1cmUgaW1nLCAuY2FyZC1pbWcgaW1nIHsNCiAgd2lkdGg6IDEwMCU7IH0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDU4MXB4KSB7DQogIC5tZWRpYS1zaXplLWl0ZW0gew0KICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IH0NCg0KICAubWJyLWZpZ3VyZSB7DQogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICB9DQogICAjZGFsbGFzMzExbW9iaWxlew0KICBvcGFjaXR5OiAxOyANCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KLmluLW1pZGRsZXsgICANCiAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsNCiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsNCiAgICBoZWlnaHQ6IDE3MHB4Ow0KICAgIHBhZGRpbmc6IDMwcHggMCAwIDMwcHg7DQogIA0KfQ0KLmlubmVyLTMxMS10aXRsZSB7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQoNCi5pbm5lci0zMTEgew0KICAgIHBhZGRpbmc6IDEuNXJlbTsNCn0NCi5ob21lLTMxMS1idXR0b25zew0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQouaG9tZS0zMTEtYnV0dG9ucyAuYnRueyAgDQogIC8qd2lkdGg6IDE2MHB4OyovDQp9DQouaW4tbWlkZGxlIGgzLCAuaW4tbWlkZGxlIGgyew0KICBjb2xvcjogIzMzMzsNCn0NCg0KI3BpY3R1cmUzMTFhcHB7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IGF1dG87ICANCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCn0NCi5jaGVjayB7ICAgDQogICAgcGFkZGluZzogMDsNCn0NCi5jaGVjayBoM3sNCiAgcGFkZGluZzogMTVweCAwIDVweCAwOw0KfQ0KLmhpZGRlbi14eHN7DQogIGRpc3BsYXk6IG5vbmU7DQp9DQoudmlzaWJsZS14eHN7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KLmlubmVyLTMxMSB1bHsNCiAgICBjb2x1bW4tY291bnQ6IDE7DQp9DQoNCiB9DQoNCi8qIDMxMSBpbmZvcm1hdGlvbiAqLw0KLmFsaWduLXNlbGYtY2VudGVyIHsNCiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsNCn0NCi5weC0zIHsNCiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsNCn0NCi5weS0yIHsNCiAgICBwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsNCiAgICBwYWRkaW5nLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsNCn0NCi5hbGlnbi1zZWxmLWNlbnRlciB7DQogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7DQp9DQouaW5uZXItMzExIHsgDQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIHRvcDogYXV0bzsNCn0NCi8qIEN1c3RvbSwgaVBob25lIFJldGluYSAqLyANCiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAzMjBweCkgew0KICAgIC5tZWRpYS1jb250YWluZXItcm93IHsNCiAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICBvdmVyZmxvdzogYXV0bzsgfQ0KICAgIC5weC0zIHsNCiAgICAgICAgcGFkZGluZy1yaWdodDogMDsgfQ0KICAgDQp9DQovKiBFeHRyYSBTbWFsbCBEZXZpY2VzLCBQaG9uZXMgKi8gDQogICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNDgwcHgpIHsNCiAgICAgICAgLnB4LTMgew0KICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9DQogICAgICAgIC5pbm5lci0zMTEgew0KICAgICAgICAgICAgcGFkZGluZzogNjBweCAzMHB4IDEwcHggMzBweDsNCiAgICAgICAgICAgIHdpZHRoOiAgMTAwJTsgfQ0KICAgIH0NCi8qIExhcmdlIERldmljZXMsIFdpZGUgU2NyZWVucyAqLw0KICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDE0MDBweCkgew0KICAgIC5tZWRpYS1jb250YWluZXItcm93IHsNCiAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICBvdmVyZmxvdzogaGlkZGVuOyB9DQp9DQo8L3N0eWxlPg0KDQoNCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjbGVhcmZpeCI+PC9kaXY+DQoNCjxkaXYgaWQ9ImZpbmQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IGJhY2drZ3JvdW5kLWNvbG9yOmdyZXk7Ij4NCjxoMz5GaW5kPC9oMz48YnIvPg0KDQo8ZGl2Pg0KPGlucHV0IHN0eWxlPSJ3aWR0aDo3MCU7Ym9yZGVyLXJhZGl1czoxMDBweDtib3JkZXI6c29saWQgMXB4ICNkZGQ7cGFkZGluZzo2cHggMTBweDsiIGlkPSJmaW5kc2VhcmNoaW5wdXQiLz4NCjxidXR0b24gdHlwZT0iYnV0dG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweDtib3JkZXItcmFkaXVzOjAuM2VtO3BhZGRpbmc6NnB4O2NvbG9yOndoaXRlO2JhY2tncm91bmQtY29sb3I6IzY5MDsiIGNsYXNzPSJzZWFyY2hCdG4iIGlkPSJmaW5kc2VhcmNoYnV0dG9uIiBvbmNsaWNrPSJmaW5kc2VhcmNoKCkiPlNlYXJjaDwvYnV0dG9uPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9Iml3YW50dG9pY29ucyI+DQo8dWw+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2h1bWFucmVzb3VyY2VzL2VtcGxveW1lbnQvUGFnZXMvZGVmYXVsdC5hc3B4IiBpZD0iZmluZC1saWdodGJveC1qb2IiPjxpbWcgY2xhc3M9InNlcnZpY2VpbWciIHNyYz0iL1B1Ymxpc2hpbmdJbWFnZXMvc3RhdGljL2VtcGxveW1lbnRpY29uLnBuZyIgYWx0PSJKb2JzIEljb24iIC8+PGJyIC8+Sm9iPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iaHR0cDovL2RhbGxhc2xpYnJhcnkyLm9yZy8iIHRhcmdldD0iX2JsYW5rIiBpZD0iZmluZC1saWdodGJveC1saWJyYXJ5Ij48aW1nIGNsYXNzPSJzZXJ2aWNlaW1nIiBzcmM9Ii9QdWJsaXNoaW5nSW1hZ2VzL3N0YXRpYy9saWJyYXJ5aWNvbi5wbmciIGFsdD0iTGlicmFyeSBJY29uIiAvPjxiciAvPkxpYnJhcnk8L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmRhbGxhc2FuaW1hbHNlcnZpY2VzLm9yZy8iIHRhcmdldD0iX2JsYW5rIiBpZD0iZmluZC1saWdodGJveC1wZXRzIj48aW1nIGNsYXNzPSJzZXJ2aWNlaW1nIiBzcmM9Ii9QdWJsaXNoaW5nSW1hZ2VzL3N0YXRpYy9wZXRpY29uLnBuZyIgYWx0PSJEYWxsYXMgQW5pbWFsIFNlcnZpY2VzIEljb24iIC8+PGJyIC8+UGV0czwvYT48L2xpPg0KPGxpIHN0eWxlPSJtYXJnaW4tcmlnaHQ6MHB4OyI+PGEgaHJlZj0iaHR0cDovL3d3dy5kYWxsYXNwYXJrcy5vcmcvIiB0YXJnZXQ9Il9ibGFuayIgaWQ9ImZpbmQtbGlnaHRib3gtcGFya3MtcmVjcmVhdGlvbiI+PGltZyBjbGFzcz0ic2VydmljZWltZyIgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvcGFya3NpY29uLnBuZyIgYWx0PSJQYXJrcyAmIFJlY3JlYXRpb24gSWNvbiIgLz48YnIgLz5QYXJrczwvYT48L2xpPg0KPC91bD4NCjxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wteHMtMTIgbGlzdC1pdGVtcyI+DQo8dWw+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuZGFsbGFzY3VsdHVyZS5vcmcvY3VsdHVyYWxGYWNpbGl0aWVzLmFzcCIgaWQ9ImZpbmQtbGlnaHRib3gtY3VsdHVyYWwtY2VudGVyIj5hIEN1bHR1cmFsIENlbnRlcjwvYT48L2xpPg0KPCEtLTxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvaHVtYW5yZXNvdXJjZXMvZW1wbG95bWVudC9QYWdlcy9kZWZhdWx0LmFzcHgiPmEgSm9iPC9hPjwvbGk+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kYWxsYXNsaWJyYXJ5Lm9yZy8iPmEgTGlicmFyeTwvYT48L2xpPi0tPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9jaXNlcnZpY2VzL1BhZ2VzL2VudGVycHJpc2UtZ2lzLmFzcHgiIGlkPSJmaW5kLWxpZ2h0Ym94LW1hcCI+YSBNYXA8L2E+PC9saT4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5kYWxsYXNwYXJrcy5vcmciIGlkPSJmaW5kLWxpZ2h0Ym94LWRhbGxhcy1wYXJrIj5hIFBhcms8L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLXhzLTEyIGxpc3QtaXRlbXMgY29sLWVuZCI+DQo8dWw+DQo8IS0tPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmRhbGxhc3BhcmtzLm9yZy8iPmEgUGFyayBSZWMgQ2VudGVyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2RhbGxhcy1hbmltYWwtc2VydmljZXMvUGFnZXMvYWRvcHRpb24uYXNweCI+YSBQZXQ8L2E+PC9saT4tLT4NCjxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvcG52L1BhZ2VzL3pvbmluZy5hc3B4IiBpZD0iZmluZC1saWdodGJveC1wcm9wZXJ0eS16b25pbmciPlByb3BlcnR5IFpvbmluZzwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9jb2RlY29tcGxpYW5jZS9QYWdlcy9Gb29kU2FmZXR5LmFzcHgiIGlkPSJmaW5kLWxpZ2h0Ym94LXJlc3RhdXJhbnQtc2NvcmVzIj5SZXN0YXVyYW50IFNjb3JlczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9zYW5pdGF0aW9uIiBpZD0iZmluZC1saWdodGJveC10cmFzaC1waWNrdXAiPlRyYXNoIFBpY2t1cDwvYT48L2xpPg0KPC91bD4NCjwvZGl2Pg0KDQo8L2Rpdj4NCg0KPGRpdiBpZD0icGF5IiBzdHlsZT0iZGlzcGxheTpub25lOyBiYWNna2dyb3VuZC1jb2xvcjpncmV5OyI+DQo8aDM+UGF5PC9oMz48YnIvPg0KDQo8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wteHMtMTIgbGlzdC1pdGVtcyI+DQo8dWw+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9kZXBhcnRtZW50cy93YXRlcnV0aWxpdGllcy9QYWdlcy9wYXktd2F0ZXItYmlsbC5hc3B4IiBpZD0icGF5LWxpZ2h0Ym94LXdhdGVyIj5XYXRlciBCaWxsPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2NvdXJ0ZGV0ZW50aW9uc2VydmljZXMvUGFnZXMvZGVmYXVsdC5hc3B4IiBpZD0icGF5LWxpZ2h0Ym94LXRyYWZmaWMtdGlja2V0Ij5UcmFmZmljICZhbXA7IENpdmlsIFRpY2tldHM8L2E+PC9saT4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93bXEuZXRpbXNwYXltZW50cy5jb20vcGJ3L2luY2x1ZGUvZGFsbGFzL2lucHV0LmpzcCIgaWQ9InBheS1saWdodGJveC1wYXJraW5nLXRpY2tldCI+UGFya2luZyBUaWNrZXQ8L2E+PC9saT4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cudmVsb2NpdHlwYXltZW50LmNvbS9jbGllbnQvYmFua29mYW1lcmljYS9jaXR5b2ZkYWxsYXMvZnJhYi9pbmRleC5odG1sIiBpZD0icGF5LWxpZ2h0Ym94LWFtYnVsYW5jZS10aWNrZXQiPkFtYnVsYW5jZSBCaWxsPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL3dhdGVydXRpbGl0aWVzL3NwZWNpYWxfY29sbGVjdGlvbnMvUGFnZXMvc3BlY2lhbF9jb2xsZWN0aW9uc19yZWdpc3RyYXRpb25zLmFzcHgiIGlkPSJwYXktbGlnaHRib3gtYWxhcm1zLXBlcm1pdHMiPkFsYXJtcyBQZXJtaXRzPC9hPjwvbGk+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd21xLmV0aW1zcGF5bWVudHMuY29tL3Bidy9pbmNsdWRlL2RhbGxhcy9pbnB1dC5qc3AiIGlkPSJwYXktbGlnaHRib3gtc2Nob29sLWJ1cy1zdG9wLWFybS10aWNrZXQiPlNjaG9vbCBCdXMgU3RvcCBBcm0gVGlja2V0PC9hPjwvbGk+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLXhzLTEyIGxpc3QtaXRlbXMgY29sLWVuZCI+DQo8dWw+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2NvdXJ0ZGV0ZW50aW9uc2VydmljZXMvUGFnZXMvV2FycmFudC1JbmZvLmFzcHgiIGlkPSJwYXktbGlnaHRib3gtY291cnQtd2FycmFudHMtYm9uZCI+Q291cnQgV2FycmFudHMgJmFtcDsgQm9uZHM8L2E+PC9saT4NCg0KPGxpPjxhIGhyZWY9Ii9QYWdlcy9wYXlieWFwcC5hc3B4IiBpZD0icGF5LWxpZ2h0Ym94LXBhcmtpbmctbWV0ZXJzIj5Gb3IgUGFya2luZyBNZXRlcnM8L2E+PC9saT4NCjxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvY29kZWNvbXBsaWFuY2UvUGFnZXMvZ2FyYWdlLXNhbGVzLmFzcHgiIGlkPSJwYXktbGlnaHRib3gtZ2FyYWdlLXNhbGVzLXBlcm1pdCI+R2FyYWdlIFNhbGVzIFBlcm1pdDwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii9kZXBhcnRtZW50cy9jb250cm9sbGVyc29mZmljZS9QYWdlcy9ob3RlbC10YXhlcy5hc3B4IiBpZD0icGF5LWxpZ2h0Ym94LWhvdGVsLW9jY3VwYW5jeS10YXgiPkhvdGVsIE9jY3VwYW5jeSBUYXggKEhPVCk8L2E+PC9saT4NCjxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvY29udHJvbGxlcnNvZmZpY2UvUGFnZXMvaG90ZWwtdGF4ZXMuYXNweCIgaWQ9InBheS1saWdodGJveC1zaG9ydC10ZXJtLXJlbnRhbHMiPlNob3J0LVRlcm0gUmVudGFscyAoSE9UKTwvYT48L2xpPg0KPCEtLTxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL2RlcGFydG1lbnRzL2NvZGVjb21wbGlhbmNlL1BhZ2VzL0NhcnJ5b3V0LUJhZy1Qcm9ncmFtLmFzcHgiPlNpbmdsZS1Vc2UgQ2FycnlvdXQgQmFnIFJlbWl0dGFuY2U8L2E+PC9saT4tLT4NCjwvdWw+DQo8L2Rpdj4NCg0KPC9kaXY+DQoNCjxkaXYgaWQ9InJlcXVlc3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IGJhY2drZ3JvdW5kLWNvbG9yOmdyZXk7Ij4NCjxoMz5SZXF1ZXN0PC9oMz48YnIvPg0KDQo8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wteHMtMTIgbGlzdC1pdGVtcyI+DQo8dWw+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL3N1c3RhaW5hYmxlZGV2ZWxvcG1lbnQvYnVpbGRpbmdpbnNwZWN0aW9uIiBpZD0icmVxdWVzdC1saWdodGJveC1idWlsZGluZy1wZXJtaXRzLWluc3BlY3Rpb25zIj5CdWlsZGluZyBQZXJtaXRzICZhbXA7IEluc3BlY3Rpb25zPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL3NlcnZpY2VzLzMxMSIgaWQ9InJlcXVlc3QtbGlnaHRib3gtbm9uLWVtZXJnZW5jeS1zZXJ2aWNlcyI+MzExIFNlcnZpY2VzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iL2RlcGFydG1lbnRzL2NvbW11bml0eS1jYXJlL1BhZ2VzL3ZpdGFsX3N0YXRpc3RpY3MuYXNweCIgaWQ9InJlcXVlc3QtbGlnaHRib3gtYmlydGgtZGVhdGgtY2VydGlmaWNhdGVzIj5CaXJ0aCAvIERlYXRoIENlcnRpZmljYXRlczwvYT48L2xpPg0KPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5kYWxsYXNzcGVjaWFsZXZlbnRzLmNvbS9zcGVjaWFsLWV2ZW50LyIgaWQ9InJlcXVlc3QtbGlnaHRib3gtZXZlbnQtcGVybWl0cyI+RXZlbnQgUGVybWl0czwvYT48L2xpPg0KPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5kYWxsYXNzcGVjaWFsZXZlbnRzLmNvbS9maWxtLyIgaWQ9InJlcXVlc3QtbGlnaHRib3gtZmlsbWluZy1wZXJtaXRzIj5GaWxtaW5nIFBlcm1pdHM8L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLXhzLTEyIGxpc3QtaXRlbXMiPg0KPGgzPk5ldyBVdGlsaXR5IFNlcnZpY2VzPC9oMz4NCjx1bD4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5wb3dlcnRvY2hvb3NlLm9yZy8iIGlkPSJyZXF1ZXN0LWxpZ2h0Ym94LWVsZWN0cmljaXR5LXByb3ZpZGVycyI+RWxlY3RyaWNpdHkgUHJvdmlkZXJzPC9hPjwvbGk+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd3d3LmFsbGNvbm5lY3QuY29tL2xvY2FsL3R4L2RhbGxhcyIgaWQ9InJlcXVlc3QtbGlnaHRib3gtdHYiPkNhYmxlLVRWLVNhdGVsbGl0ZTwvYT48L2xpPg0KPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy4ydHVybml0b24uY29tLyIgaWQ9InJlcXVlc3QtbGlnaHRib3gtdXRpbGl0aWVzIj5BY3RpdmF0ZSBVdGlsaXRpZXM8L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCg0KPC9kaXY+DQoNCjwhLS08ZGl2IGlkPSJvcGVuZGF0YSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsgYmFjZ2tncm91bmQtY29sb3I6Z3JleTsiPg0KPGgzPk9wZW4gRGF0YTwvaDM+PGJyLz4NCg0KPGRpdiBjbGFzcz0iaXdhbnR0b2ljb25zIj4NCjx1bD4NCjxsaT48YSBocmVmPSJodHRwczovL3d3dy5kYWxsYXNvcGVuZGF0YS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0ic2VydmljZWltZyIgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvb3BlbmRhdGFpY29uLnBuZyIgYWx0PSJPcGVuIERhdGEgSWNvbiIgLz48YnIgLz5PcGVuIERhdGE8L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwczovL3d3dy5kYWxsYXNvcGVuZGF0YS5jb20vYnJvd3NlP2NhdGVnb3J5PVBvbGljZSZsaW1pdFRvPWRhdGFzZXRzJnV0Zjg9JUUyJTlDJTkzIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0ic2VydmljZWltZyIgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvcG9saWNlaWNvbi5wbmciIGFsdD0iUG9saWNlIEljb24iIC8+PGJyIC8+UG9saWNlPC9hPjwvbGk+DQo8bGkgc3R5bGU9Im1hcmdpbi1yaWdodDowcHg7Ij48YSBocmVmPSJodHRwczovL3d3dy5kYWxsYXNvcGVuZGF0YS5jb20vYnJvd3NlP2NhdGVnb3J5PUZpbmFuY2lhbCZxPUZpbmFuY2lhbCZzb3J0Qnk9cmVsZXZhbmNlJnV0Zjg9JUUyJTlDJTkzIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0ic2VydmljZWltZyIgc3JjPSIvUHVibGlzaGluZ0ltYWdlcy9zdGF0aWMvZmluYW5jaWFsaWNvbi5wbmciIGFsdD0iRmluYW5jZSBJY29uIiAvPjxiciAvPkZpbmFuY2lhbDwvYT48L2xpPg0KPC91bD4NCjxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjb2wtMyBsaXN0LWl0ZW1zIGNvbC1lbmQiIHN0eWxlPSJ3aWR0aDoxMDAlIj4NCjx1bD4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9naXMuZGFsbGFzY2l0eWhhbGwuY29tL3NoYXBlZmlsZURvd25sb2FkLmFzcHgiPkRvd25sb2FkIEdJUyBEYXRhPC9hPjwvbGk+DQo8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZ2lzLmRhbGxhc2NpdHloYWxsLmNvbS9jaXR5aW5mby8iPkludGVyYWN0aXZlIEdJUyBNYXA8L2E+PC9saT4NCjxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9naXMuZGFsbGFzY2l0eWhhbGwuY29tL3N0YXRpY01hcEdhbC5hc3B4Ij5TdGF0aWMgR0lTIE1hcHM8L2E+PC9saT4NCjxsaT48YSBocmVmPSIvZGVwYXJ0bWVudHMvY29kZWNvbXBsaWFuY2UvUGFnZXMvRm9vZFNhZmV0eS5hc3B4Ij5SZXN0YXVyYW50IFNjb3JlczwvYT48L2xpPg0KPC91bD4NCjwvZGl2Pg0KDQo8L2Rpdj4tLT4NCg0KPHNjcmlwdD4NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCg0KICAgICQoIi5pd2FudHRvbW9kYWwiKS5mYW5jeWJveCh7DQogICAgICAgICd0aXRsZVBvc2l0aW9uJyAgICAgOiAnaW5zaWRlJywNCiAgICAgICAgJ3RyYW5zaXRpb25JbicgICAgICA6ICdub25lJywNCiAgICAgICAgJ3RyYW5zaXRpb25PdXQnICAgICA6ICdub25lJw0KICAgIH0pOw0KDQogICAgJCgiLnN3YWdpdCIpLmZhbmN5Ym94KHsNCiAgICAgICAgJ3RpdGxlUG9zaXRpb24nICAgICA6ICdpbnNpZGUnLA0KICAgICAgICAndHJhbnNpdGlvbkluJyAgICAgIDogJ25vbmUnLA0KICAgICAgICAndHJhbnNpdGlvbk91dCcgICAgIDogJ25vbmUnLA0KICAgICAgICAndHlwZScgICAgICAgICAgOiAnaWZyYW1lJywNCiAgICAgICAgJ3dpZHRoJyAgICAgICAgIDogNTcwLA0KICAgICAgICAnaGVpZ2h0JyAgICAgICAgOiA0ODAsDQogICAgICAgICdzY3JvbGxpbmcnICAgICAgICAgOiAnbm8nDQogICAgfSk7DQoNCn0pOw0KDQpmdW5jdGlvbiBmaW5kc2VhcmNoKCl7DQp2YXIgZmluZHNlYXJjaGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmRzZWFyY2hpbnB1dCIpLnZhbHVlOw0KcGFyZW50LmxvY2F0aW9uPSIvcGFnZXMvc2VhcmNocmVzdWx0cy5hc3B4I2s9IiArIGZpbmRzZWFyY2hpbnB1dDsNCn0NCiQoJy5wYXknKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1BheSBMaWdodGJveCBCdXR0b24nLCAnUGF5Jyk7DQp9KTsNCiQoJy5maW5kJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IEJ1dHRvbicsICdGaW5kJyk7DQp9KTsNCiQoJy5yZXF1ZXN0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdSZXF1ZXN0IExpZ2h0Ym94IEJ1dHRvbicsICdSZXF1ZXN0Jyk7DQp9KTsNCiQoJy5vcGVuLWRhdGEnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ0RhdGEgVHJhbnNwYXJlbmN5IExpZ2h0Ym94IEJ1dHRvbicsICdEYXRhIFRyYW5zcGFyZW5jeScpOw0KfSk7DQokKCcjZmluYW50aWFsLXRyYW5zcGFyZW5jeScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnRXh0ZXJuYWwgTGluayBCdXR0b24nLCAnRmluYW5jaWFsIFRyYW5zcGFyZW5jeScpOw0KfSk7DQokKCcjb3Blbi1yZWNvcmRzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQSU8gQnV0dG9uJywgJ09wZW4gUmVjb3JkcyBSZXF1ZXN0Jyk7DQp9KTsNCg0KJCgnI3BheS1saWdodGJveC13YXRlcicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUGF5IExpZ2h0Ym94IExpbmsnLCAnV2F0ZXIgQmlsbCcpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LXRyYWZmaWMtdGlja2V0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdUcmFmZmljIFRpY2tldCcpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LXBhcmtpbmctdGlja2V0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdQYXJraW5nIFRpY2tldCcpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LXJlZC1saWdodC10aWNrZXQnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1BheSBMaWdodGJveCBMaW5rJywgJ1JlZCBMaWdodCBUaWNrZXQnKTsNCn0pOw0KJCgnI3BheS1saWdodGJveC1hbWJ1bGFuY2UtdGlja2V0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdBbWJ1bGFuY2UgQmlsbCcpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LWFsYXJtcy1wZXJtaXRzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdBbGFybXMgUGVybWl0cycpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LWNvdXJ0LXdhcnJhbnRzLWJvbmQnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1BheSBMaWdodGJveCBMaW5rJywgJ0NvdXJ0IFdhcnJhbnRzIGFuZCBCb25kcycpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LXNjaG9vbC1idXMtc3RvcC1hcm0tdGlja2V0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdTY2hvb2wgQnVzIFN0b3AgQXJtIFRpY2tldCcpOw0KfSk7DQokKCcjcGF5LWxpZ2h0Ym94LXBhcmtpbmctbWV0ZXJzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdGb3IgUGFya2luZyBNZXRlcnMnKTsNCn0pOw0KJCgnI3BheS1saWdodGJveC1nYXJhZ2Utc2FsZXMtcGVybWknKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1BheSBMaWdodGJveCBMaW5rJywgJ0dhcmFnZSBTYWxlcyBQZXJtaXQnKTsNCn0pOw0KDQoNCg0KDQoNCiQoJyNwYXktbGlnaHRib3gtaG90ZWwtb2NjdXBhbmN5LXRheCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUGF5IExpZ2h0Ym94IExpbmsnLCAnSG90ZWwgT2NjdXBhbmN5IFRheCAoSE9UKScpOw0KfSk7DQoNCiQoJyNwYXktbGlnaHRib3gtc2hvcnQtdGVybS1yZW50YWxzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdQYXkgTGlnaHRib3ggTGluaycsICdTaG9ydC1UZXJtIFJlbnRhbHMgKEhPVCknKTsNCn0pOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiQoJyNmaW5kc2VhcmNoYnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnU2VhcmNoJyk7DQp9KTsNCiQoJyNmaW5kLWxpZ2h0Ym94LWpvYicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnRmluZCBMaWdodGJveCBMaW5rJywgJ0pvYicpOw0KfSk7DQokKCcjZmluZC1saWdodGJveC1saWJyYXJ5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnTGlicmFyeScpOw0KfSk7DQokKCcjZmluZC1saWdodGJveC1wZXRzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnUGV0cycpOw0KfSk7DQokKCcjZmluZC1saWdodGJveC1wYXJrcy1yZWNyZWF0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnUGFya3MnKTsNCn0pOw0KJCgnI2ZpbmQtbGlnaHRib3gtY3VsdHVyYWwtY2VudGVyJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnYSBDdWx0dXJhbCBDZW50ZXInKTsNCn0pOw0KJCgnI2ZpbmQtbGlnaHRib3gtbWFwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnYSBNYXAnKTsNCn0pOw0KJCgnI2ZpbmQtbGlnaHRib3gtZGFsbGFzLXBhcmsnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ0ZpbmQgTGlnaHRib3ggTGluaycsICdhIFBhcmsnKTsNCn0pOw0KJCgnI2ZpbmQtbGlnaHRib3gtcHJvcGVydHktem9uaW5nJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnUHJvcGVydHkgWm9uaW5nJyk7DQp9KTsNCiQoJyNmaW5kLWxpZ2h0Ym94LXJlc3RhdXJhbnQtc2NvcmVzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnUmVzdGF1cmFudCBTY29yZXMnKTsNCn0pOw0KJCgnI2ZpbmQtbGlnaHRib3gtdHJhc2gtcGlja3VwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdGaW5kIExpZ2h0Ym94IExpbmsnLCAnVHJhc2ggUGlja3VwJyk7DQp9KTsNCg0KJCgnI3JlcXVlc3QtbGlnaHRib3gtYnVpbGRpbmctcGVybWl0cy1pbnNwZWN0aW9ucycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUmVxdWVzdCBMaWdodGJveCBMaW5rJywgJ0J1aWxkaW5nIFBlcm1pdHMgYW5kIEluc3BlY3Rpb25zJyk7DQp9KTsNCiQoJyNyZXF1ZXN0LWxpZ2h0Ym94LW5vbi1lbWVyZ2VuY3ktc2VydmljZXMnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1JlcXVlc3QgTGlnaHRib3ggTGluaycsICczMTEgU2VydmljZXMnKTsNCn0pOw0KJCgnI3JlcXVlc3QtbGlnaHRib3gtYmlydGgtZGVhdGgtY2VydGlmaWNhdGVzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdSZXF1ZXN0IExpZ2h0Ym94IExpbmsnLCAnQmlydGggRGVhdGggQ2VydGlmaWNhdGVzcycpOw0KfSk7DQokKCcjcmVxdWVzdC1saWdodGJveC1ldmVudC1wZXJtaXRzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdSZXF1ZXN0IExpZ2h0Ym94IExpbmsnLCAnRXZlbnQgUGVybWl0cycpOw0KfSk7DQokKCcjcmVxdWVzdC1saWdodGJveC1maWxtaW5nLXBlcm1pdHMnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1JlcXVlc3QgTGlnaHRib3ggTGluaycsICdGaWxtaW5nIFBlcm1pdHMnKTsNCn0pOw0KJCgnI3JlcXVlc3QtbGlnaHRib3gtZWxlY3RyaWNpdHktcHJvdmlkZXJzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdSZXF1ZXN0IExpZ2h0Ym94IExpbmsnLCAnRWxlY3RyaWNpdHkgUHJvdmlkZXJzJyk7DQp9KTsNCiQoJyNyZXF1ZXN0LWxpZ2h0Ym94LXR2Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdSZXF1ZXN0IExpZ2h0Ym94IExpbmsnLCAnQ2FibGUtVFYtU2F0ZWxsaXRlJyk7DQp9KTsNCiQoJyNyZXF1ZXN0LWxpZ2h0Ym94LXV0aWxpdGllcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUmVxdWVzdCBMaWdodGJveCBMaW5rJywgJ0FjdGl2YXRlIFV0aWxpdGllcycpOw0KfSk7DQoNCg0KJCgnI29wZW4tbWVldGluZ3MnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ09mZmljaWFsIFBvc3RpbmdzJywgJ09wZW4gTWVldGluZ3MnKTsNCn0pOw0KJCgnI2NvdW5jaWwtbWVldGluZ3MnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ09mZmljaWFsIFBvc3RpbmdzJywgJ0NvdW5jaWwgTWVldGluZ3MnKTsNCn0pOw0KJCgnI2NvdW5jaWwtYXR0ZW5kYW5jZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnT2ZmaWNpYWwgUG9zdGluZ3MnLCAnQ291bmNpbCBBdHRlbmFuY2UnKTsNCn0pOw0KJCgnI3B1YmxpYy1ub3RpY2VzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdPZmZpY2lhbCBQb3N0aW5ncycsICdQdWJsaWMgTm90aWNlcycpOw0KfSk7DQokKCcjY2l0eS1jYWxlbmRhcicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnT2ZmaWNpYWwgUG9zdGluZ3MnLCAnQ2l0eSBDYWxlbmRhcicpOw0KfSk7DQokKCcjY291bmNpbC1tZW1vcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnT2ZmaWNpYWwgUG9zdGluZ3MnLCAnQ291bmNpbCBNZW1vcycpOw0KfSk7DQokKCcjYnVkZ2V0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdPZmZpY2lhbCBQb3N0aW5ncycsICdCdWRnZXQnKTsNCn0pOw0KJCgnI2NpdHktbWVldGluZy12aWRlbycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnT2ZmaWNpYWwgUG9zdGluZ3MnLCAnV2F0Y2ggQ2l0eSBNZWV0aW5ncyBPbmxpbmUnKTsNCn0pOw0KDQokKCcjcXVpY2stbGlua3Mtam9icycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUXVpY2sgTGlua3MnLCAnSm9icycpOw0KfSk7DQokKCcjcXVpY2stbGlua3Mtd2F0ZXInKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1F1aWNrIExpbmtzJywgJ1dhdGVyIFV0aWxpdGllcycpOw0KfSk7DQokKCcjcXVpY2stbGlua3MtYnVpbGRpbmctcGVybWl0cy1pbnNwZWN0aW9ucycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUXVpY2sgTGlua3MnLCAnQnVpbGRpbmcgUGVybWl0cyBhbmQgSW5zcGVjdGlvbnMnKTsNCn0pOw0KJCgnI3F1aWNrLWxpbmtzLXRyYWZmaWMtdGlja2V0cycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUXVpY2sgTGlua3MnLCAnVHJhZmZpYyBUaWNrZXRzJyk7DQp9KTsNCiQoJyNxdWljay1saW5rcy1jb3VydHMnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1F1aWNrIExpbmtzJywgJ0NvdXJ0IFdhcnJhbnRzIGFuZCBCb25kcycpOw0KfSk7DQokKCcjcXVpY2stbGlua3Mtc2FuaXRhdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnUXVpY2sgTGlua3MnLCAnVHJhc2ggUGlja3VwJyk7DQp9KTsNCiQoJyNxdWljay1saW5rcy0zMTEnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1F1aWNrIExpbmtzJywgJzMxMSBTZXJ2aWNlcycpOw0KfSk7DQokKCcjcXVpY2stbGlua3MtdHJhbnNwb3J0YXRpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1F1aWNrIExpbmtzJywgJ1RyYW5zcG9ydGF0aW9uIGZvciBIaXJlJyk7DQp9KTsNCiQoJyNxdWljay1saW5rcy0yMTEnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJ1F1aWNrIExpbmtzJywgJzIxMSBMaW5rcycpOw0KfSk7DQokKCcjcXVpY2stbGlua3MtYW5pbWFsLXNlcnZpY2VzJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICdRdWljayBMaW5rcycsICdBbmltYWwgU2VydmljZXMnKTsNCn0pOw0KDQoNCiQoJy5idG4tc2Vjb25kYXJ5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSG9tZSBMaW5rcycsICczMTEnLCAnUmVxdWVzdCBhIFNlcnZpY2UnKTsNCn0pOw0KJCgnLmJ0bi1taW5pbWFsLXJldmVyc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICBnYSgnc2VuZCcsICdldmVudCcsICdIb21lIExpbmtzJywgJzMxMScsICdDaGVjayBTdGF0dXMnKTsNCn0pOw0KJCgnLmdvb2dsZWFwcCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnMzExJywgJ0dvb2dsZSBQbGF5IFN0b3JlJyk7DQp9KTsNCiQoJy5hcHBsZWFwcCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgJ0hvbWUgTGlua3MnLCAnMzExJywgJ0FwcGxlIFN0b3JlJyk7DQp9KTsNCiQoJy5idG4uc2Vjb25kYXJ5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAnSGVybycsICc3LzdFdmVudCcsICdMZWFybiBNb3JlJyk7DQp9KTsNCjwvc2NyaXB0Pg0KPHNjcmlwdD4NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAvL2FkZCBhIGN1c3RvbSBjbGljayBldmVudCB0byBhbnkgbGluayBvciBidXR0b24gd2l0aCBjdXN0b20gR29vZ2xlIEFuYWx5aWNzIHRyYWNraW5nIGRhdGENCiAgICAkKCdhW2RhdGEtZ2EtY2F0ZWdvcnldLGJ1dHRvbltkYXRhLWdhLWNhdGVnb3J5XSxpbnB1dFtkYXRhLWdhLWNhdGVnb3J5XVt0eXBlPSJzdWJtaXQiXSxpbnB1dFtkYXRhLWdhLWNhdGVnb3J5XVt0eXBlPSJidXR0b24iXScpLmVhY2goZnVuY3Rpb24gKGksIGVsZW1lbnQpIHsNCiAgICAgICAgJChlbGVtZW50KS5jbGljayhmdW5jdGlvbiAoKSB7IHJlY29yZEdvb2dsZUV2ZW50cyhlbGVtZW50KSB9KTsNCiAgICB9KTsNCiAgICAvL2FkZCBhIGN1c3RvbSBjaGFuZ2UgZXZlbnQgdG8gY2VydGFpbiB0eXBlcyBvZiBmb3JtIGVsZW1lbnQgd2l0aCBjdXN0b20gR29vZ2xlIEFuYWx5aWNzIHRyYWNraW5nIGRhdGENCiAgICAkKCdzZWxlY3RbZGF0YS1nYS1jYXRlZ29yeV0scmFkaW9bZGF0YS1nYS1jYXRlZ29yeV0sdGV4dGFyZWFbZGF0YS1nYS1jYXRlZ29yeV0saW5wdXRbZGF0YS1nYS1jYXRlZ29yeV1bdHlwZT0idGV4dCJdLGlucHV0W2RhdGEtZ2EtY2F0ZWdvcnldW3R5cGU9ImNoZWNrYm94Il0saW5wdXRbZGF0YS1nYS1jYXRlZ29yeV1bdHlwZT0iZmlsZSJdLGlucHV0W2RhdGEtZ2EtY2F0ZWdvcnldW3R5cGU9ImltYWdlIl0saW5wdXRbZGF0YS1nYS1jYXRlZ29yeV1bdHlwZT0icGFzc3dvcmQiXScpLmVhY2goZnVuY3Rpb24gKGksIGVsZW1lbnQpIHsNCiAgICAgICAgJChlbGVtZW50KS5jaGFuZ2UoZnVuY3Rpb24gKCkgeyByZWNvcmRHb29nbGVFdmVudHMoZWxlbWVudCkgfSk7DQogICAgfSk7DQogICAgZnVuY3Rpb24gcmVjb3JkR29vZ2xlRXZlbnRzKGVsZW1lbnQpIHsNCiAgICAgICAgY29uc29sZS5sb2coImJlZ2luIHJlY29yZEdvb2dsZUV2ZW50cyIpOw0KICAgICAgICB2YXIgY2F0ZWdvcnkgPSAkKGVsZW1lbnQpLmRhdGEoImdhLWNhdGVnb3J5Iik7DQogICAgICAgIHZhciBhY3Rpb24gPSAkKGVsZW1lbnQpLmRhdGEoImdhLWFjdGlvbiIpOw0KICAgICAgICB2YXIgbGFiZWwgPSAkKGVsZW1lbnQpLmRhdGEoImdhLWxhYmVsIik7DQogICAgICAgIHZhciB2YWx1ZSA9ICQoZWxlbWVudCkuZGF0YSgiZ2EtdmFsdWUiKTsNCiAgICAgICAgLy9kZWZhdWx0IHZhbHVlcw0KICAgICAgICBpZiAodHlwZW9mIChhY3Rpb24pID09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgICBhY3Rpb24gPSAiIjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodHlwZW9mIChsYWJlbCkgPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgIGxhYmVsID0gIiI7DQogICAgICAgIH0NCiAgICAgICAgLy9zZW5kIGV2ZW50IHdpdGggYSB2YWx1ZSBwYXJhbWV0ZXIgb25seSBpZiBvbmUgaXMgcHJvdmlkZWQNCiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICJ1bmRlZmluZWQiIHx8IHZhbHVlID09PSAiIiB8fCBpc05hTih2YWx1ZSkpIHsNCiAgICAgICAgICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwpOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCBjYXRlZ29yeSwgYWN0aW9uLCBsYWJlbCwgdmFsdWUpOw0KICAgICAgICB9DQogICAgfQ0KfSk7DQo8L3NjcmlwdD5kBSZnXzI3ZDQ1ODI3XzIyOTRfNGVlMF9iYTIyXzE1MDkzNWY4NjJjMw9kFgJmDxYEHwIFH21zLXJ0ZS1lbWJlZGNvZGUgbXMtcnRlLWVtYmVkd3AfAQXzETxkaXYgaWQ9Imhlcm8iPg0KICAgICAgPGRpdiBpZD0iaGVyby1jdGEiPg0KPGRpdiAgY2xhc3M9Imhlcm8tY3RhLXBvc2l0aW9uIj4NCjxoMSBjbGFzcz0iY3RhLXdlbGNvbWUiPldlbGNvbWUgdG8gRGFsbGFzPC9oMT48aDIgY2xhc3M9ImN0YS1zdWJ0aXRsZSI+Q29tbWl0dGVkIFRvICJTZXJ2aWNlIEZpcnN0IiBFeGNlbGxlbmNlPC9oMj48YSBpZD0iZXhwbG9yZSIgaHJlZj0iI3BvcHVsYXJsaW5rcyIgYXJpYS1sYWJlbD0iSnVtcCBUbyBNYWluIENvbnRlbnQiPjxzcGFuIGNsYXNzPSJzY3JvbGwtZG93biI+PC9zcGFuPjwvYT4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCg0KPCEtLXNjcm9sbC0tPg0KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdhW2lkJD0iZXhwbG9yZSJdJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgICAgICBzZXRQb3NpdGlvbigiI3BvcHVsYXJsaW5rcyIsIGUpOw0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gc2V0UG9zaXRpb24oc2VjdGlvbiwgZSkgew0KICAgICAgICAgICAgICAgICAgICAkKCIjczQtd29ya3NwYWNlIikuYW5pbWF0ZSh7DQogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQoc2VjdGlvbikub2Zmc2V0KCkudG9wDQogICAgICAgICAgICAgICAgICAgIH0sIDgwMCk7DQogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICB9DQo8L3NjcmlwdD4NCg0KPHNjcmlwdCBzcmM9Imh0dHBzOi8vdXNlLnR5cGVraXQubmV0L2RzajRybXkuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdD50cnl7VHlwZWtpdC5sb2FkKHsgYXN5bmM6IHRydWUgfSk7fWNhdGNoKGUpe308L3NjcmlwdD4NCg0KPHN0eWxlPg0KLmN0YS13ZWxjb21lIHsNCmZvbnQtZmFtaWx5OiBQcm94aW1hTm92YS1Cb2xkLCBzYW5zLXNlcmlmOw0KZm9udC1zaXplOiA2OHB4Ow0KY29sb3I6ICNGRkZGRkY7DQpsZXR0ZXItc3BhY2luZzogNHB4Ow0KbGluZS1oZWlnaHQ6IDk2cHg7DQp0ZXh0LXNoYWRvdzogLTNweCAtMXB4IDVweCByZ2JhKDAsMCwwKTsNCmZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50Ow0KdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsNCn0NCi5jdGEtc3VidGl0bGUgew0KZm9udC1mYW1pbHk6IFByb3hpbWFOb3ZhLVNlbWlib2xkLCAnTGF0bycsIHNhbnMtc2VyaWY7DQpmb250LXNpemU6IDIycHg7DQpjb2xvcjogI0ZGRkZGRjsNCmxldHRlci1zcGFjaW5nOiAzcHg7DQpsaW5lLWhlaWdodDogMzFweDsNCnRleHQtc2hhZG93OiAtMnB4IC0ycHggM3B4IHJnYigwIDAgMCk7DQp0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KfQ0KI2hlcm8tY3RhIGgxIHsNCnBhZGRpbmctdG9wOiA1MHB4Ow0KfQ0KI2hlcm8tY3RhIC5zY3JvbGwtZG93biB7DQogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7DQp9DQojaGVyby1jdGEgew0KICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsNCnBvc2l0aW9uOiByZWxhdGl2ZTsNCn0NCiNoZXJvIHsNCiAgICBoZWlnaHQ6IDMwMHB4Ow0KfQ0KLmhlcm8tY3RhLXBvc2l0aW9uIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBsZWZ0OiA1MCU7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsgDQp3aWR0aDogMTAwJTt9DQoNCi8qIEN1c3RvbSwgaVBob25lIFJldGluYSAqLyANCiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAzMjBweCkgew0KLmhlcm8tY3RhLXBvc2l0aW9uIHsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgYm90dG9tOiAyNXB4Ow0Kd2lkdGg6IDkwJTt9DQogICAgfQ0KLyogRXh0cmEgU21hbGwgRGV2aWNlcywgUGhvbmVzICovIA0KICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDQ4MHB4KSB7DQouaGVyby1jdGEtcG9zaXRpb24gew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICBib3R0b206IDcwcHg7fQ0KICAgIH0NCi8qIE1lZGl1bSBEZXZpY2VzLCBEZXNrdG9wcyAqLw0KICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5MnB4KSB7DQouaGVyby1jdGEtcG9zaXRpb24gew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICBib3R0b206IDM1cHg7fQ0KICAgIH0NCjwvc3R5bGU+ZAIFD2QWAgICD2QWAgICD2QWAgIFD2QWAgIDDxYCHgdWaXNpYmxlaBYCZg9kFgQCAg9kFgYCAQ8WAh8DaGQCAw8WAh8DaGQCBQ8WAh8DaGQCAw8PFgIeCUFjY2Vzc0tleQUBL2RkZPh/o7Z4anuIjKQ4ZwAovBIbBEl+d7NJ3FkmEqDB8ITl">
<script type="text/javascript">
//<![CDATA[
var MSOWebPartPageFormName = 'aspnetForm';
var g_presenceEnabled = true;
var g_wsaEnabled = false;
var g_wsaQoSEnabled = false;
var g_wsaQoSDataPoints = [];
var g_wsaLCID = 1033;
var g_wsaListTemplateId = 850;
var g_wsaSiteTemplateId = 'BLANKINTERNET#0';
var _fV4UI = true;
var _spPageContextInfo = {
webServerRelativeUrl: "\u002f",
webAbsoluteUrl: "https:\u002f\u002fdallascityhall.com",
siteAbsoluteUrl: "https:\u002f\u002fdallascityhall.com",
serverRequestPath: "\u002fPages\u002fdefault.aspx",
layoutsUrl: "_layouts\u002f15",
webTitle: "Dallas City Hall",
webTemplate: "53",
tenantAppVersion: "0",
isAppWeb: false,
Has2019Era: true,
webLogoUrl: "\u002fSiteAssets\u002fcod-site-icon.jpg",
webLanguage: 1033,
currentLanguage: 1033,
currentUICultureName: "en-US",
currentCultureName: "en-US",
clientServerTimeDelta: new Date("2022-03-31T08:41:44.4368487Z") - new Date(),
siteClientTag: "7793$$15.0.5223.1000",
crossDomainPhotosEnabled: false,
webUIVersion: 15,
webPermMasks: {
High: 16,
Low: 196705
},
pageListId: "{4a35db85-1d01-4ce0-9804-6a1072e5021e}",
pageItemId: 533,
pagePersonalizationScope: 1,
alertsEnabled: true,
siteServerRelativeUrl: "\u002f",
allowSilverlightPrompt: 'True'
};
document.onreadystatechange = fnRemoveAllStatus;
function fnRemoveAllStatus() {
removeAllStatus(true)
};
var _spWebPartComponents = new Object(); //]]>
</script>
<script src="../_layouts/15/blank%EF%B9%96rev=ZaOXZEobVwykPO9g8hq%EA%A4%B78A==.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
(function() {
if (typeof(_spBodyOnLoadFunctions) === 'undefined' || _spBodyOnLoadFunctions === null) {
return;
}
_spBodyOnLoadFunctions.push(function() {
ExecuteOrDelayUntilScriptLoaded(function() {
var pairs = SP.ScriptHelpers.getDocumentQueryPairs();
var followDoc, itemId, listId, docName;
for (var key in pairs) {
if (key.toLowerCase() == 'followdocument') followDoc = pairs[key];
else if (key.toLowerCase() == 'itemid') itemId = pairs[key];
else if (key.toLowerCase() == 'listid') listId = pairs[key];
else if (key.toLowerCase() == 'docname') docName = decodeURI(pairs[key]);
}
if (followDoc != null && followDoc == '1' && listId != null && itemId != null && docName != null) {
SP.SOD.executeFunc('followingcommon.js', 'FollowDocumentFromEmail', function() {
FollowDocumentFromEmail(itemId, listId, docName);
});
}
}, 'SP.init.js');
});
})();
(function() {
if (typeof(_spBodyOnLoadFunctions) === 'undefined' || _spBodyOnLoadFunctions === null) {
return;
}
_spBodyOnLoadFunctions.push(function() {
if (typeof(SPClientTemplates) === 'undefined' || SPClientTemplates === null || (typeof(APD_InAssetPicker) === 'function' && APD_InAssetPicker())) {
return;
}
var renderFollowFooter = function(renderCtx, calloutActionMenu) {
if (renderCtx.ListTemplateType == 700) myDocsActionsMenuPopulator(renderCtx, calloutActionMenu);
else CalloutOnPostRenderTemplate(renderCtx, calloutActionMenu);
var listItem = renderCtx.CurrentItem;
if (typeof(listItem) === 'undefined' || listItem === null) {
return;
}
if (listItem.FSObjType == 0) {
calloutActionMenu.addAction(new CalloutAction({
text: Strings.STS.L_CalloutFollowAction,
tooltip: Strings.STS.L_CalloutFollowAction_Tooltip,
onClickCallback: function(calloutActionClickEvent, calloutAction) {
var callout = GetCalloutFromRenderCtx(renderCtx);
if (!(typeof(callout) === 'undefined' || callout === null)) callout.close();
SP.SOD.executeFunc('followingcommon.js', 'FollowSelectedDocument', function() {
FollowSelectedDocument(renderCtx);
});
}
}));
}
};
var registerOverride = function(id) {
var followingOverridePostRenderCtx = {};
followingOverridePostRenderCtx.BaseViewID = 'Callout';
followingOverridePostRenderCtx.ListTemplateType = id;
followingOverridePostRenderCtx.Templates = {};
followingOverridePostRenderCtx.Templates.Footer = function(renderCtx) {
var renderECB;
if (typeof(isSharedWithMeView) === 'undefined' || isSharedWithMeView === null) {
renderECB = true;
} else {
var viewCtx = getViewCtxFromCalloutCtx(renderCtx);
renderECB = !isSharedWithMeView(viewCtx);
}
return CalloutRenderFooterTemplate(renderCtx, renderFollowFooter, renderECB);
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(followingOverridePostRenderCtx);
}
registerOverride(101);
registerOverride(700);
});
})();
if (typeof(DeferWebFormInitCallback) == 'function') DeferWebFormInitCallback(); //]]>
</script>
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="BAB98CB3">
<!-- Google Tag Manager -->
<noscript>
<iframe src="https://googletagmanager.com/ns.html?id=GTM-P2GHZW" height="0" width="0" style="display:none;visibility:hidden">
</iframe>
</noscript>
<script>
//<![CDATA[
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-P2GHZW');
//]]>
</script>
<!-- End Google Tag Manager -->
<div id="ms-designer-ribbon">
<div>
<div id="s4-ribbonrow" style="visibility: hidden; display: none; height: 0px;"></div>
</div>
</div>
<div id="ctl00_g_c06763ce_4062_40f5_928c_2ae65f7854cc" __markuptype="vsattributemarkup" __webpartid="{c06763ce-4062-40f5-928c-2ae65f7854cc}" webpart="true" isclosed="false">
</div>
<div id="s4-workspace" style="height: 1200px; width: 1600px;">
<div class="s4-notdlg top-row">
<!-- start s4 top row-->
<div id="outerWrapper" unselectable="on">
<!-- start outerWrapper-->
<nav id="mainNav" unselectable="on" class="noindex">
</nav>
</div>
</div>
<div id="s4-bodyContainer" role="main">
<!--start s4bodycontainer -->
<div id="mainBodyStart">
<!--placeholdermain-->
<span id="DeltaPlaceHolderMain">
<div class="full-width">
<div data-name="WebPartZone">
<div>
<div class="ms-webpart-zone ms-fullWidth">
<div id="MSOZoneCell_WebPartctl00_ctl48_g_9639c52b_9fed_44d5_8184_d5493328b5c5" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="9639c52b-9fed-44d5-8184-d5493328b5c5" haspers="false" id="WebPartctl00_ctl48_g_9639c52b_9fed_44d5_8184_d5493328b5c5" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_9639c52b_9fed_44d5_8184_d5493328b5c5">
<script type="text/javascript">
$(document).ready(function() {
// Hide the "view" div.
var count = $("#alertsul").children().length;
if (count != 0) {
$('.content').css({
'display': 'block'
});
$('.alertdiv').css({
'display': 'block'
});
if ($('.sa').css('display') == 'block') // if alertdisplayval=1 none
{
if ($('#sa-btn').hasClass('close')) $('#sa-btn').toggleClass('open');
}
$('div.slide').click(function() {
// When clicked, toggle the "view" div.
$('.sa').slideToggle(400);
return false;
});
}
});
function changeClass() {
if ($('#sa-btn').hasClass('close')) {
$('#sa-btn').toggleClass('open');
} else {
$('#sa-btn').toggleClass('close');
}
}
</script>
<div class="service-alert-bar content">
<div id="ctl00_ctl48_g_9639c52b_9fed_44d5_8184_d5493328b5c5_sa" class="service-alert-content container sa" style="display:none;">
</div>
</div>
<div class="alertdiv">
<div class="slide sa-btn">
<a href="#" id="sa-btn" class="btn btn-service-alert close slide" onclick="changeClass()">Public Alerts</a>
</div>
</div>
</div>
<div class="ms-clear"></div>
</div>
</div>
<div class="ms-PartSpacingVertical"></div>
</div>
<div id="MSOZoneCell_WebPartctl00_ctl48_g_27d45827_2294_4ee0_ba22_150935f862c3" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="27d45827-2294-4ee0-ba22-150935f862c3" haspers="false" id="WebPartctl00_ctl48_g_27d45827_2294_4ee0_ba22_150935f862c3" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_27d45827_2294_4ee0_ba22_150935f862c3">
<div class="ms-rte-embedcode ms-rte-embedwp">
<div id="hero">
<div id="hero-cta">
<div class="hero-cta-position">
<h1 class="cta-welcome">Welcome to Dallas</h1>
<h2 class="cta-subtitle">Committed To "Service First" Excellence</h2><a id="explore" href="#popularlinks" aria-label="Jump To Main Content"><span class="scroll-down"></span></a>
</div>
</div>
</div>
<!--scroll-->
<script type="text/javascript">
//<![CDATA[
$(document).on('click', 'a[id$="explore"]', function(e) {
setPosition("#popularlinks", e);
});
function setPosition(section, e) {
$("#s4-workspace").animate({
scrollTop: $(section).offset().top
}, 800);
e.preventDefault();
}
</script>
<script src="https://use.typekit.net/dsj4rmy.js"></script>
<script>
try {
Typekit.load({
async: true
});
} catch (e) {}
</script>
<style>
.cta-welcome {
font-family: ProximaNova-Bold, sans-serif;
font-size: 68px;
color: #FFFFFF;
letter-spacing: 4px;
line-height: 96px;
text-shadow: -3px -1px 5px rgba(0, 0, 0);
font-style: normal !important;
text-transform: uppercase;
}
.cta-subtitle {
font-family: ProximaNova-Semibold, 'Lato', sans-serif;
font-size: 22px;
color: #FFFFFF;
letter-spacing: 3px;
line-height: 31px;
text-shadow: -2px -2px 3px rgb(0 0 0);
text-transform: uppercase;
}
#hero-cta h1 {
padding-top: 50px;
}
#hero-cta .scroll-down {
margin: 0 !important;
}
#hero-cta {
padding: 0 !important;
position: relative;
}
#hero {
height: 300px;
}
.hero-cta-position {
position: absolute;
left: 50%;
border-radius: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
width: 100%;
}
/* Custom, iPhone Retina */
@media only screen and (min-width : 320px) {
.hero-cta-position {
position: absolute;
bottom: 25px;
width: 90%;
}
}
/* Extra Small Devices, Phones */
@media only screen and (min-width : 480px) {
.hero-cta-position {
position: absolute;
bottom: 70px;
}
}
/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {
.hero-cta-position {
position: absolute;
bottom: 35px;
}
}
</style>
</div>
</div>
<div class="ms-clear"></div>
</div>
</div>
<div class="ms-PartSpacingVertical"></div>
</div>
<div id="MSOZoneCell_WebPartctl00_ctl48_g_4b4ea764_091e_4f61_90c4_ec841f9d576e" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="4b4ea764-091e-4f61-90c4-ec841f9d576e" haspers="false" id="WebPartctl00_ctl48_g_4b4ea764_091e_4f61_90c4_ec841f9d576e" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_4b4ea764_091e_4f61_90c4_ec841f9d576e">
<div class="ms-rte-embedcode ms-rte-embedwp">
<div id="homepage">
<!--
<div class="text-center" style="padding:20px;background-color:#FFB333;"><div class="container"><a href="/Pages/Corona-Virus.aspx" style="text-decoration: underline;color:#001B3B;background-image:url('/PublishingImages/coronavirus/blue-alert-icon.png');background-repeat:no-repeat; background-size:20px 20px; background-position:10px; padding-left:40px;font-size:22px">Important Information Regarding Coronavirus (COVID–19)</a></div></div>
-->
<div style="clear:both; background-color:#7EC6FF;">
<div class="col-xs-12 text-center" style="background-color:#FFB333; padding:20px">
<a href="Corona-Virus.aspx.html" style="font-size:22px; color:#001B3B; text-decoration: underline; padding:20px;"><img src="../PublishingImages/coronavirus/blue-alert-icon.png" style="height: 20px; margin-right: 10px; padding-bottom: 2px; " alt="">Important COVID-19 Information</a>
</div>
<div style="clear: both; height: 0px; width:100%"></div>
</div>
<div class="col-xs-12 text-center" style="display:none;">
<h2 style="color:#666; font-style:italic; font-family:'Lato';font-size:22px;font-weight:normal;padding:15px 0;margin-bottom:30px;">Our core values are Empathy, Ethics, Excellence, Equity</h2>
</div>
<div>
<br>
<br>
<div class="spotlight-title">
<h2 style="color: rgb(68 68 68); text-align: center; font-size: 2em;">VIRTUAL CONSULTING</h2>
</div>
<div>
<script src="https://dallas.citizenservice-digital.com/api/iframe.js"></script>
<script>
iFrameResize({
log: false,
scrolling: false
}, '#sws_iframe');
</script>
<div>
<iframe id="sws_iframe" src="https://dallas.citizenservice-digital.com/?footer=false&iframe=true&fontColor=#002664&bgColor=#FFFFFF&appointBtnBgColor=#033F88&detach=true&iframeid=sws_iframe"
style="border: none; width: 1500px; margin-top: 10px; margin-left: 20px; height: 400px;"></iframe>
</div>
</div>
</div>
</div>
<div id="popularlinks">
<div class="container">
<!--column one-->
<div class="col-3">
<div id="todayiwantto">
<ul id="todayiwantto-ul">
<li class="pay"><a class="iwanttomodal btn btn-md" href="#pay">Pay</a></li>
<li class="find"><a class="iwanttomodal btn btn-md" href="#find">Find</a></li>
<li class="request"><a class="iwanttomodal btn btn-md" href="#request">Request</a></li>
<li class="open-data"><a href="Dallas-Datahub.aspx.html" class="btn btn-md">Dallas Data Hub</a></li>
<li><a href="http://financialtransparency.dallascityhall.com/" target="_blank" id="finantial-transparency" class="btn btn-md">Financial Transparency</a></li>
<!--<li class="open-data"><a class="iwanttomodal btn btn-md" href="#opendata">Open Data</a></li>
-->
<!--<li><a href="/departments/public-affairs-outreach/openrecords/Pages/default.aspx" id="open-records" class="btn btn-md">Open Records Request</a></li>-->
<li><a href="https://dallastx.govqa.us/WEBAPP/_rs/(S(avfiv4hn1rrrqmlj54tmazfp))/SupportHome.aspx?sSessionID=" target="_blank" id="open-records" class="btn btn-md">Open Records Request</a></li>
</ul>
</div>
</div>
<!--column one-->
<div class="col-3">
<div id="officialpostings" class="official-postings list-items" style="overflow:hidden;">
<h3 style="color: rgb(68, 68, 68)">Official Postings</h3>
<ul class="hm-box-links">
<li><a href="../departments/budget/financialtransparency/Pages/Current-Budget.aspx.html" id="budget">FY 2021-22 Adopted Budget</a></li>
<li><a href="https://cityofdallas.legistar.com/" id="council-meetings" target="_blank">Council Meetings</a></li>
<li><a href="../government/citycouncil/Pages/council-attendance.aspx.html" id="council-attendance">Council Attendance</a></li>
<li><a href="../calendar/Pages/default.aspx.html" id="city-calendar">City Calendar</a></li>
<li><a href="public-notices.aspx.html" id="public-notices">Public Notices</a></li>
<li><a href="../government/citysecretary/Pages/Public-Meetings.aspx.html" id="open-meetings">Open Meetings</a></li>
<li><a href="../government/citymanager/Pages/council-memos.aspx.html" id="council-memos">Council Memos</a></li>
<li>
<a href="watch-city-meetings-online.aspx.html" class="swagit btn" style="background-color:rgb(3,63,136); padding:11px 10px; text-align:center; color:white;margin:0;" id="city-meeting-video">Watch City Meetings Online</a>
</li>
</ul>
</div>
</div>
<div class="col-3 col-end">
<div id="officialpostings2" class="official-postings list-items">
<h3 style="color: rgb(68, 68, 68)">Quick Links</h3>
<ul class="hm-box-links">
<li><a href="../departments/waterutilities/Pages/default.aspx.html" id="quick-links-water">Water Utilities</a></li>
<li><a href="../departments/sanitation/Pages/default.aspx.html" id="quick-links-sanitation">Trash Pickup</a></li>
<li><a href="../departments/sustainabledevelopment/buildinginspection/Pages/index.aspx.html" id="quick-links-building-permits-inspections">Building Permits & Inspections</a></li>
<li><a href="../departments/humanresources/employment/Pages/default.aspx.html" id="quick-links-jobs">Jobs</a></li>
<li><a href="../departments/courtdetentionservices/Pages/default.aspx.html" id="quick-links-traffic-tickets">Traffic & Civil Tickets</a></li>
<li><a href="../departments/courtdetentionservices/Pages/Warrant-Info.aspx.html" id="quick-links-courts">Court Warrants & Bonds</a></li>
<li><a href="../departments/dallas-animal-services/Pages/default.aspx.html" id="quick-links-animal-services">Animal Services</a></li>
<li><a href="https://www.211texas.org/" id="quick-links-211" target="_blank">2-1-1 Texas (State Assistance)</a></li>
</ul>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
<section class="services-banner">
<div class="service311 col-md-12 col-xs-12">
<div class="col-lg-6 col-md-6 col-xs-12" id="picture311app">
<div class="in-middle">
<h3><span>Download the New </span><br>OurDallas Mobile App</h3>
<a href="https://itunes.apple.com/us/app/dallas-311/id692902088?mt=8#" target="_blank" class="appicon"><img src="../PublishingImages/static/app-store-badge.png" class="app-badge appleapp" alt="Apple App Store Badge"></a>
<a href="https://play.google.com/store/apps/details?id=com.dallascityhall.dallas311&hl=en" target="_blank" class="appicon"><img src="../PublishingImages/static/google-play-badge.png" class="app-badge googleapp" alt="Google Play Store Badge"></a>
</div>
<div class="check visible-xxs col-xs-12">
<img id="dallas311mobile" src="../PublishingImages/static/311-mobile-app-new.jpg" alt="Dallas 311 Mobile app" title="Dallas-311-Mobile-App" media-simple="true">
<!-- <h3>Check Service Request Status</h3>
<input type="text" placeholder="Service Request # (i.e. 19-00000001)" class="textField searchinput" onkeydown="search311(event)" /> -->
</div>
</div>
<div class="col-lg-6 col-md-6 col-xs-12">
<div class="inner-311">
<div class="inner-311-title">
<h3>311 Frequently Requested Services</h3>
</div>
<ul class="unlisted">
<li><a href="https://dallascrm.force.com/public/request/CODEGENERAL/location" target="_blank">Code Concerns</a></li>
<li><a href="https://dallascrm.force.com/public/request/SPSVSNOT/location" target="_blank">Sanitation Roll Cart</a></li>
<li><a href="https://dallascrm.force.com/public/request/SANMISGA/location" target="_blank">Missed Garbage</a></li>
<li><a href="https://dallascrm.force.com/public/request/STSROUST/location" target="_blank">Street Repair</a></li>
<li><a href="https://dallascrm.force.com/public/request/PWTROV/location" target="_blank">Parking – Report a Violation</a></li>
<li><a href="https://dallascrm.force.com/public/request/ANILOSDC/location" target="_blank">Animal Loose</a></li>
<li><a href="https://dallascrm.force.com/public/request/DEADANPU/location" target="_blank">Dead Animal Pick Up</a></li>
<li><a href="https://dallascrm.force.com/public/request/DPD24HR/location" target="_blank">24 Hour Parking</a></li>
</ul>
<div class="home-311-buttons">
<a href="https://dallascrm.force.com/public/servicetypes" target="_blank" class="btn btn-secondary btn-side btn-md" style="font-size: 1em; background-color:#8EC900;color:#222222;">Request a Service</a>
<a href="../services/311/Pages/default.aspx.html" class="btn btn-minimal-reverse btn-side btn-md" style="font-size: 1em">About 311</a>
<!--<a href="https://dallascrm.force.com/Dallas311Knowledge/s/" target="_blank" class="btn btn-minimal-reverse btn-side btn-md" style="font-size: 1em">311 Knowledgebase</a>-->
</div>
</div>
</div>
<div class="service311 check hidden-xs">
<label for="check-service-request" style="font-size: 1.4em;padding: 5px 20px;max-width: 350px;display: inline-block;color: #fff;border-bottom: none;">Check Service Request Status</label>
<input type="text" placeholder="Service Request # (i.e. 19-00000001)" class="textField" onkeydown="search311(event)" id="check-service-request">
</div>
</div>
</section>
<style>
.in-middle {
background: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.7)), url('../PublishingImages/static/311-mobile-app-new.jpg');
/*background-image: url("../PublishingImages/static/311-mobile-app-new.jpg");*/
background-size: cover;
background-repeat: no-repeat;
left: 40px;
padding-bottom: 30px;
height: 100%;
padding: 230px 0 0 40px;
}
.in-middle h3 {
font-size: 28px;
font-weight: 500;
}
.in-middle h3 span {
font-size: 22px;
border: none;
font-style: italic;
padding-bottom: 0px;
}
.service311 {
padding: 0px;
background-color: #0166ce;
}
.service311 ul {
padding-left: 0px;
padding-bottom: 15px;
}
.service311 h3 {
font-weight: 500;
}
.service311 h2,
.service311 h3 {
color: #fff;
border-bottom: none;
}
.service311 ul li a {
color: #e9ebf0;
border-bottom: none;
}
.service311 ul li {
border-bottom: 1px solid rgba(205, 205, 205, 0.2);
padding-top: 8px;
padding-bottom: 6px;
}
#picture311app {
height: 370px;
overflow: hidden;
padding: 0;
}
#dallas311mobile {
width: 100%;
opacity: 0.8;
background-color: #000;
}
.appicon {
width: 150px;
padding-right: 10px;
}
.appicon img {
width: 120px !important;
padding-right: 10px;
height: 35px;
}
.check {
background-color: #033d79;
padding: 20px 0;
display: inline-block;
width: 100%;
text-align: center;
}
.check h3 {
padding: 5px 20px;
max-width: 350px;
display: inline-block;
}
.check input {
max-width: 90%;
padding-left: 20px;
padding: 10px;
height: 45px;
width: 700px;
}
.hidden-xxs {
visibility: visible;
}
.visible-xxs {
display: none;
}
.inner-311 ul {
column-count: 2;
}
.inner-311-title h3 {
padding-bottom: 0;
}
section.services-banner {
background-color: #0166ce;
}
section.services-banner {
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
.mbr-z-index20 {
z-index: 20;
}
/*! Media */
.media-size-item {
-webkit-flex: 1 1 auto;
-moz-flex: 1 1 auto;
-ms-flex: 1 1 auto;
-o-flex: 1 1 auto;
flex: 1 1 auto;
}
.media-content {
-webkit-flex-basis: 100%;
flex-basis: 100%;
}
.media-container-row {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-align-content: center;
-ms-flex-line-pack: center;
align-content: center;
-webkit-align-items: start;
-ms-flex-align: start;
align-items: start;
}
.media-container-row .media-size-item {
width: 375px;
}
.media-container-column {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-align-content: center;
-ms-flex-line-pack: center;
align-content: center;
-webkit-align-items: stretch;
-ms-flex-align: stretch;
align-items: stretch;
}
.media-container-column>* {
width: 100%;
}
@media (min-width: 582px) {
.service311 ul li:nth-child(4n+4) {
border-bottom: none;
}
.media-container-row {
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
}
.mbr-figure img,
.mbr-figure iframe {
display: block;
width: 100%;
}
.mbr-figure {
-ms-flex-item-align: center;
-ms-grid-row-align: center;
-webkit-align-self: center;
align-self: center;
}
.media-container>div {
max-width: 100%;
}
.mbr-figure img,
.card-img img {
width: 100%;
}
@media (max-width: 581px) {
.media-size-item {
width: auto !important;
}
.mbr-figure {
width: 100% !important;
}
#dallas311mobile {
opacity: 1;
position: relative;
}
.in-middle {
background-image: none;
padding-bottom: 30px;
height: 170px;
padding: 30px 0 0 30px;
}
.inner-311-title {
text-align: center;
}
.inner-311 {
padding: 1.5rem;
}
.home-311-buttons {
text-align: center;
}
.home-311-buttons .btn {
/*width: 160px;*/
}
.in-middle h3,
.in-middle h2 {
color: #333;
}
#picture311app {
width: 100%;
height: auto;
background-color: #fff;
}
.check {
padding: 0;
}
.check h3 {
padding: 15px 0 5px 0;
}
.hidden-xxs {
display: none;
}
.visible-xxs {
display: block;
}
.inner-311 ul {
column-count: 1;
}
}
/* 311 information */
.align-self-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.px-3 {
padding-left: 1rem !important;
}
.py-2 {
padding-top: .5rem !important;
padding-bottom: .5rem !important;
}
.align-self-center {
-ms-flex-item-align: center !important;
align-self: center !important;
}
.inner-311 {
position: relative;
top: auto;
}
/* Custom, iPhone Retina */
@media only screen and (min-width : 320px) {
.media-container-row {
height: auto;
overflow: auto;
}
.px-3 {
padding-right: 0;
}
}
/* Extra Small Devices, Phones */
@media only screen and (min-width : 480px) {
.px-3 {
padding-right: 1rem !important;
}
.inner-311 {
padding: 60px 30px 10px 30px;
width: 100%;
}
}
/* Large Devices, Wide Screens */
@media only screen and (min-width : 1400px) {
.media-container-row {
height: auto;
overflow: hidden;
}
}
</style>
</div>
<div class="clearfix"></div>
<div id="find" style="display:none; bacgkground-color:grey;">
<h3>Find</h3><br>
<div>
<input style="width:70%;border-radius:100px;border:solid 1px #ddd;padding:6px 10px;" id="findsearchinput">
<button type="button" style="margin-left:10px;border-radius:0.3em;padding:6px;color:white;background-color:#690;" class="searchBtn" id="findsearchbutton" onclick="findsearch()">Search</button>
</div>
<div class="iwanttoicons">
<ul>
<li><a href="../departments/humanresources/employment/Pages/default.aspx.html" id="find-lightbox-job"><img class="serviceimg" src="../PublishingImages/static/employmenticon.png" alt="Jobs Icon"><br>Job</a></li>
<li><a href="http://dallaslibrary2.org/" target="_blank" id="find-lightbox-library"><img class="serviceimg" src="../PublishingImages/static/libraryicon.png" alt="Library Icon"><br>Library</a></li>
<li><a href="http://www.dallasanimalservices.org/" target="_blank" id="find-lightbox-pets"><img class="serviceimg" src="../PublishingImages/static/peticon.png" alt="Dallas Animal Services Icon"><br>Pets</a></li>
<li style="margin-right:0px;">
<a href="http://www.dallasparks.org/" target="_blank" id="find-lightbox-parks-recreation"><img class="serviceimg" src="../PublishingImages/static/parksicon.png" alt="Parks & Recreation Icon"><br>Parks</a></li>
</ul>
<div class="clearfix"></div>
</div>
<div class="col-md-6 col-xs-12 list-items">
<ul>
<li><a target="_blank" href="http://www.dallasculture.org/culturalFacilities.asp" id="find-lightbox-cultural-center">a Cultural Center</a></li>
<!--<li><a href="/departments/humanresources/employment/Pages/default.aspx">a Job</a></li>
<li><a target="_blank" href="http://dallaslibrary.org/">a Library</a></li>-->
<li><a href="../departments/ciservices/Pages/enterprise-gis.aspx.html" id="find-lightbox-map">a Map</a></li>
<li><a target="_blank" href="http://www.dallasparks.org" id="find-lightbox-dallas-park">a Park</a></li>
</ul>
</div>
<div class="col-md-6 col-xs-12 list-items col-end">
<ul>
<!--<li><a target="_blank" href="http://www.dallasparks.org/">a Park Rec Center</a></li>
<li><a href="/departments/dallas-animal-services/Pages/adoption.aspx">a Pet</a></li>-->
<li><a href="../departments/pnv/Pages/zoning.aspx.html" id="find-lightbox-property-zoning">Property Zoning</a></li>
<li><a href="../departments/codecompliance/Pages/FoodSafety.aspx.html" id="find-lightbox-restaurant-scores">Restaurant Scores</a></li>
<li><a href="../departments/sanitation/Pages/default.aspx.html" id="find-lightbox-trash-pickup">Trash Pickup</a></li>
</ul>
</div>
</div>
<div id="pay" style="display:none; bacgkground-color:grey;">
<h3>Pay</h3><br>
<div class="col-md-6 col-xs-12 list-items">
<ul>
<li><a target="_blank" href="../departments/waterutilities/Pages/pay-water-bill.aspx.html" id="pay-lightbox-water">Water Bill</a></li>
<li><a href="../departments/courtdetentionservices/Pages/default.aspx.html" id="pay-lightbox-traffic-ticket">Traffic & Civil Tickets</a></li>
<li><a target="_blank" href="https://wmq.etimspayments.com/pbw/include/dallas/input.jsp" id="pay-lightbox-parking-ticket">Parking Ticket</a></li>
<li><a target="_blank" href="https://www.velocitypayment.com/client/bankofamerica/cityofdallas/frab/index.html" id="pay-lightbox-ambulance-ticket">Ambulance Bill</a></li>
<li><a href="../departments/waterutilities/special_collections/Pages/special_collections_registrations.aspx.html" id="pay-lightbox-alarms-permits">Alarms Permits</a></li>
<li><a target="_blank" href="https://wmq.etimspayments.com/pbw/include/dallas/input.jsp" id="pay-lightbox-school-bus-stop-arm-ticket">School Bus Stop Arm Ticket</a></li>
</ul>
</div>
<div class="col-md-6 col-xs-12 list-items col-end">
<ul>
<li><a href="../departments/courtdetentionservices/Pages/Warrant-Info.aspx.html" id="pay-lightbox-court-warrants-bond">Court Warrants & Bonds</a></li>
<li><a href="paybyapp.aspx.html" id="pay-lightbox-parking-meters">For Parking Meters</a></li>
<li><a href="../departments/codecompliance/Pages/garage-sales.aspx.html" id="pay-lightbox-garage-sales-permit">Garage Sales Permit</a></li>
<li><a href="../departments/controllersoffice/Pages/hotel-taxes.aspx.html" id="pay-lightbox-hotel-occupancy-tax">Hotel Occupancy Tax (HOT)</a></li>
<li><a href="../departments/controllersoffice/Pages/hotel-taxes.aspx.html" id="pay-lightbox-short-term-rentals">Short-Term Rentals (HOT)</a></li>
<!--<li><a target="_blank" href="/departments/codecompliance/Pages/Carryout-Bag-Program.aspx">Single-Use Carryout Bag Remittance</a></li>-->
</ul>
</div>
</div>
<div id="request" style="display:none; bacgkground-color:grey;">
<h3>Request</h3><br>
<div class="col-md-6 col-xs-12 list-items">
<ul>
<li><a href="../departments/sustainabledevelopment/buildinginspection/Pages/index.aspx.html" id="request-lightbox-building-permits-inspections">Building Permits & Inspections</a></li>
<li><a href="../services/311/Pages/default.aspx.html" id="request-lightbox-non-emergency-services">311 Services</a></li>
<li><a href="../departments/community-care/Pages/vital_statistics.aspx.html" id="request-lightbox-birth-death-certificates">Birth / Death Certificates</a></li>
<li><a target="_blank" href="https://www.dallasspecialevents.com/special-event/" id="request-lightbox-event-permits">Event Permits</a></li>
<li><a target="_blank" href="https://www.dallasspecialevents.com/film/" id="request-lightbox-filming-permits">Filming Permits</a></li>
</ul>
</div>
<div class="col-md-6 col-xs-12 list-items">
<h3>New Utility Services</h3>
<ul>
<li><a target="_blank" href="http://www.powertochoose.org/" id="request-lightbox-electricity-providers">Electricity Providers</a></li>
<li><a target="_blank" href="https://www.allconnect.com/local/tx/dallas" id="request-lightbox-tv">Cable-TV-Satellite</a></li>
<li><a target="_blank" href="https://www.2turniton.com/" id="request-lightbox-utilities">Activate Utilities</a></li>
</ul>
</div>
</div>
<!--<div id="opendata" style="display:none; bacgkground-color:grey;">
<h3>Open Data</h3><br/>
<div class="iwanttoicons">
<ul>
<li><a href="https://www.dallasopendata.com/" target="_blank"><img class="serviceimg" src="/PublishingImages/static/opendataicon.png" alt="Open Data Icon" /><br />Open Data</a></li>
<li><a href="https://www.dallasopendata.com/browse?category=Police&limitTo=datasets&utf8=%E2%9C%93" target="_blank"><img class="serviceimg" src="/PublishingImages/static/policeicon.png" alt="Police Icon" /><br />Police</a></li>
<li style="margin-right:0px;"><a href="https://www.dallasopendata.com/browse?category=Financial&q=Financial&sortBy=relevance&utf8=%E2%9C%93" target="_blank"><img class="serviceimg" src="/PublishingImages/static/financialicon.png" alt="Finance Icon" /><br />Financial</a></li>
</ul>
<div class="clearfix"></div>
</div>
<div class="col-3 list-items col-end" style="width:100%">
<ul>
<li><a target="_blank" href="https://gis.dallascityhall.com/shapefileDownload.aspx">Download GIS Data</a></li>
<li><a target="_blank" href="https://gis.dallascityhall.com/cityinfo/">Interactive GIS Map</a></li>
<li><a target="_blank" href="https://gis.dallascityhall.com/staticMapGal.aspx">Static GIS Maps</a></li>
<li><a href="/departments/codecompliance/Pages/FoodSafety.aspx">Restaurant Scores</a></li>
</ul>
</div>
</div>-->
<script>
$(document).ready(function() {
$(".iwanttomodal").fancybox({
'titlePosition': 'inside',
'transitionIn': 'none',
'transitionOut': 'none'
});
$(".swagit").fancybox({
'titlePosition': 'inside',
'transitionIn': 'none',
'transitionOut': 'none',
'type': 'iframe',
'width': 570,
'height': 480,
'scrolling': 'no'
});
});
function findsearch() {
var findsearchinput = document.getElementById("findsearchinput").value;
parent.location = "/pages/searchresults.aspx#k=" + findsearchinput;
}
$('.pay').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Button', 'Pay');
});
$('.find').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Button', 'Find');
});
$('.request').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Button', 'Request');
});
$('.open-data').on('click', function() {
ga('send', 'event', 'Home Links', 'Data Transparency Lightbox Button', 'Data Transparency');
});
$('#finantial-transparency').on('click', function() {
ga('send', 'event', 'Home Links', 'External Link Button', 'Financial Transparency');
});
$('#open-records').on('click', function() {
ga('send', 'event', 'Home Links', 'PIO Button', 'Open Records Request');
});
$('#pay-lightbox-water').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Water Bill');
});
$('#pay-lightbox-traffic-ticket').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Traffic Ticket');
});
$('#pay-lightbox-parking-ticket').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Parking Ticket');
});
$('#pay-lightbox-red-light-ticket').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Red Light Ticket');
});
$('#pay-lightbox-ambulance-ticket').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Ambulance Bill');
});
$('#pay-lightbox-alarms-permits').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Alarms Permits');
});
$('#pay-lightbox-court-warrants-bond').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Court Warrants and Bonds');
});
$('#pay-lightbox-school-bus-stop-arm-ticket').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'School Bus Stop Arm Ticket');
});
$('#pay-lightbox-parking-meters').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'For Parking Meters');
});
$('#pay-lightbox-garage-sales-permi').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Garage Sales Permit');
});
$('#pay-lightbox-hotel-occupancy-tax').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Hotel Occupancy Tax (HOT)');
});
$('#pay-lightbox-short-term-rentals').on('click', function() {
ga('send', 'event', 'Home Links', 'Pay Lightbox Link', 'Short-Term Rentals (HOT)');
});
$('#findsearchbutton').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Search');
});
$('#find-lightbox-job').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Job');
});
$('#find-lightbox-library').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Library');
});
$('#find-lightbox-pets').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Pets');
});
$('#find-lightbox-parks-recreation').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Parks');
});
$('#find-lightbox-cultural-center').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'a Cultural Center');
});
$('#find-lightbox-map').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'a Map');
});
$('#find-lightbox-dallas-park').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'a Park');
});
$('#find-lightbox-property-zoning').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Property Zoning');
});
$('#find-lightbox-restaurant-scores').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Restaurant Scores');
});
$('#find-lightbox-trash-pickup').on('click', function() {
ga('send', 'event', 'Home Links', 'Find Lightbox Link', 'Trash Pickup');
});
$('#request-lightbox-building-permits-inspections').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Building Permits and Inspections');
});
$('#request-lightbox-non-emergency-services').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', '311 Services');
});
$('#request-lightbox-birth-death-certificates').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Birth Death Certificatess');
});
$('#request-lightbox-event-permits').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Event Permits');
});
$('#request-lightbox-filming-permits').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Filming Permits');
});
$('#request-lightbox-electricity-providers').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Electricity Providers');
});
$('#request-lightbox-tv').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Cable-TV-Satellite');
});
$('#request-lightbox-utilities').on('click', function() {
ga('send', 'event', 'Home Links', 'Request Lightbox Link', 'Activate Utilities');
});
$('#open-meetings').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Open Meetings');
});
$('#council-meetings').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Council Meetings');
});
$('#council-attendance').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Council Attenance');
});
$('#public-notices').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Public Notices');
});
$('#city-calendar').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'City Calendar');
});
$('#council-memos').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Council Memos');
});
$('#budget').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Budget');
});
$('#city-meeting-video').on('click', function() {
ga('send', 'event', 'Home Links', 'Official Postings', 'Watch City Meetings Online');
});
$('#quick-links-jobs').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Jobs');
});
$('#quick-links-water').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Water Utilities');
});
$('#quick-links-building-permits-inspections').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Building Permits and Inspections');
});
$('#quick-links-traffic-tickets').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Traffic Tickets');
});
$('#quick-links-courts').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Court Warrants and Bonds');
});
$('#quick-links-sanitation').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Trash Pickup');
});
$('#quick-links-311').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', '311 Services');
});
$('#quick-links-transportation').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Transportation for Hire');
});
$('#quick-links-211').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', '211 Links');
});
$('#quick-links-animal-services').on('click', function() {
ga('send', 'event', 'Home Links', 'Quick Links', 'Animal Services');
});
$('.btn-secondary').on('click', function() {
ga('send', 'event', 'Home Links', '311', 'Request a Service');
});
$('.btn-minimal-reverse').on('click', function() {
ga('send', 'event', 'Home Links', '311', 'Check Status');
});
$('.googleapp').on('click', function() {
ga('send', 'event', 'Home Links', '311', 'Google Play Store');
});
$('.appleapp').on('click', function() {
ga('send', 'event', 'Home Links', '311', 'Apple Store');
});
$('.btn.secondary').on('click', function() {
ga('send', 'event', 'Hero', '7/7Event', 'Learn More');
});
</script>
<script>
$(document).ready(function() {
//add a custom click event to any link or button with custom Google Analyics tracking data
$('a[data-ga-category],button[data-ga-category],input[data-ga-category][type="submit"],input[data-ga-category][type="button"]').each(function(i, element) {
$(element).click(function() {
recordGoogleEvents(element)
});
});
//add a custom change event to certain types of form element with custom Google Analyics tracking data
$('select[data-ga-category],radio[data-ga-category],textarea[data-ga-category],input[data-ga-category][type="text"],input[data-ga-category][type="checkbox"],input[data-ga-category][type="file"],input[data-ga-category][type="image"],input[data-ga-category][type="password"]')
.each(function(i, element) {
$(element).change(function() {
recordGoogleEvents(element)
});
});
function recordGoogleEvents(element) {
console.log("begin recordGoogleEvents");
var category = $(element).data("ga-category");
var action = $(element).data("ga-action");
var label = $(element).data("ga-label");
var value = $(element).data("ga-value");
//default values
if (typeof(action) == "undefined") {
action = "";
}
if (typeof(label) == "undefined") {
label = "";
}
//send event with a value parameter only if one is provided
if (typeof(value) == "undefined" || value === "" || isNaN(value)) {
ga('send', 'event', category, action, label);
} else {
ga('send', 'event', category, action, label, value);
}
}
});
</script>
</div>
</div>
<div class="ms-clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</span>
</div>
<!-- Spotlight Webpart Zone -->
<div id="spotlight-home">
<div data-name="WebPartZone">
<div>
<div class="ms-webpart-zone ms-fullWidth">
<div id="MSOZoneCell_WebPartctl00_ctl48_g_c4fa770a_6888_4fbb_b601_44a11f42c73f" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="c4fa770a-6888-4fbb-b601-44a11f42c73f" haspers="false" id="WebPartctl00_ctl48_g_c4fa770a_6888_4fbb_b601_44a11f42c73f" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_c4fa770a_6888_4fbb_b601_44a11f42c73f">
<div class="ms-rte-embedcode ms-rte-embedwp">
<style>
.spotlight-title {
font-weight: bold;
padding: 5px;
}
</style>
<div class="spotlight-title">
<h2 style="color: rgb(68, 68, 68)">SPOTLIGHT</h2>
</div>
<script type="text/javascript">
(function($) {
$.fn.scrollbox = function(config) {
//default config
var defConfig = {
linear: true, // Scroll method
startDelay: 10, // Start delay (in seconds)
delay: 10, // Delay after each scroll event (in seconds)
step: 25, // Distance of each single step (in pixels)
speed: 25, // Delay after each single step (in milliseconds)
switchItems: 1, // Items to switch after each scroll event
direction: 'vertical',
distance: 'auto',
autoPlay: false,
onMouseOverPause: true,
paused: false,
queue: null,
listElement: 'ul',
listItemElement: 'li',
infiniteLoop: true, // Infinite loop or not
switchAmount: 0, // Give a number if you don't want to have infinite loop
afterForward: null, // Callback function after each forward action
afterBackward: null, // Callback function after each backward action
triggerStackable: false // Allow triggers when action is not finish yet
};
config = $.extend(defConfig, config);
config.scrollOffset = config.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
if (config.queue) {
config.queue = $('#' + config.queue);
}
return this.each(function() {
var container = $(this),
containerUL,
scrollingId = null,
nextScrollId = null,
paused = false,
releaseStack,
backward,
forward,
resetClock,
scrollForward,
scrollBackward,
forwardHover,
pauseHover,
switchCount = 0,
stackedTriggerIndex = 0;
if (config.onMouseOverPause) {
container.bind('mouseover', function() {
paused = true;
});
container.bind('mouseout', function() {
paused = false;
});
}
containerUL = container.children(config.listElement + ':first-child');
// init default switchAmount
if (config.infiniteLoop === false && config.switchAmount === 0) {
config.switchAmount = containerUL.children().length;
}
scrollForward = function() {
if (paused) {
return;
}
var curLi,
i,
newScrollOffset,
scrollDistance,
theStep;
curLi = containerUL.children(config.listItemElement + ':first-child');
scrollDistance = config.distance !== 'auto' ? config.distance : config.direction === 'vertical' ? curLi.outerHeight(true) : curLi.outerWidth(true);
// offset
if (!config.linear) {
theStep = Math.max(3, parseInt((scrollDistance - container[0][config.scrollOffset]) * 0.3, 10));
newScrollOffset = Math.min(container[0][config.scrollOffset] + theStep, 0);
} else {
newScrollOffset = Math.min(container[0][config.scrollOffset] + config.step, 0);
}
container[0][config.scrollOffset] = newScrollOffset;
if (newScrollOffset >= 0) {
for (i = 0; i < config.switchItems; i++) {
if (config.queue && config.queue.find(config.listItemElement).length > 0) {
containerUL.append(config.queue.find(config.listItemElement)[0]);
containerUL.children(config.listItemElement + ':first-child').remove();
} else {
containerUL.append(containerUL.children(config.listItemElement + ':first-child'));
}
++switchCount;
}
container[0][config.scrollOffset] = 0;
clearInterval(scrollingId);
scrollingId = null;
if ($.isFunction(config.afterForward)) {
config.afterForward.call(container, {
switchCount: switchCount,
currentFirstChild: containerUL.children(config.listItemElement + ':first-child')
});
}
if (config.triggerStackable && stackedTriggerIndex !== 0) {
releaseStack();
return;
}
if (config.infiniteLoop === false && switchCount >= config.switchAmount) {
return;
}
if (config.autoPlay) {
nextScrollId = setTimeout(forward, config.delay * 1000);
}
}
};
// Backward
// 1. If forwarding, then reverse
// 2. If stoping, then backward once
scrollBackward = function() {
if (paused) {
return;
}
var curLi,
i,
newScrollOffset,
scrollDistance,
theStep;
// init
if (container[0][config.scrollOffset] === 0) {
for (i = 0; i < config.switchItems; i++) {
containerUL.children(config.listItemElement + ':last-child').insertBefore(containerUL.children(config.listItemElement + ':first-child'));
}
curLi = containerUL.children(config.listItemElement + ':first-child');
scrollDistance = config.distance !== 'auto' ? config.distance : config.direction === 'vertical' ? curLi.height() : curLi.width();
container[0][config.scrollOffset] = scrollDistance;
}
// new offset
if (!config.linear) {
theStep = Math.max(3, parseInt(container[0][config.scrollOffset] * 0.3, 10));
newScrollOffset = Math.max(container[0][config.scrollOffset] - theStep, 0);
} else {
newScrollOffset = Math.max(container[0][config.scrollOffset] - config.step, 0);
}
container[0][config.scrollOffset] = newScrollOffset;
if (newScrollOffset === 0) {
--switchCount;
clearInterval(scrollingId);
scrollingId = null;
if ($.isFunction(config.afterBackward)) {
config.afterBackward.call(container, {
switchCount: switchCount,
currentFirstChild: containerUL.children(config.listItemElement + ':first-child')
});
}
if (config.triggerStackable && stackedTriggerIndex !== 0) {
releaseStack();
return;
}
if (config.autoPlay) {
nextScrollId = setTimeout(forward, config.delay * 1000);
}
}
};
releaseStack = function() {
if (stackedTriggerIndex === 0) {
return;
}
if (stackedTriggerIndex > 0) {
stackedTriggerIndex--;
nextScrollId = setTimeout(forward, 0);
} else {
stackedTriggerIndex++;
nextScrollId = setTimeout(backward, 0);
}
};
forward = function() {
clearInterval(scrollingId);
scrollingId = setInterval(scrollForward, config.speed);
};
backward = function() {
clearInterval(scrollingId);
scrollingId = setInterval(scrollBackward, config.speed);
};
// Implements mouseover function.
forwardHover = function() {
config.autoPlay = true;
paused = false;
clearInterval(scrollingId);
scrollingId = setInterval(scrollForward, config.speed);
};
pauseHover = function() {
paused = true;
};
resetClock = function(delay) {
config.delay = delay || config.delay;
clearTimeout(nextScrollId);
if (config.autoPlay) {
nextScrollId = setTimeout(forward, config.delay * 1000);
}
};
if (config.autoPlay) {
nextScrollId = setTimeout(forward, config.startDelay * 1000);
}
// bind events for container
container.bind('resetClock', function(delay) {
resetClock(delay);
});
container.bind('forward', function() {
if (config.triggerStackable) {
if (scrollingId !== null) {
stackedTriggerIndex++;
} else {
forward();
}
} else {
clearTimeout(nextScrollId);
forward();
}
});
container.bind('backward', function() {
if (config.triggerStackable) {
if (scrollingId !== null) {
stackedTriggerIndex--;
} else {
backward();
}
} else {
clearTimeout(nextScrollId);
backward();
}
});
container.bind('pauseHover', function() {
pauseHover();
});
container.bind('forwardHover', function() {
forwardHover();
});
container.bind('speedUp', function(speed) {
if (speed === 'undefined') {
speed = Math.max(1, parseInt(config.speed / 2, 10));
}
config.speed = speed;
});
container.bind('speedDown', function(speed) {
if (speed === 'undefined') {
speed = config.speed * 2;
}
config.speed = speed;
});
container.bind('updateConfig', function(options) {
config = $.extend(config, options);
});
});
};
}(jQuery));
</script>
<script type="text/javascript">
$(function() {
$('#pi-tiles').scrollbox({
direction: 'h',
});
$('#pi-tiles-backward').click(function() {
$('#pi-tiles').trigger('backward');
});
$('#pi-tiles-forward').click(function() {
$('#pi-tiles').trigger('forward');
});
});
</script>
<script src="../Style%20Library/js/angular.min.js"></script>
<script>
var myAngApp = angular.module('AngAppSpotLight', []);
myAngApp.controller('angSpotLightController', function($scope, $http) {
var today = new Date();
$http({
method: 'GET',
url: removeHTTPfromURL(_spPageContextInfo.webAbsoluteUrl) + "/_api/web/lists/getByTitle('SpotLight')/items?$select=StartDate,EndDate,Order,SpotlightTitle,OpenInTheNextTab,Link,EncodedAbsUrl" +
"&$orderby=Order0 asc&$filter=StartDate le datetime'" + today.toISOString() + "' and EndDate ge datetime'" + today.toISOString() + "'",
headers: {
"Accept": "application/json;odata=verbose"
}
}).success(function(d, s, h, c) {
$scope.spotlights = d.d.results;
var backupCount = 3 - $scope.spotlights.length;
if (backupCount > 0) {
$http({
method: 'GET',
url: removeHTTPfromURL(_spPageContextInfo.webAbsoluteUrl) + "/_api/web/lists/getByTitle('SpotLight')/items?$select=Order,SpotlightTitle,OpenInTheNextTab,Link,EncodedAbsUrl&$orderby=Order0 desc",
headers: {
"Accept": "application/json;odata=verbose"
}
}).success(function(d, s, h, c) {
$scope.spotlights.push.apply($scope.spotlights, d.d.results);
});
}
});
//$scope.pictures = function () {
// return $scope.spotlights.concat($scope.spotlightBackups);
//}
$scope.getTarget = function(targetString) {
if (targetString) return "_blank";
else return "_self";
}
$scope.getSrcwithoutHTTP = function(urlString) {
var httpIndex = urlString.indexOf("://");
if (httpIndex > 0) return urlString.slice(httpIndex + 1);
else return urlString;
}
})
</script>
<div ng-app="AngAppSpotLight" class="sp-row ng-scope">
<div id="pi-scroll-tiles" ng-controller="angSpotLightController" class="ng-scope">
<div id="pi-tiles-btn" class="text-center">
<a class="btn" id="pi-tiles-backward"></a>
<a class="btn" id="pi-tiles-forward"></a>
</div>
<div id="pi-tiles" class="scroll-img">
<ul class="unstyled" id="tilesUl">
<!-- ngRepeat: picture in spotlights -->
</ul>
</div>
</div>
</div>
<br>
<style>
#countdown {
text-align: center;
padding: 20px 0;
border-top: solid 1px #999;
}
#countdown h3 {
font-family: 'Roboto';
font-weight: 600;
font-size: 28px;
color: rgb(3, 63, 136);
border-bottom: none;
}
#countdown-1 {
padding: 25px 0;
}
#countdown-display {
display: block;
border-radius: 10px;
/*height: 140px;*/
max-width: 700px;
margin: 0 auto;
}
#countdown-2 {
padding: 0px 0;
background-color: #fff;
padding: 10px 50px 10px 30px;
border-top-right-radius: 65px;
border-bottom-right-radius: 65px;
height: 105px;
}
/*#countdown-2 a{
display: block;
background-image: url("https://dallascityhall.com/Style%20Library/Images/Next%20Arrow.svg");
background-position: right;
background-repeat: no-repeat;
background-size: 20px;
padding: 0 30% 0 0;
}*/
#countdown-2 a img {
height: 100%;
}
#countdown-2 h3 {
font-family: 'Roboto';
padding: 0px;
font-size: 32px;
line-height: 1;
border: none;
color: rgb(3, 63, 136);
font-weight: 600;
}
#countdown-2 h5 {
font-family: 'Roboto';
font-size: 18px;
color: rgb(38, 115, 209);
font-weight: 500;
padding: 0px;
line-height: 1;
border: none;
}
#countdown-3 {
display: inline-block;
background-color: rgb(3, 63, 136);
padding: 15px 0 15px 40px;
border-top-left-radius: 65px;
border-bottom-left-radius: 65px;
height: 105px;
}
#countdown-3 h3 {
font-family: 'Roboto';
font-size: 44px;
font-weight: 500;
color: #fff;
padding: 0;
border: none;
}
#countdown-3 .metric {
font-family: 'Roboto';
font-size: 44px;
font-weight: 500;
color: #fff;
padding: 0;
border: none;
}
#countdown-3 .col-xs-3 {
border-right: solid 1px #c5d3fc;
padding: 0;
}
#countdown-3 .col-xs-3:last-of-type {
border-right: none;
}
#countdown-3 p {
font-family: 'Roboto';
color: #c5d3fc;
font-weight: 600;
font-size: 12px;
padding: 0;
margin: 0;
}
.xxs-hide {
display: block;
}
.xxs-show {
display: none;
}
#countdown-3 .col-xs-3:nth-of-type(2) {
border-right: visible;
}
#spotlight-home {
padding: 50px 0px 30px 0;
}
@media screen and (max-width: 640px) {
#countdown-display .col-xs-7,
#countdown-display .col-xs-5 {
width: 100%;
}
#countdown-3 .col-xs-3 {
width: 50%;
}
.xxs-hide {
display: none;
}
.xxs-show {
display: block;
}
#countdown-3 .col-xs-3:nth-of-type(2) {
border-right: none;
}
#countdown-3 {
border-top-left-radius: 45px;
border-top-right-radius: 45px;
border-bottom-left-radius: 0;
padding: 10px 20px;
height: 95px;
}
#countdown-2 {
display: block;
border-bottom-right-radius: 45px;
border-bottom-left-radius: 45px;
border-top-left-radius: 0;
border-top-right-radius: 0;
padding: 15px 20px;
height: 95px;
}
#countdown-display {
display: block;
padding: 0 10px;
}
#spotlight-home {
padding: 50px 0px;
}
}
</style>
</div>
</div>
<div class="ms-clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="newsroom" class="dch-row">
<div class="column-1 text-center">
<div data-name="WebPartZone">
<div>
<div class="ms-webpart-zone ms-fullWidth">
<div id="MSOZoneCell_WebPartctl00_ctl48_g_efb83318_e420_4455_ac8f_fe394d8c3a30" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="efb83318-e420-4455-ac8f-fe394d8c3a30" haspers="false" id="WebPartctl00_ctl48_g_efb83318_e420_4455_ac8f_fe394d8c3a30" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_efb83318_e420_4455_ac8f_fe394d8c3a30">
<div class="ms-rte-embedcode ms-rte-embedwp">
<h3 style="border-bottom:none; color: rgb(68, 68, 68)">FEATURED NEWS</h3>
<a href="http://dallascitynews.net" target="_blank" class="btn btn-primary btn-md" style="background-color:white; border: 1px solid #0166ce; color: #0166ce;" data-ga-action="External Link" data-ga-category="Featured News" data-ga-label="Read More">View More News</a>
</div>
</div>
<div class="ms-clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="column-2">
<div data-name="WebPartZone">
<div>
<div class="ms-webpart-zone ms-fullWidth">
<div id="MSOZoneCell_WebPartctl00_ctl48_g_8d75d7aa_6a08_4bc9_84cf_b61854a0c426" class="s4-wpcell-plain ms-webpartzone-cell ms-webpart-cell-vertical ms-fullWidth ">
<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth ">
<div webpartid="8d75d7aa-6a08-4bc9-84cf-b61854a0c426" haspers="false" id="WebPartctl00_ctl48_g_8d75d7aa_6a08_4bc9_84cf_b61854a0c426" width="100%" class="ms-WPBody noindex " allowdelete="false" allowexport="false" style="">
<div id="ctl00_ctl48_g_8d75d7aa_6a08_4bc9_84cf_b61854a0c426">
<ul id="ctl00_ctl48_g_8d75d7aa_6a08_4bc9_84cf_b61854a0c426_fNews">
<li>
<a href="Corona-Virus.aspx.html" target="_self" data-ga-action="Click" data-ga-category="Featured News" data-ga-label="Important Information Regarding Coronavirus (COVID-19)">Important Information Regarding Coronavirus (COVID-19)</a>
</li>
<li><a href="https://www.dallascitynews.net/new-dallas-gov-domain-name" target="_Blank" data-ga-action="Click" data-ga-category="Featured News" data-ga-label="New Dallas.GOV Domain Name">New Dallas.GOV Domain Name</a></li>
<li>
<a href="http://www.dallascitynews.net/city-dallas-adopts-new-economic-development-policy" target="_self" data-ga-action="Click" data-ga-category="Featured News" data-ga-label="City of Dallas adopts new Economic Development Policy">City of Dallas adopts new Economic Development Policy</a>
</li>
</ul>
</div>
<div class="ms-clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="full-width">
<div data-name="WebPartZone">
<div>
<menu class="ms-hide">
<ie:menuitem id="MSOMenu_Help" iconsrc="/_layouts/15/images/HelpIcon.gif" onmenuclick="MSOWebPartPage_SetNewWindowLocation(MenuWebPart.getAttribute('helpLink'), MenuWebPart.getAttribute('helpMode'))" text="Help" type="option"
style="display:none">
</ie:menuitem>
</menu>
</div>
</div>
</div>
<div style="display:none" id="hidZone"></div>
</div>
</div>
<!--end s4bodycontainer -->
<br clear="all">
<!-- start footer -->
<!--scroll-->
<script type="text/javascript">
//<![CDATA[
$(document).on('click', 'a[id$="BackToTop"]', function(e) {
setPosition("#mainNav", e);
});
function setPosition(section, e) {
$("#s4-workspace").animate({
scrollTop: $(section).offset().top
}, 800);
e.preventDefault();
}
//]]>
</script>
<div class="full-row mp-footer" id="dch-footer" role="contentinfo">
</div>
<script type="text/javascript">
//<![CDATA[
$(function() {
$("#mainNav").load("/SiteAssets/DCH-Main-Navigation.txt");
$("#dch-footer").load("/SiteAssets/DCH-Footer.txt");
});
//]]>
</script>
<!--end footer -->
<script src="../Style%20Library/js/dch-responsive.js" type="text/javascript">
//<![CDATA[
//]]>
</script>
<!-- end outerWrapper-->
<style>
//<![CDATA[.fancybox-close { position : absolute;top:-18px;right:-18px;width:36px;height:36px;cursor:pointer;z-index:8040; background:url('../Style%20Library/fancybox_sprite.png') }.fancybox-overlay { background:url('../Style%20Library/fancybox_overlay.png') }
//]]>
</style>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('a.fancybox').attr("href", "/Pages/dallasfeedback.aspx?pageurl=" + window.location);
});
$('a.fancybox').fancybox({
helpers: {
overlay: {
closeClick: false
}
},
'overlayOpacity': 0.6,
autoSize: true,
autoDimensions: true,
'transitionIn': 'elastic',
'transitionOut': 'elastic'
});
//]]>
</script>
<script src="../Style%20Library/js/jquery.dlmenu.js" type="text/javascript">
//<![CDATA[
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
$(function() {
$('#dl-menu').dlmenu({
animationClasses: {
in: 'dl-animate-in-2',
out: 'dl-animate-out-2'
}
});
});
jQuery(function($) {
$("#seconMainNav .hover-dropdown-toggle").on({
mouseenter: function(event) {
var overlaybody = $('#overlay');
if (!overlaybody.length) {
$('body').append('<div id="overlay"> </div>');
}
$("div.second-static-dropdown", this).removeClass('hide-dropdown');
$("div.second-static-dropdown", this).addClass('show-dropdown');
},
mouseleave: function(event) {
event.preventDefault();
$('#overlay').remove();
$("div.second-static-dropdown", this).removeClass('show-dropdown');
$("div.second-static-dropdown", this).addClass('hide-dropdown');
$(this).trigger('hover');
$(this).unbind('hover');
}
});
});
//]]>
</script>
<script>
//<![CDATA[
var emailPlaceHolder = document.getElementById("govdeliveryemail");
if (emailPlaceHolder) {
if (emailPlaceHolder.addEventListener) {
emailPlaceHolder.addEventListener("focus", focusEmailSignup);
emailPlaceHolder.addEventListener("blur", blurEmailSignup);
} else if (emailPlaceHolder.attachEvent) {
emailPlaceHolder.attachEvent("focus", focusEmailSignup);
emailPlaceHolder.attachEvent("blur", blurEmailSignup);
}
}
function focusEmailSignup() {
emailPlaceHolder.style.color = "#FFF";
if (emailPlaceHolder.value == "Email") {
emailPlaceHolder.value = "";
}
}
function blurEmailSignup() {
if (emailPlaceHolder.value == "") {
emailPlaceHolder.value = "Email";
emailPlaceHolder.style.color = "#888";
}
}
//]]>
</script>
<div role="dialog" aria-label="dallas chatbot">
<script src="../SiteAssets/dalbot/uuidv4.min.js">
//<![CDATA[
//]]>
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js" integrity="sha512-rCjfoab9CVKOH/w/T6GbBxnAH5Azhy4+q1EXW5XEURefHbIkRbQ++ZR+GBClo3/d3q583X/gO4FKmOFuhkKrdA==" crossorigin="anonymous">
//<![CDATA[
//]]>
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" integrity="sha512-AIOTidJAcHBH2G/oZv9viEGXRqDNmfdPVPYOYKGy3fti0xIplnlgMHUGfuNRzC6FkzIo0iIxgFnr9RikFxK+sw=="
crossorigin="anonymous">
//<![CDATA[
//]]>
</script>
<shadow-demo id="shadow" chat-title-color="#0166CE" user-message-bg-color="#8EC900" bot-message-bg-color="#001B3B" chat-user-font-color="#001B3B" chat-bot-font-color="#FFFFFF" chat-title="DalBot">
</shadow-demo>
<script src="../SiteAssets/dalbot/shadow-12-12%EF%B9%96version=4.js" type="text/javascript">
//<![CDATA[
//]]>
</script>
</div>
<div id="DeltaFormDigest">
<script type="text/javascript">
//<![CDATA[
var formDigestElement = document.getElementsByName('__REQUESTDIGEST')[0];
if (!((formDigestElement == null) || (formDigestElement.tagName.toLowerCase() != 'input') || (formDigestElement.type.toLowerCase() != 'hidden') || (formDigestElement.value == null) || (formDigestElement.value.length <= 0))) {
formDigestElement.value = '0xBB96C03BDA283E57F778DCE8349C2D6B2636DB86085F7864571F9C6CA53B28D23F3D1E3546484AC8FF2B4E47C51FEECBECE9E1CB26AE56019B3552E4237E9B5B,31 Mar 2022 08:41:44 -0000';
g_updateFormDigestPageLoaded = new Date();
}
//]]>
</script>
</div>
<script type="text/javascript">
//<![CDATA[
var _fV4UI = true;
function _RegisterWebPartPageCUI() {
var initInfo = {
editable: false,
isEditMode: false,
allowWebPartAdder: false,
listId: "{4a35db85-1d01-4ce0-9804-6a1072e5021e}",
itemId: 533,
recycleBinEnabled: true,
enableMinorVersioning: true,
enableModeration: false,
forceCheckout: true,
rootFolderUrl: "\u002fPages",
itemPermissions: {
High: 16,
Low: 196705
}
};
SP.Ribbon.WebPartComponent.registerWithPageManager(initInfo);
var wpcomp = SP.Ribbon.WebPartComponent.get_instance();
var hid;
hid = document.getElementById("_wpSelected");
if (hid != null) {
var wpid = hid.value;
if (wpid.length > 0) {
var zc = document.getElementById(wpid);
if (zc != null) wpcomp.selectWebPart(zc, false);
}
}
hid = document.getElementById("_wzSelected");
if (hid != null) {
var wzid = hid.value;
if (wzid.length > 0) {
wpcomp.selectWebPartZone(null, wzid);
}
}
};
function __RegisterWebPartPageCUI() {
ExecuteOrDelayUntilScriptLoaded(_RegisterWebPartPageCUI, "sp.ribbon.js");
}
_spBodyOnLoadFunctionNames.push("__RegisterWebPartPageCUI");
var __wpmExportWarning =
'This Web Part Page has been personalized. As a result, one or more Web Part properties may contain confidential information. Make sure the properties contain information that is safe for others to read. After exporting this Web Part, view properties in the Web Part description file (.WebPart) by using a text editor such as Microsoft Notepad.';
var __wpmCloseProviderWarning =
'You are about to close this Web Part. It is currently providing data to other Web Parts, and these connections will be deleted if this Web Part is closed. To close this Web Part, click OK. To keep this Web Part, click Cancel.';
var __wpmDeleteWarning = 'You are about to permanently delete this Web Part. Are you sure you want to do this? To delete this Web Part, click OK. To keep this Web Part, click Cancel.';
var g_clientIdDeltaPlaceHolderMain = "DeltaPlaceHolderMain";
var g_clientIdDeltaPlaceHolderUtilityContent = "DeltaPlaceHolderUtilityContent";
//]]>
</script>
</form>
Text Content
Public Alerts WELCOME TO DALLAS COMMITTED TO "SERVICE FIRST" EXCELLENCE Important COVID-19 Information OUR CORE VALUES ARE EMPATHY, ETHICS, EXCELLENCE, EQUITY VIRTUAL CONSULTING * Pay * Find * Request * Dallas Data Hub * Financial Transparency * Open Records Request OFFICIAL POSTINGS * FY 2021-22 Adopted Budget * Council Meetings * Council Attendance * City Calendar * Public Notices * Open Meetings * Council Memos * Watch City Meetings Online QUICK LINKS * Water Utilities * Trash Pickup * Building Permits & Inspections * Jobs * Traffic & Civil Tickets * Court Warrants & Bonds * Animal Services * 2-1-1 Texas (State Assistance) DOWNLOAD THE NEW OURDALLAS MOBILE APP 311 FREQUENTLY REQUESTED SERVICES * Code Concerns * Sanitation Roll Cart * Missed Garbage * Street Repair * Parking – Report a Violation * Animal Loose * Dead Animal Pick Up * 24 Hour Parking Request a Service About 311 Check Service Request Status FIND Search * Job * Library * Pets * Parks * a Cultural Center * a Map * a Park * Property Zoning * Restaurant Scores * Trash Pickup PAY * Water Bill * Traffic & Civil Tickets * Parking Ticket * Ambulance Bill * Alarms Permits * School Bus Stop Arm Ticket * Court Warrants & Bonds * For Parking Meters * Garage Sales Permit * Hotel Occupancy Tax (HOT) * Short-Term Rentals (HOT) REQUEST * Building Permits & Inspections * 311 Services * Birth / Death Certificates * Event Permits * Filming Permits NEW UTILITY SERVICES * Electricity Providers * Cable-TV-Satellite * Activate Utilities SPOTLIGHT FEATURED NEWS View More News * Important Information Regarding Coronavirus (COVID-19) * New Dallas.GOV Domain Name * City of Dallas adopts new Economic Development Policy