PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPkZpbGVzeXN0ZW0gUmVmZXJlbmNlCjwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uLy4uL2RvYy9zcmMvbWluaW1hbC5jc3MiPgo8L2hlYWQ+Cgo8Ym9keT4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjI3NyI+CjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bSI+CjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9ib29zdC5wbmciIGFsdD0iYm9vc3QucG5nICg2ODk3IGJ5dGVzKSIgYWxpZ249Im1pZGRsZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI4NiIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0ibWlkZGxlIj4KICAgIDxmb250IHNpemU9IjciPkZpbGVzeXN0ZW0gTGlicmFyeTxicj4KICAgIDwvZm9udD4KICAgIDxmb250IHNpemU9IjYiPlZlcnNpb24gMzwvZm9udD48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgYmdjb2xvcj0iI0Q3RUVGRiIgd2lkdGg9IjEwMCUiPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuLi8uLi8uLi8uLi9pbmRleC5odG0iPkJvb3N0IEhvbWU8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0iaW5kZXguaHRtIj5MaWJyYXJ5IEhvbWU8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwiPlJlZmVyZW5jZTwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ0dXRvcmlhbC5odG1sIj5UdXRvcmlhbDwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJmYXEuaHRtIj5GQVE8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0icG9ydGFiaWxpdHlfZ3VpZGUuaHRtIj5Qb3J0YWJpbGl0eTwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ2My5odG1sIj5WMyBJbnRybzwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ2M19kZXNpZ24uaHRtbCI+VjMgRGVzaWduPC9hPiAmbmJzcDsmbmJzcDsKICAgIDxhIGhyZWY9ImRlcHJlY2F0ZWQuaHRtbCI+RGVwcmVjYXRlZDwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8L3RkPgogICAgPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGgxPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uPC9oMT4KCjxoMj48YSBuYW1lPSJUT0MiPlRhYmxlIG9mIENvbnRlbnRzPC9hPjwvaDI+Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgd2lkdGg9IjEwMCUiPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMzMlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iI0ludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjxicj4KICAgIDxhIGhyZWY9IiNEZWZpbml0aW9ucyI+RGVmaW5pdGlvbnM8L2E+PGJyPgogICAgPGEgaHJlZj0iI0NvbmZvcm1hbmNlIj5Db25mb3JtYW5jZTwvYT48YnI+CiAgICA8YSBocmVmPSIjSGVhZGVyLWZpbGVzeXN0ZW0tc3lub3BzaXMiPgogICAgSGVhZGVyICZsdDtmaWxlc3lzdGVtJmd0OyBzeW5vcHNpczwvYT48YnI+CiAgICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj5FcnJvciByZXBvcnRpbmc8L2E+PGJyPgogICAgPGEgaHJlZj0iI2NsYXNzLXBhdGgiPkNsYXNzIHBhdGg8L2E+PGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IDxhIGhyZWY9IiNwYXRoLWNvbnN0cnVjdG9ycyI+cGF0aCBjb25zdHJ1Y3RvcnM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgPGEgaHJlZj0iI3BhdGgtYXNzaWdubWVudHMiPnBhdGggYXNzaWdubWVudHM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSIjcGF0aC1hcHBlbmRzIj5wYXRoIGFwcGVuZHM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSIjcGF0aC1tb2RpZmllcnMiPnBhdGggbW9kaWZpZXJzPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iI3BhdGgtbmF0aXZlLWZvcm1hdC1vYnNlcnZlcnMiPnBhdGggbmF0aXZlIAogICAgZm9ybWF0IG9ic2VydmVyczwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9IiNwYXRoLWdlbmVyaWMtZm9ybWF0LW9ic2VydmVycyI+cGF0aCBnZW5lcmljIAogICAgZm9ybWF0IG9ic2VydmVyczwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyA8YSBocmVmPSIjcGF0aC1kZWNvbXBvc2l0aW9uIj5wYXRoIGRlY29tcG9zaXRpb248L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgPGEgaHJlZj0iI3BhdGgtcXVlcnkiPnBhdGggcXVlcnk8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSIjcGF0aC1pdGVyYXRvcnMiPnBhdGggaXRlcmF0b3JzPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iI3BhdGgtZGVwcmVjYXRlZC1mdW5jdGlvbnMiPnBhdGggZGVwcmVjYXRlZCBmdW5jdGlvbnM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSIjcGF0aC1ub24tbWVtYmVyLWZ1bmN0aW9ucyI+cGF0aCBub24tbWVtYmVyIGZ1bmN0aW9uczwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9IiNwYXRoLWluc2VydGVyLWV4dHJhY3RvciI+cGF0aCBpbnNlcnRlcnMgYW5kIGV4dHJhY3RvcjwvYT5zPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPjxicj4KPC9zcGFuPiAmbmJzcDs8YSBocmVmPSIjQ2xhc3MtZmlsZXN5c3RlbV9lcnJvciI+Q2xhc3MgZmlsZXN5c3RlbV9lcnJvcjwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyA8YSBocmVmPSIjZmlsZXN5c3RlbV9lcnJvci1tZW1iZXJzIj5maWxlc3lzdGVtX2Vycm9yIAogICAgY29uc3RydWN0b3JzPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGY8YSBocmVmPSIjZmlsZXN5c3RlbV9lcnJvci1wYXRoMSI+aWxlc3lzdGVtX2Vycm9yIHBhdGgxPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IDxhIGhyZWY9IiNmaWxlc3lzdGVtX2Vycm9yLXBhdGgyIj5maWxlc3lzdGVtX2Vycm9yIHBhdGgyPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IDxhIGhyZWY9IiNmaWxlc3lzdGVtX2Vycm9yLXdoYXQiPmZpbGVzeXN0ZW1fZXJyb3Igd2hhdDwvYT48YnI+CjxhIGhyZWY9IiNDbGFzcy1kaXJlY3RvcnlfZW50cnkiPkNsYXNzIGRpcmVjdG9yeV9lbnRyeTwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOwo8YSBocmVmPSIjZGlyZWN0b3J5X2VudHJ5LWNvbnN0cnVjdG9ycyI+ZGlyZWN0b3J5X2VudHJ5IGNvbnN0cnVjdG9yczwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9IiNkaXJlY3RvcnlfZW50cnktbW9kaWZpZXJzIj5kaXJlY3RvcnlfZW50cnkgbW9kaWZpZXJzPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iI2RpcmVjdG9yeV9lbnRyeS1vYnNlcnZlcnMiPmRpcmVjdG9yeV9lbnRyeSBvYnNlcnZlcnM8L2E+PGJyPgo8YSBocmVmPSIjQ2xhc3MtZGlyZWN0b3J5X2l0ZXJhdG9yIj5DbGFzcyAgZGlyZWN0b3J5X2l0ZXJhdG9yPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IDxhIGhyZWY9IiNkaXJlY3RvcnlfaXRlcmF0b3ItbWVtYmVycyI+ZGlyZWN0b3J5X2l0ZXJhdG9yIAogICAgbWVtYmVyczwvYT48YnI+CjxhIGhyZWY9IiNDbGFzcy1yZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIj5DbGFzcyByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yPC9hPjxicj4KICAgIDxhIGhyZWY9IiNmaWxlX3N0YXR1cyI+Q2xhc3MgCiAgICBmaWxlX3N0YXR1czwvYT48YnI+CiAgICAmbmJzcDs8L3RkPgogICAgPHRkIHdpZHRoPSIzMyUiIHZhbGlnbj0idG9wIj4KICAgIDxhIGhyZWY9IiNPcGVyYXRpb25hbC1mdW5jdGlvbnMiPgogICAgT3BlcmF0aW9uYWwgZnVuY3Rpb25zPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI2Fic29sdXRlIj5hYnNvbHV0ZTwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YSBocmVmPSIjY29weV9maWxlIj5jb3B5X2ZpbGU8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjY3JlYXRlX2RpcmVjdG9yaWVzIj5jcmVhdGVfZGlyZWN0b3JpZXM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjY3JlYXRlX2RpcmVjdG9yeSI+Y3JlYXRlX2RpcmVjdG9yeTwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNjcmVhdGVfaGFyZF9saW5rIj5jcmVhdGVfaGFyZF9saW5rPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI2NyZWF0ZV9zeW1saW5rIj5jcmVhdGVfc3ltbGluazwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNjdXJyZW50X3BhdGgiPmN1cnJlbnRfcGF0aDwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNleGlzdHMiPmV4aXN0czwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNlcXVpdmFsZW50Ij5lcXVpdmFsZW50PC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI2ZpbGVfc2l6ZSI+ZmlsZV9zaXplPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgIGk8YSBocmVmPSIjaXNfZGlyZWN0b3J5Ij5zX2RpcmVjdG9yeTwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNpc19lbXB0eSI+aXNfZW1wdHk8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjaXNfb3RoZXIiPmlzX290aGVyPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI2lzX3JlZ3VsYXJfZmlsZSI+aXNfcmVndWxhcl9maWxlPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI2lzX3N5bWxpbmsiPmlzX3N5bWxpbms8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjbGFzdF93cml0ZV90aW1lIj5sYXN0X3dyaXRlX3RpbWU8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGEgaHJlZj0iI3JlYWRfc3ltbGluayI+cmVhZF9zeW1saW5rPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI3JlbW92ZSI+cmVtb3ZlPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI3JlbW92ZV9hbGwiPnJlbW92ZV9hbGw8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjcmVuYW1lIj5yZW5hbWU8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGEgaHJlZj0iI3Jlc2l6ZV9maWxlIj5yZXNpemVfZmlsZTwvYT48YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIDxhIGhyZWY9IiNzcGFjZSI+c3BhY2U8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjc3RhdHVzIj5zdGF0dXM8L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjc3RhdHVzX2tub3duIj5zdGF0dXNfa25vd248L2E+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcCA8YSBocmVmPSIjc3ltbGlua19zdGF0dXMiPnN5bWxpbmtfc3RhdHVzPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3AgPGEgaHJlZj0iI3N5c3RlbV9jb21wbGV0ZSI+c3lzdGVtX2NvbXBsZXRlPC9hPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxhIGhyZWY9IiN1bmlxdWVfcGF0aCI+dW5pcXVlX3BhdGg8L2E+PC90ZD4KICAgIDx0ZCB3aWR0aD0iMzQlIiB2YWxpZ249InRvcCI+CiAgICA8YSBocmVmPSIjRmlsZS1zdHJlYW1zIj5GaWxlIHN0cmVhbXM8L2E+PGJyPgo8YSBocmVmPSIjUGF0aC1kZWNvbXBvc2l0aW9uLXRhYmxlIj5QYXRoIGRlY29tcG9zaXRpb24gdGFibGU8L2E+PGJyPgo8YSBocmVmPSIjQWNrbm93bGVkZ2VtZW50cyI+QWNrbm93bGVkZ2VtZW50czwvYT48YnI+CjxhIGhyZWY9IiNSZWZlcmVuY2VzIj5SZWZlcmVuY2VzPC9hPjxicj4KJm5ic3A7PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGgyPjxhIG5hbWU9IkludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjwvaDI+Cgo8cD5UaGlzIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGRlc2NyaWJlcyBjb21wb25lbnRzIHRoYXQgQysrIHByb2dyYW1zIG1heSB1c2UgCnRvIHBlcmZvcm0gb3BlcmF0aW9ucyBpbnZvbHZpbmcgZmlsZSBzeXN0ZW1zLCBpbmNsdWRpbmcgcGF0aHMsIHJlZ3VsYXIgZmlsZXMsIAphbmQgZGlyZWN0b3JpZXMuPC9wPgo8aDI+PGEgbmFtZT0iRGVmaW5pdGlvbnMiPkRlZmluaXRpb25zPC9hPjwvaDI+CjxwPlRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgIHNoYWxsIGFwcGx5IHRocm91Z2hvdXQgdGhpcyByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbjo8L3A+CjxwPjxpPjxiPjxhIG5hbWU9IkZpbGUiPkZpbGU8L2E+OjwvYj4gPC9pPkFuIG9iamVjdCB0aGF0IGNhbiBiZSB3cml0dGVuIHRvLCBvciByZWFkIGZyb20sIG9yIGJvdGguIEEgZmlsZSAKaGFzIGNlcnRhaW4gYXR0cmlidXRlcywgaW5jbHVkaW5nIHR5cGUuIENvbW1vbiB0eXBlcyBvZiBmaWxlcyBpbmNsdWRlIHJlZ3VsYXIgZmlsZXMgCmFuZCBkaXJlY3Rvcmllcy4gT3RoZXIgdHlwZXMgb2YgZmlsZXMsIHN1Y2ggYXMgc3ltYm9saWMgbGlua3MsIG1heSBiZSBzdXBwb3J0ZWQgYnkgdGhlIAppbXBsZW1lbnRhdGlvbi48L3A+CjxwPjxiPjxpPjxhIG5hbWU9IkZpbGUtc3lzdGVtIj5GaWxlIHN5c3RlbTwvYT46PC9pPjwvYj4gQSBjb2xsZWN0aW9uIG9mIGZpbGVzIGFuZCBjZXJ0YWluIG9mIHRoZWlyIGF0dHJpYnV0ZXMuPC9wPgo8cD48Yj48aT48YSBuYW1lPSJGaWxlbmFtZSI+RmlsZW5hbWU8L2E+OjwvaT48L2I+IFRoZSBuYW1lIG9mIGEgZmlsZS4gU2xhc2ggYW5kIDAgCmNoYXJhY3RlcnMgYXJlIG5vdCBwZXJtaXR0ZWQuIEltcGxlbWVudGF0aW9ucyBtYXkgZGVmaW5lIGFkZGl0aW9uYWwgCmNoYXJhY3RlcnMgb3Igc3BlY2lmaWMgbmFtZXMgdGhhdCBhcmUgbm90IHBlcm1pdHRlZC4gRmlsZW5hbWVzIDxjb2RlPi48L2NvZGU+Jm5ic3A7IAphbmQgPGNvZGU+Li48L2NvZGU+Jm5ic3A7IGhhdmUgc3BlY2lhbCBtZWFuaW5nLiBJbXBsZW1lbnRhdGlvbnMgbWF5IGRlZmluZSAKYWRkaXRpb25hbCBmaWxlbmFtZXMgdGhhdCBoYXZlIHNwZWNpYWwgbWVhbmluZy48L3A+CjxibG9ja3F1b3RlPgogIDxwPjxpPltOb3RlOjwvaT4gTW9zdCBvcGVyYXRpbmcgc3lzdGVtcyBwcm9oaWJpdCB0aGUgQU5TSSBjb250cm9sIGNoYXJhY3RlcnMgCiAgKDB4MDAtMHgzMSkgaW4gZmlsZW5hbWVzLjwvcD4KICA8cD5XaW5kb3dzIHByb2hpYml0cyB0aGUgY2hhcmFjdGVycyAweDAwLTB4MzEsIDxjb2RlPiZxdW90OzwvY29kZT4sPGNvZGU+IAogICo8L2NvZGU+LDxjb2RlPiZuYnNwOzo8L2NvZGU+LDxjb2RlPiAmbHQ7PC9jb2RlPiw8Y29kZT4gJmd0OzwvY29kZT4sPGNvZGU+Jm5ic3A7PzwvY29kZT4sPGNvZGU+IAogIFw8L2NvZGU+LDxjb2RlPiAvPC9jb2RlPiwgYW5kPGNvZGU+IHw8L2NvZGU+Jm5ic3A7PGk+LS1lbmQgbm90ZV08L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwPjxiPjxpPjxhIG5hbWU9IlBhdGgiPlBhdGg8L2E+OjwvaT48L2I+IEEgc2VxdWVuY2Ugb2YgZWxlbWVudHMgdGhhdCBpZGVudGlmeSAKYSBsb2NhdGlvbiB3aXRoaW4gYSBmaWxlc3lzdGVtLiBUaGUgZWxlbWVudHMgYXJlIHRoZSA8aT5yb290LW5hbWU8c3ViPm9wdDwvc3ViPjwvaT4sIDxpPgpyb290LWRpcmVjdG9yeTxzdWI+b3B0PC9zdWI+PC9pPiwgYW5kIGFuIG9wdGlvbmFsIHNlcXVlbmNlIG9mIGZpbGVuYW1lcy4gWzxpPk5vdGU6PC9pPiAKQSA8YSBocmVmPSIjUGF0aG5hbWUiPnBhdGhuYW1lPC9hPiBpcyB0aGUgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CjxwPjxiPjxpPjxhIG5hbWU9IkFic29sdXRlLXBhdGgiPkFic29sdXRlIHBhdGg8L2E+OjwvaT48L2I+IEEgcGF0aCB0aGF0IHVuaXF1ZWx5IAppZGVudGlmaWVzIGEgZmlsZS4gVGhlIGZvcm1hdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiA8L3A+CjxibG9ja3F1b3RlPgogIDxwPjxpPltOb3RlOjwvaT4gRm9yIFBPU0lYLWxpa2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmc8Yj4gPC9iPlVuaXggCiAgdmFyaWFudHMsIExpbnV4LCBhbmQgTWFjIE9TIFgsIG9ubHkgcGF0aHMgCiAgdGhhdCBiZWdpbiB3aXRoIGEgc2xhc2ggYXJlIGFic29sdXRlIHBhdGhzLjwvcD4KICA8cD5Gb3IgV2luZG93cy1saWtlIGltcGxlbWVudGF0aW9ucywgaW5jbHVkaW5nIDxhIGhyZWY9Imh0dHA6Ly93d3cuY3lnd2luLmNvbS8iPgogIEN5Z3dpbjwvYT4gYW5kCiAgPGEgaHJlZj0iaHR0cDovL3d3dy5taW5ndy5vcmcvIj5NaW5HVzwvYT4sIG9ubHkgcGF0aHMgdGhhdCBiZWdpbiB3aXRoIGEgZHJpdmUgCiAgc3BlY2lmaWVyIGZvbGxvd2VkIGJ5IGEgc2xhc2gsIG9yIGJlZ2luIHdpdGggdHdvIHNsYXNoZXMsIGFyZSBhYnNvbHV0ZSBwYXRocy4mbmJzcDs8aT4tLWVuZCAKICBub3RlXTwvaT48L3A+CjwvYmxvY2txdW90ZT4KPHA+PGI+PGEgbmFtZT0iUmVsYXRpdmUtcGF0aCI+UmVsYXRpdmUgcGF0aDwvYT46PC9iPiBBIHBhdGggdGhhdCB1bmlxdWVseSAKaWRlbnRpZmllcyBhIGZpbGUgb25seSB3aGVuIGNvbnNpZGVyZWQgcmVsYXRpdmUgdG8gc29tZSBvdGhlciBwYXRoLiBbPGk+Tm90ZTo8L2k+IApQYXRocyAmcXVvdDsuJnF1b3Q7IGFuZCAmcXVvdDsuLiZxdW90OyBhcmUgY29uc2lkZXJlZCB0byBiZSByZWxhdGl2ZSBwYXRocy4gPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgo8cD48aT48Yj48YSBuYW1lPSJQYXRobmFtZSI+UGF0aG5hbWU8L2E+OjwvYj4gPC9pPkEgY2hhcmFjdGVyIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSAKcGF0aC4gUGF0aG5hbWVzIGFyZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnZW5lcmljIHBhdGhuYW1lIGZvcm1hdCBvciB0aGUgCm5hdGl2ZSBwYXRobmFtZSBmb3JtYXQuPC9wPgo8cD48Yj48aT48YSBuYW1lPSJnZW5lcmljLXBhdGhuYW1lLWZvcm1hdCI+R2VuZXJpYyBwYXRobmFtZSBmb3JtYXQ6PC9hPjwvaT48L2I+PC9wPgo8YmxvY2txdW90ZT4KPHA+PGk+cGF0aG5hbWU6PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcm9vdC1uYW1lPHN1Yj5vcHQ8L3N1Yj4gCnJvb3QtZGlyZWN0b3J5PHN1Yj5vcHQ8L3N1Yj4gcmVsYXRpdmUtcGF0aDxzdWI+b3B0PC9zdWI+PC9pPjwvcD4KPHA+PGk+cm9vdC1uYW1lOjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IAppbXBsZW1lbnRhdGlvbi1kZWZpbmVkPC9pPjwvcD4KPGJsb2NrcXVvdGU+CiAgPGJsb2NrcXVvdGU+CjxwPls8aT5Ob3RlOjwvaT4gTW9zdCBQT1NJWCBhbmQgV2luZG93cyBiYXNlZCBvcGVyYXRpbmcgc3lzdGVtIGRlZmluZSBhIG5hbWUgCmJlZ2lubmluZyB3aXRoIHR3byBzbGFzaGVzIChvciBiYWNrc2xhc2hlcywgZm9yIFdpbmRvd3MpIGFzIGEgcm9vdC1uYW1lIAppZGVudGlmeWluZyBuZXR3b3JrIGxvY2F0aW9ucy4gV2luZG93cyBkZWZpbmVzIGEgc2luZ2xlIGxldHRlciBmb2xsb3dlZCBieSBhCjxjb2RlPiZxdW90OzomcXVvdDs8L2NvZGU+IGFzIGEgcm9vdC1uYW1lIGlkZW50aWZ5aW5nIGEgZGlzYyBkcml2ZS4gPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgogIDwvYmxvY2txdW90ZT4KPC9ibG9ja3F1b3RlPgo8cD48aT5yb290LWRpcmVjdG9yeTo8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAKZGlyZWN0b3J5LXNlcGFyYXRvcjwvaT48L3A+CjxwPjxpPnJlbGF0aXZlLXBhdGg6PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgCmZpbGVuYW1lPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmVsYXRpdmUtcGF0aCAKZGlyZWN0b3J5LXNlcGFyYXRvcjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJlbGF0aXZlLXBhdGggCmRpcmVjdG9yeS1zZXBhcmF0b3IgZmlsZW5hbWU8L2k+PC9wPgo8cD48aT5maWxlbmFtZTo8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBuYW1lPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9pPjxjb2RlPiZxdW90Oy4mcXVvdDs8L2NvZGU+PGk+PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9pPjxjb2RlPgomcXVvdDsuLiZxdW90OzwvY29kZT48L3A+CjxwPjxpPmRpcmVjdG9yeS1zZXBhcmF0b3I6PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGNvZGU+JnF1b3Q7LyZxdW90Ozxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZxdW90Oy8mcXVvdDs8L2NvZGU+IGRpcmVjdG9yeS1zZXBhcmF0b3I8L2k+PC9wPgo8cD5NdWx0aXBsZSBzdWNjZXNzaXZlIDxpPmRpcmVjdG9yeS1zZXBhcmF0b3I8L2k+IGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgdG8gCmJlIHRoZSBzYW1lIGFzIG9uZSA8aT5kaXJlY3Rvcnktc2VwYXJhdG9yPC9pPiBjaGFyYWN0ZXIuIFRoZSA8aT5maWxlbmFtZTwvaT4KPGNvZGU+JnF1b3Q7LiZxdW90OzwvY29kZT4gaXMgY29uc2lkZXJlZCB0byBiZSBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuIFRoZQo8aT5maWxlbmFtZTwvaT4gPGNvZGU+JnF1b3Q7Li4mcXVvdDs8L2NvZGU+IGlzIGNvbnNpZGVyZWQgdG8gYmUgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgCmRpcmVjdG9yeS4gU3BlY2lmaWMgPGk+ZmlsZW5hbWVzPC9pPiBtYXkgaGF2ZSBzcGVjaWFsIG1lYW5pbmcgZm9yIGEgcGFydGljdWxhciAKb3BlcmF0aW5nIHN5c3RlbS48L3A+CjwvYmxvY2txdW90ZT4KPHA+PGI+PGk+PGEgbmFtZT0ibmF0aXZlLXBhdGhuYW1lLWZvcm1hdCI+TmF0aXZlIHBhdGhuYW1lIGZvcm1hdDo8L2E+PC9pPjwvYj4mbmJzcDsgCkFuIGltcGxlbWVudGF0aW9uIGRlZmluZWQgZm9ybWF0LiBbPGk+Tm90ZTo8L2k+IEZvciBQT1NJWC1saWtlIG9wZXJhdGluZyAKc3lzdGVtcywgdGhlIG5hdGl2ZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlIGdlbmVyaWMgZm9ybWF0LiBGb3IgV2luZG93cywgdGhlIApuYXRpdmUgZm9ybWF0IGlzIHNpbWlsYXIgdG8gdGhlIGdlbmVyaWMgZm9ybWF0LCBidXQgdGhlIGRpcmVjdG9yeS1zZXBhcmF0b3IgCmNoYXJhY3RlcnMgY2FuIGJlIGVpdGhlciBzbGFzaGVzIG9yIGJhY2tzbGFzaGVzLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CjxwPjxpPjxiPjxhIG5hbWU9IkxpbmsiPkxpbms8L2E+OjwvYj4gPC9pPkEgZGlyZWN0b3J5IGVudHJ5IG9iamVjdCB0aGF0IGFzc29jaWF0ZXMgYSAKZmlsZW5hbWUgd2l0aCBhIGZpbGUuIE9uIHNvbWUgZmlsZSBzeXN0ZW1zLCBzZXZlcmFsIGRpcmVjdG9yeSBlbnRyaWVzIGNhbiAKYXNzb2NpYXRlIG5hbWVzIHdpdGggdGhlIHNhbWUgZmlsZS48L3A+CjxwPjxiPjxpPjxhIG5hbWU9IkhhcmQtbGluayI+SGFyZCBsaW5rPC9hPjo8L2k+PC9iPiBBIGxpbmsgdG8gYW4gZXhpc3RpbmcgZmlsZS4gU29tZSAKZmlsZSBzeXN0ZW1zIHN1cHBvcnQgbXVsdGlwbGUgaGFyZCBsaW5rcyB0byBhIGZpbGUuIElmIHRoZSBsYXN0IGhhcmQgbGluayB0byBhIApmaWxlIGlzIHJlbW92ZWQsIHRoZSBmaWxlIGl0c2VsZiBpcyByZW1vdmVkLjwvcD4KPGJsb2NrcXVvdGU+CjxwPls8aT5Ob3RlOjwvaT4gQSBoYXJkIGxpbmsgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBzaGFyZWQtb3duZXJzaGlwIHNtYXJ0IApwb2ludGVyIHRvIGEgZmlsZS48aT4gLS0gZW5kIG5vdGU8L2k+XTxpPiA8L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwPjxpPjxhIG5hbWU9IlN5bWJvbGljLWxpbmsiPlM8Yj55bWJvbGljIGxpbms8L2I+PC9hPjxiPjo8L2I+IDwvaT5BIHR5cGUgb2YgZmlsZSB3aXRoIHRoZSAKcHJvcGVydHkgdGhhdCB3aGVuIHRoZSBmaWxlIGlzIGVuY291bnRlcmVkIGR1cmluZyBwYXRobmFtZSByZXNvbHV0aW9uLCBhIHN0cmluZyAKc3RvcmVkIGJ5IHRoZSBmaWxlIGlzIHVzZWQgdG8gbW9kaWZ5IHRoZSBwYXRobmFtZSByZXNvbHV0aW9uLjwvcD4KPGJsb2NrcXVvdGU+CjxwPls8aT5Ob3RlOjwvaT4gQSBzeW1ib2xpYyBsaW5rIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgcmF3IHBvaW50ZXIgdG8gYSBmaWxlLiAKSWYgdGhlIGZpbGUgcG9pbnRlZCB0byBkb2VzIG5vdCBleGlzdCwgdGhlIHN5bWJvbGljIGxpbmsgaXMgc2FpZCB0byBiZSBhIAomcXVvdDtkYW5nbGluZyZxdW90OyBzeW1ib2xpYyBsaW5rLjxpPiAtLSBlbmQgbm90ZTwvaT5dPGk+IDwvaT48L3A+CjwvYmxvY2txdW90ZT4KPHA+PGI+PGk+PGEgbmFtZT0iUmFjZS1jb25kaXRpb24iPlJhY2UgY29uZGl0aW9uPC9hPjo8L2k+PC9iPiBUaGUgY29uZGl0aW9uIHRoYXQgb2NjdXJzIAp3aGVuIG11bHRpcGxlIHRocmVhZHMsIHByb2Nlc3Nlcywgb3IgY29tcHV0ZXJzIGludGVybGVhdmUgYWNjZXNzIGFuZCAKbW9kaWZpY2F0aW9uIG9mIAp0aGUgc2FtZSBvYmplY3Qgd2l0aGluIGEgZmlsZSBzeXN0ZW0uPC9wPgo8cD48Yj48aT48YSBuYW1lPSJEb3QiPkRvdDwvYT4sIERvdCBEb3Q6PC9pPjwvYj4gU3lub255bXMgZm9yIHRoZSBmaWxlbmFtZXMgPGNvZGU+JnF1b3Q7LiZxdW90OzwvY29kZT4gCmFuZCA8Y29kZT4mcXVvdDsuLiZxdW90OzwvY29kZT4sIHJlc3BlY3RpdmVseS4gVGhlIGRvdCBmaWxlbmFtZSBuYW1lcyB0aGUgY3VycmVudCAKZGlyZWN0b3J5LiBUaGUgZG90IGRvdCBmaWxlbmFtZSBuYW1lcyB0aGUgcGFyZW50IGRpcmVjdG9yeS48L3A+CjxoMj48YSBuYW1lPSJDb25mb3JtYW5jZSI+Q29uZm9ybWFuY2U8L2E+PC9oMj4KPHA+QmVoYXZpb3IgaXMgc29tZXRpbWVzIHNwZWNpZmllZCBieSByZWZlcmVuY2UgdG8gSVNPL0lFQyA5OTQ1OjIwMDMsIDxpPgo8YSBocmVmPSJodHRwOi8vd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vIj5QT1NJWDwvYT48L2k+LiBIb3cgc3VjaCBiZWhhdmlvciBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpcyB1bnNwZWNpZmllZC48L3A+CjxibG9ja3F1b3RlPgo8cD5bPGk+Tm90ZTo8L2k+IFRoaXMgY29uc3RpdHV0ZXMgYW4gJnF1b3Q7YXMgaWYmcXVvdDsgcnVsZSBmb3IgaW1wbGVtZW50YXRpb24gb2YgCm9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IGJlaGF2aW9yLiBQcmVzdW1hYmx5IGltcGxlbWVudGF0aW9ucyB3aWxsIHVzdWFsbHkgY2FsbCBuYXRpdmUgCm9wZXJhdGluZyBzeXN0ZW0gQVBJJ3MuIDxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgo8cD5JbXBsZW1lbnRhdGlvbnMgYXJlIGVuY291cmFnZWQsIGJ1dCBub3QgcmVxdWlyZWQsIHRvIHN1cHBvcnQgc3VjaCBiZWhhdmlvciAKIAphcyBpdCBpcyBkZWZpbmVkIGJ5IDxpPlBPU0lYPC9pPi4gSW1wbGVtZW50YXRpb25zIHNoYWxsIGRvY3VtZW50IGFueSAKYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gdGhlIDxpPlBPU0lYPC9pPiBkZWZpbmVkIGJlaGF2aW9yLiBJbXBsZW1lbnRhdGlvbnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBleGFjdCA8aT5QT1NJWDwvaT4gYmVoYXZpb3IgYXJlIAplbmNvdXJhZ2VkIHRvIHByb3ZpZGUgYmVoYXZpb3IgYXMgY2xvc2UgdG8gPGk+UE9TSVg8L2k+IGJlaGF2aW9yIGFzIGlzIHJlYXNvbmFibGUgZ2l2ZW4gdGhlIApsaW1pdGF0aW9ucyBvZiBhY3R1YWwgb3BlcmF0aW5nIHN5c3RlbXMgYW5kIGZpbGUgc3lzdGVtcy4gSWYgYW4gaW1wbGVtZW50YXRpb24gY2Fubm90IHByb3ZpZGUgYW55IApyZWFzb25hYmxlIGJlaGF2aW9yLCB0aGUgaW1wbGVtZW50YXRpb24gc2hhbGwgcmVwb3J0IGFuIGVycm9yIGluIGFuIAppbXBsZW1lbnRhdGlvbi1kZWZpbmVkIG1hbm5lci48L3A+CjxibG9ja3F1b3RlPgo8cD5bPGk+Tm90ZTo8L2k+IFN1Y2ggZXJyb3JzIG1pZ2h0IGJlIHJlcG9ydGVkIGJ5IGFuICNlcnJvciBkaXJlY3RpdmUsIGEgPGNvZGU+CnN0YXRpY19hc3NlcnQ8L2NvZGU+LCBhIDxjb2RlPmZpbGVzeXN0ZW1fZXJyb3I8L2NvZGU+IGV4Y2VwdGlvbiwgYSBzcGVjaWFsIApyZXR1cm4gdmFsdWUsIG9yIHNvbWUgb3RoZXIgbWFubmVyLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHA+U3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbXMgc3VjaCBhcyA8aT5PcGVuTVZTPC9pPiwKPGk+VU5JWDwvaT4sIGFuZCA8aT5XaW5kb3dzPC9pPiBhcmUgbWVudGlvbmVkIG9ubHkgZm9yIHB1cnBvc2VzIG9mIGlsbHVzdHJhdGlvbiBvciB0byAKZ2l2ZSBndWlkYW5jZSB0byBpbXBsZW1lbnRlcnMuIE5vIHNsaWdodCB0byBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpcyBpbXBsaWVkIApvciBpbnRlbmRlZC48L3A+CjxwPlRoZSA8aT5FZmZlY3RzPC9pPiBhbmQgPGk+UG9zdGNvbmRpdGlvbnM8L2k+IG9mIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyAKcmVmZXJlbmNlIAptYXkgbm90IGJlIGFjaGlldmVkIGluIAp0aGUgcHJlc2VuY2Ugb2YgPGEgaHJlZj0iI1JhY2UtY29uZGl0aW9uIj5yYWNlIGNvbmRpdGlvbnM8L2E+LiBObyBkaWFnbm9zdGljIGlzIHJlcXVpcmVkLjwvcD4KPHA+SWYgdGhlIHBvc3NpYmlsaXR5IG9mIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBtYWtlIGl0IHVucmVsaWFibGUgZm9yIGEgcHJvZ3JhbSB0byAKdGVzdCBmb3IgYSBwcmVjb25kaXRpb24gYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiBkZXNjcmliZWQgaW4gdGhpcyBjbGF1c2UsIDxpPgpSZXF1aXJlczwvaT4gaXMgbm90IHNwZWNpZmllZCBmb3IgdGhlIGNvbmRpdGlvbi4gSW5zdGVhZCwgdGhlIGNvbmRpdGlvbiBpcyAKc3BlY2lmaWVkIGFzIGEgPGk+VGhyb3dzPC9pPiBjb25kaXRpb24uPC9wPgo8YmxvY2txdW90ZT4KPHA+WzxpPk5vdGU6PC9pPiBBcyBhIGRlc2lnbiBwcmFjdGljZSwgcHJlY29uZGl0aW9ucyBhcmUgbm90IHNwZWNpZmllZCB3aGVuIGl0IAppcyB1bnJlYXNvbmFibGUgZm9yIGEgcHJvZ3JhbSB0byBkZXRlY3QgdGhlbSBwcmlvciB0byBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gPGk+Ci0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPGgyPjxhIG5hbWU9IkhlYWRlci1maWxlc3lzdGVtLXN5bm9wc2lzIj5IZWFkZXIgPGNvZGU+Jmx0O2Jvb3N0L2ZpbGVzeXN0ZW0mZ3Q7PC9jb2RlPiBzeW5vcHNpczwvYT48L2gyPgo8cHJlPiAgbmFtZXNwYWNlIGJvb3N0CiAgewogICAgbmFtZXNwYWNlIGZpbGVzeXN0ZW0KICAgIHsKICAgICAgY2xhc3MgPGEgaHJlZj0iI2NsYXNzLXBhdGgiPnBhdGg8L2E+OwoKICAgICAgdm9pZCBzd2FwKHBhdGgmYW1wOyBsaHMsIHBhdGgmYW1wOyByaHMpOwogICAgICBib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKHBhdGg6Oml0ZXJhdG9yIGZpcnN0MSwgcGF0aDo6aXRlcmF0b3IgbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDo6aXRlcmF0b3IgZmlyc3QyLCBwYXRoOjppdGVyYXRvciBsYXN0Mik7CgogICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCZhbXA7IGxocywgY29uc3QgcGF0aCZhbXA7IHJocyk7CiAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJmFtcDsgbGhzLCBjb25zdCBwYXRoJmFtcDsgcmhzKTsKICAgICAgYm9vbCBvcGVyYXRvciZsdDsgKGNvbnN0IHBhdGgmYW1wOyBsaHMsIGNvbnN0IHBhdGgmYW1wOyByaHMpOwogICAgICBib29sIG9wZXJhdG9yJmx0Oz0oY29uc3QgcGF0aCZhbXA7IGxocywgY29uc3QgcGF0aCZhbXA7IHJocyk7CiAgICAgIGJvb2wgb3BlcmF0b3ImZ3Q7IChjb25zdCBwYXRoJmFtcDsgbGhzLCBjb25zdCBwYXRoJmFtcDsgcmhzKTsKICAgICAgYm9vbCBvcGVyYXRvciZndDs9KGNvbnN0IHBhdGgmYW1wOyBsaHMsIGNvbnN0IHBhdGgmYW1wOyByaHMpOwoKICAgICAgcGF0aCBvcGVyYXRvci8gKGNvbnN0IHBhdGgmYW1wOyBsaHMsIGNvbnN0IHBhdGgmYW1wOyByaHMpOwoKICAgICAgc3RkOjpvc3RyZWFtJmFtcDsgIG9wZXJhdG9yJmx0OyZsdDsoIHN0ZDo6b3N0cmVhbSZhbXA7IG9zLCBjb25zdCBwYXRoJmFtcDsgcCApOwogICAgICBzdGQ6Ondvc3RyZWFtJmFtcDsgb3BlcmF0b3ImbHQ7Jmx0Oyggc3RkOjp3b3N0cmVhbSZhbXA7IG9zLCBjb25zdCBwYXRoJmFtcDsgcCApOwogICAgICBzdGQ6OmlzdHJlYW0mYW1wOyAgb3BlcmF0b3ImZ3Q7Jmd0Oyggc3RkOjppc3RyZWFtJmFtcDsgaXMsIHBhdGgmYW1wOyBwICk7CiAgICAgIHN0ZDo6d2lzdHJlYW0mYW1wOyBvcGVyYXRvciZndDsmZ3Q7KCBzdGQ6Ondpc3RyZWFtJmFtcDsgaXMsIHBhdGgmYW1wOyBwICkKCiAgICAgIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5jbGFzcyA8YSBocmVmPSIjQ2xhc3MtZmlsZXN5c3RlbV9lcnJvciI+ZmlsZXN5c3RlbV9lcnJvcjwvYT47PC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRjAwIj4KPC9zcGFuPiAgICAgIAogICAgICA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+Y2xhc3MgPGEgaHJlZj0iI0NsYXNzLWRpcmVjdG9yeV9lbnRyeSI+ZGlyZWN0b3J5X2VudHJ5PC9hPjsKCjwvc3Bhbj4gICAgICBjbGFzcyA8YSBocmVmPSIjQ2xhc3MtZGlyZWN0b3J5X2l0ZXJhdG9yIj5kaXJlY3RvcnlfaXRlcmF0b3I8L2E+OwoKICAgICAgY2xhc3MgPGEgaHJlZj0iI0NsYXNzLXJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiPnJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3I8L2E+OwoKICAgICAgZW51bSA8YSBuYW1lPSJmaWxlX3R5cGUiPmZpbGVfdHlwZTwvYT4geyBzdGF0dXNfZXJyb3IsIGZpbGVfbm90X2ZvdW5kLCByZWd1bGFyX2ZpbGUsIGRpcmVjdG9yeV9maWxlLAogICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtfZmlsZSwgYmxvY2tfZmlsZSwgY2hhcmFjdGVyX2ZpbGUsIGZpZm9fZmlsZSwgc29ja2V0X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgdHlwZV91bmtub3duCiAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICBjbGFzcyA8YSBocmVmPSIjZmlsZV9zdGF0dXMiPmZpbGVfc3RhdHVzPC9hPjsKCiAgICAgIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5zdHJ1Y3QgPGEgbmFtZT0ic3BhY2VfaW5mbyI+c3BhY2VfaW5mbzwvYT4gIC8vIHJldHVybmVkIGJ5IDwvc3Bhbj48YSBocmVmPSIjc3BhY2UiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmUiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5zcGFjZTwvc3Bhbj48L2E+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiBmdW5jdGlvbgogICAgICB7CiAgICAgICAgdWludG1heF90IGNhcGFjaXR5OwogICAgICAgIHVpbnRtYXhfdCBmcmVlOyAKICAgICAgICB1aW50bWF4X3QgYXZhaWxhYmxlOyAvLyBmcmVlIHNwYWNlIGF2YWlsYWJsZSB0byBhIG5vbi1wcml2aWxlZ2VkIHByb2Nlc3MKICAgICAgfTsKCiAgICAgIEJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKDxhIG5hbWU9ImNvcHlfb3B0aW9uIj5jb3B5X29wdGlvbjwvYT4pCiAgICAgIHsKICAgICAgICBmYWlsX2lmX2V4aXN0cywKICAgICAgICBvdmVyd3JpdGVfaWZfZXhpc3RzCiAgICAgIH07CiAgICAgIEJPT1NUX1NDT1BFRF9FTlVNX0VORAoKICAgICAgLy8gPGEgaHJlZj0iI09wZXJhdGlvbmFsLWZ1bmN0aW9ucyI+b3BlcmF0aW9uYWwgZnVuY3Rpb25zPC9hPgoKPC9zcGFuPiAgICAgIHBhdGggICAgICAgICA8YSBocmVmPSIjYWJzb2x1dGUiPmFic29sdXRlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgY29uc3QgcGF0aCZhbXA7IGJhc2U9Y3VycmVudF9wYXRoKCkpOwoKICAgICAgdm9pZCAgICAgICAgIGNvcHkoY29uc3QgcGF0aCZhbXA7IGZyb20sIGNvbnN0IHBhdGgmYW1wOyB0byk7CiAgICAgIHZvaWQgICAgICAgICBjb3B5KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8sIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHZvaWQgICAgICAgICBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJmFtcDsgZnJvbSwgY29uc3QgcGF0aCZhbXA7IHRvKTsKICAgICAgdm9pZCAgICAgICAgIGNvcHlfZGlyZWN0b3J5KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8sIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHZvaWQgICAgICAgICA8YSBocmVmPSIjY29weV9maWxlIj5jb3B5X2ZpbGU8L2E+KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8pOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2NvcHlfZmlsZSI+Y29weV9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgZnJvbSwgY29uc3QgcGF0aCZhbXA7IHRvLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CiAgICAgIHZvaWQgICAgICAgICA8YSBocmVmPSIjY29weV9maWxlIj5jb3B5X2ZpbGU8L2E+KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8sIEJPT1NUX1NDT1BFRF9FTlVNKDxhIGhyZWY9IiNjb3B5X29wdGlvbiI+Y29weV9vcHRpb248L2E+KSBvcHRpb24pOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2NvcHlfZmlsZSI+Y29weV9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgZnJvbSwgY29uc3QgcGF0aCZhbXA7IHRvLCBCT09TVF9TQ09QRURfRU5VTSg8YSBocmVmPSIjY29weV9vcHRpb24iPmNvcHlfb3B0aW9uPC9hPikgb3B0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHZvaWQgICAgICAgICBjb3B5X3N5bWxpbmsoY29uc3QgcGF0aCZhbXA7IGV4aXN0aW5nX3N5bWxpbmssIGNvbnN0IHBhdGgmYW1wOyBuZXdfc3ltbGluayk7CiAgICAgIHZvaWQgICAgICAgICBjb3B5X3N5bWxpbmsoY29uc3QgcGF0aCZhbXA7IGV4aXN0aW5nX3N5bWxpbmssIGNvbnN0IHBhdGgmYW1wOyBuZXdfc3ltbGluaywgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNjcmVhdGVfZGlyZWN0b3JpZXMiPmNyZWF0ZV9kaXJlY3RvcmllczwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2NyZWF0ZV9kaXJlY3RvcmllcyI+Y3JlYXRlX2RpcmVjdG9yaWVzPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNjcmVhdGVfZGlyZWN0b3J5Ij5jcmVhdGVfZGlyZWN0b3J5PC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgIGJvb2wgICAgICAgICA8YSBocmVmPSIjY3JlYXRlX2RpcmVjdG9yeSI+Y3JlYXRlX2RpcmVjdG9yeTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gICAgICB2b2lkICAgICAgICAgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmYW1wOyB0bywgY29uc3QgcGF0aCZhbXA7IDwvc3Bhbj5uZXdfc3ltbGluazxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4pOwogICAgICB2b2lkICAgICAgICAgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmYW1wOyB0bywgY29uc3QgcGF0aCZhbXA7IDwvc3Bhbj5uZXdfc3ltbGluaywgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWM8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+KTsKPC9zcGFuPgogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2NyZWF0ZV9oYXJkX2xpbmsiPmNyZWF0ZV9oYXJkX2xpbms8L2E+KGNvbnN0IHBhdGgmYW1wOyB0bywgY29uc3QgcGF0aCZhbXA7IG5ld19oYXJkX2xpbmspOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2NyZWF0ZV9oYXJkX2xpbmsiPmNyZWF0ZV9oYXJkX2xpbms8L2E+KGNvbnN0IHBhdGgmYW1wOyB0bywgY29uc3QgcGF0aCZhbXA7IG5ld19oYXJkX2xpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2NyZWF0ZV9zeW1saW5rIj5jcmVhdGVfc3ltbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHRvLCBjb25zdCBwYXRoJmFtcDsgPC9zcGFuPm5ld19zeW1saW5rPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPik7CiAgICAgIHZvaWQgICAgICAgICA8YSBocmVmPSIjY3JlYXRlX3N5bWxpbmsiPmNyZWF0ZV9zeW1saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgdG8sIGNvbnN0IHBhdGgmYW1wOyA8L3NwYW4+bmV3X3N5bWxpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPik7Cgo8L3NwYW4+ICAgICAgcGF0aCAgICAgICAgIDxhIGhyZWY9IiNjdXJyZW50X3BhdGgiPmN1cnJlbnRfcGF0aDwvYT4oKTsKICAgICAgcGF0aCAgICAgICAgIDxhIGhyZWY9IiNjdXJyZW50X3BhdGgiPmN1cnJlbnRfcGF0aDwvYT4oc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2N1cnJlbnRfcGF0aCI+Y3VycmVudF9wYXRoPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgIHZvaWQgICAgICAgICA8YSBocmVmPSIjY3VycmVudF9wYXRoIj5jdXJyZW50X3BhdGg8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CgogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2V4aXN0cyI+ZXhpc3RzPC9hPihmaWxlX3N0YXR1cyBzKTsKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNleGlzdHMiPmV4aXN0czwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2V4aXN0cyI+ZXhpc3RzPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNlcXVpdmFsZW50Ij5lcXVpdmFsZW50PC9hPihjb25zdCBwYXRoJmFtcDsgcDEsIGNvbnN0IHBhdGgmYW1wOyBwMik7CiAgICAgIGJvb2wgICAgICAgICA8YSBocmVmPSIjZXF1aXZhbGVudCI+ZXF1aXZhbGVudDwvYT4oY29uc3QgcGF0aCZhbXA7IHAxLCBjb25zdCBwYXRoJmFtcDsgcDIsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAiPnVpbnRtYXhfdDwvc3Bhbj4gICAgPGEgaHJlZj0iI2ZpbGVfc2l6ZSI+ZmlsZV9zaXplPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAiPnVpbnRtYXhfdDwvc3Bhbj4gICAgPGEgaHJlZj0iI2ZpbGVfc2l6ZSI+ZmlsZV9zaXplPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8cHJlPiAgICAgIHVpbnRtYXhfdCAgICBoYXJkX2xpbmtfY291bnQoY29uc3QgcGF0aCZhbXA7IHApOwogICAgICB1aW50bWF4X3QgICAgaGFyZF9saW5rX2NvdW50KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CgogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX2RpcmVjdG9yeSI+aXNfZGlyZWN0b3J5PC9hPihmaWxlX3N0YXR1cyBzKTsKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNpc19kaXJlY3RvcnkyIj5pc19kaXJlY3Rvcnk8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTsKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNpc19kaXJlY3RvcnkyIj5pc19kaXJlY3Rvcnk8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CgogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX2VtcHR5Ij5pc19lbXB0eTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX2VtcHR5Ij5pc19lbXB0eTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIGJvb2wgICAgICAgICA8YSBocmVmPSIjaXNfb3RoZXIiPmlzX290aGVyPC9hPihmaWxlX3N0YXR1cyBzKTsKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNpc19vdGhlcjIiPmlzX290aGVyPC9hPihjb25zdCBwYXRoJmFtcDsgcCwpOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX290aGVyMiI+aXNfb3RoZXI8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CgogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX3JlZ3VsYXJfZmlsZSI+aXNfcmVndWxhcl9maWxlPC9hPihmaWxlX3N0YXR1cyBzKTsgCiAgICAgIGJvb2wgICAgICAgICBpPGEgaHJlZj0iI2lzX3JlZ3VsYXJfZmlsZTIiPnNfcmVndWxhcl9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgIGJvb2wgICAgICAgICBpPGEgaHJlZj0iI2lzX3JlZ3VsYXJfZmlsZTIiPnNfcmVndWxhcl9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNpc19zeW1saW5rIj5pc19zeW1saW5rPC9hPihmaWxlX3N0YXR1cyBzKTsKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNpc19zeW1saW5rMiI+aXNfc3ltbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI2lzX3N5bWxpbmsyIj5pc19zeW1saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgc3RkOjp0aW1lX3QgIDxhIGhyZWY9IiNsYXN0X3dyaXRlX3RpbWUiPmxhc3Rfd3JpdGVfdGltZTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBzdGQ6OnRpbWVfdCAgPGEgaHJlZj0iI2xhc3Rfd3JpdGVfdGltZSI+bGFzdF93cml0ZV90aW1lPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI2xhc3Rfd3JpdGVfdGltZTIiPmxhc3Rfd3JpdGVfdGltZTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lKTsKICAgICAgdm9pZCAgICAgICAgIDxhIGhyZWY9IiNsYXN0X3dyaXRlX3RpbWUyIj5sYXN0X3dyaXRlX3RpbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBjb25zdCBzdGQ6OnRpbWVfdCBuZXdfdGltZSwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgcGF0aCAgICAgICAgIDxhIGhyZWY9IiNyZWFkX3N5bWxpbmsiPnJlYWRfc3ltbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBwYXRoICAgICAgICAgPGEgaHJlZj0iI3JlYWRfc3ltbGluayI+cmVhZF9zeW1saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNyZW1vdmUiPnJlbW92ZTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICBib29sICAgICAgICAgPGEgaHJlZj0iI3JlbW92ZSI+cmVtb3ZlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgdWludG1heF90ICAgIDxhIGhyZWY9IiNyZW1vdmVfYWxsIj5yZW1vdmVfYWxsPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgIHVpbnRtYXhfdCAgICA8YSBocmVmPSIjcmVtb3ZlX2FsbCI+cmVtb3ZlX2FsbDwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHZvaWQgICAgICAgICA8YSBocmVmPSIjcmVuYW1lIj5yZW5hbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8pOwogICAgICB2b2lkICAgICAgICAgPGEgaHJlZj0iI3JlbmFtZSI+cmVuYW1lPC9hPihjb25zdCBwYXRoJmFtcDsgZnJvbSwgY29uc3QgcGF0aCZhbXA7IHRvLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CgogICAgICB2b2lkICAgICAgICAgcmVzaXplX2ZpbGUoY29uc3QgcGF0aCZhbXA7IHAsIHVpbnRtYXhfdCBzaXplKTsKICAgICAgdm9pZCAgICAgICAgIHJlc2l6ZV9maWxlKGNvbnN0IHBhdGgmYW1wOyBwLCB1aW50bWF4X3Qgc2l6ZSwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiAgICAgIDxhIGhyZWY9IiNzcGFjZV9pbmZvIj5zcGFjZV9pbmZvPC9hPiAgIDxhIGhyZWY9IiNzcGFjZSI+c3BhY2U8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTsKICAgICAgPGEgaHJlZj0iI3NwYWNlX2luZm8iPnNwYWNlX2luZm88L2E+ICAgPGEgaHJlZj0iI3NwYWNlIj5zcGFjZTwvYT4oY29uc3QgcGF0aCZhbXA7IHA8L3NwYW4+LCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYzxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4pOwo8L3NwYW4+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGMDAiPgo8L3NwYW4+ICAgICAgPGEgaHJlZj0iI2ZpbGVfc3RhdHVzIj5maWxlX3N0YXR1czwvYT4gIDxhIGhyZWY9IiNzdGF0dXMiPnN0YXR1czwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICA8YSBocmVmPSIjZmlsZV9zdGF0dXMiPmZpbGVfc3RhdHVzPC9hPiAgPGEgaHJlZj0iI3N0YXR1cyI+c3RhdHVzPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgYm9vbCAgICAgICAgIDxhIGhyZWY9IiNzdGF0dXNfa25vd24iPnN0YXR1c19rbm93bjwvYT4oZmlsZV9zdGF0dXMgcyk7CgogICAgICA8YSBocmVmPSIjZmlsZV9zdGF0dXMiPmZpbGVfc3RhdHVzPC9hPiAgPGEgaHJlZj0iI3N5bWxpbmtfc3RhdHVzIj5zeW1saW5rX3N0YXR1czwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwogICAgICA8YSBocmVmPSIjZmlsZV9zdGF0dXMiPmZpbGVfc3RhdHVzPC9hPiAgPGEgaHJlZj0iI3N5bWxpbmtfc3RhdHVzIj5zeW1saW5rX3N0YXR1czwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHBhdGggICAgICAgICA8YSBocmVmPSIjc3lzdGVtX2NvbXBsZXRlIj5zeXN0ZW1fY29tcGxldGU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTsKICAgICAgcGF0aCAgICAgICAgIDxhIGhyZWY9IiNzeXN0ZW1fY29tcGxldGUiPnN5c3RlbV9jb21wbGV0ZTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICAgIHBhdGggICAgICAgICA8YSBocmVmPSIjdW5pcXVlX3BhdGgiPnVuaXF1ZV9wYXRoPC9hPihjb25zdCBwYXRoJmFtcDsgbW9kZWw9JnF1b3Q7JSUlJS0lJSUlLSUlJSUtJSUlJSZxdW90Oyk7CiAgICAgIHBhdGggICAgICAgICA8YSBocmVmPSIjdW5pcXVlX3BhdGgiPnVuaXF1ZV9wYXRoPC9hPihjb25zdCBwYXRoJmFtcDsgbW9kZWwsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTsKCiAgICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgfSAvLyBuYW1lc3BhY2UgYm9vc3Q8L3ByZT4KPGgyPjxhIG5hbWU9IkVycm9yLXJlcG9ydGluZyI+RXJyb3IgcmVwb3J0aW5nPC9hPjwvaDI+CjxwPkZpbGVzeXN0ZW0gbGlicmFyeSBmdW5jdGlvbnMgb2Z0ZW4gcHJvdmlkZSB0d28gb3ZlcmxvYWRzLCBvbmUgdGhhdCAKdGhyb3dzIGFuIGV4Y2VwdGlvbiB0byByZXBvcnQgZmlsZSBzeXN0ZW0gZXJyb3JzLCBhbmQgYW5vdGhlciB0aGF0IHNldHMgYW4KPGNvZGU+ZXJyb3JfY29kZTwvY29kZT4uPC9wPgo8YmxvY2txdW90ZT4KPHA+WzxpPk5vdGU6PC9pPiBUaGlzIHN1cHBvcnRzIHR3byBjb21tb24gdXNlIGNhc2VzOjwvcD4KPHVsPgogIDxsaT5Vc2VzIHdoZXJlIGZpbGUgc3lzdGVtIAplcnJvcnMgYXJlIHRydWx5IGV4Y2VwdGlvbmFsIGFuZCBpbmRpY2F0ZSBhIHNlcmlvdXMgZmFpbHVyZS4gVGhyb3dpbmcgYW4gCiAgZXhjZXB0aW9uIGlzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHJlc3BvbnNlLiBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgZGVmYXVsdCBmb3IgCiAgbW9zdCBldmVyeWRheSBwcm9ncmFtbWluZy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlVzZXMgd2hlcmUgZmlsZSBzeXN0ZW0gc3lzdGVtIGVycm9ycyBhcmUgcm91dGluZSBhbmQgZG8gbm90IG5lY2Vzc2FyaWx5IHJlcHJlc2VudCAKICBmYWlsdXJlLiBSZXR1cm5pbmcgYW4gZXJyb3IgY29kZSBpcyB0aGUgbW9zdCBhcHByb3ByaWF0ZSByZXNwb25zZS4gVGhpcyBhbGxvd3MgCiAgYXBwbGljYXRpb24gc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcsIGluY2x1ZGluZyBzaW1wbHkgaWdub3JpbmcgdGhlIGVycm9yLjwvbGk+CjwvdWw+CiAgPHA+PGk+LS1lbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPkZ1bmN0aW9ucyA8Yj5ub3Q8L2I+IGhhdmluZyBhbiBhcmd1bWVudCBvZiB0eXBlCjxjb2RlPnN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7PC9jb2RlPiAKcmVwb3J0IGVycm9ycyBhcyBmb2xsb3dzLCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZDo8L3A+CiAgPHVsPgogIDxsaT5XaGVuIGEgY2FsbCBieSB0aGUgCiAgaW1wbGVtZW50YXRpb24gdG8gYW4gb3BlcmF0aW5nIHN5c3RlbSBvciBvdGhlciB1bmRlcmx5aW5nIEFQSSByZXN1bHRzIGluIGFuIAogIGVycm9yIHRoYXQgcHJldmVudHMgdGhlIGZ1bmN0aW9uIGZyb20gbWVldGluZyBpdHMgc3BlY2lmaWNhdGlvbnMsIGFuIGV4Y2VwdGlvbiAKICBvZiB0eXBlCjxjb2RlPmZpbGVzeXN0ZW1fZXJyb3I8L2NvZGU+IGlzIHRocm93bi48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkZhaWx1cmUgdG8gYWxsb2NhdGUgc3RvcmFnZSBpcyByZXBvcnRlZCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24gYXMgZGVzY3JpYmVkIGluIHRoZSBDKysgc3RhbmRhcmQsIAogIDE3LjYuNC4xMCBbcmVzLm9uLmV4Y2VwdGlvbi5oYW5kbGluZ10uPGJyPgombmJzcDs8L2xpPgogIDxsaT5EZXN0cnVjdG9ycyB0aHJvdyBub3RoaW5nLjwvbGk+CiAgPC91bD4KICA8cD5GdW5jdGlvbnMgaGF2aW5nIGFuIGFyZ3VtZW50IG9mIHR5cGUKPGNvZGU+c3lzdGVtOjplcnJvcl9jb2RlJmFtcDs8L2NvZGU+IHJlcG9ydCBlcnJvcnMgYXMgZm9sbG93cywgdW5sZXNzIG90aGVyd2lzZSAKICBzcGVjaWZpZWQ6PC9wPgo8dWw+CiAgPGxpPklmIGEgY2FsbCBieSB0aGUgCiAgaW1wbGVtZW50YXRpb24gdG8gYW4gb3BlcmF0aW5nIHN5c3RlbSBvciBvdGhlciB1bmRlcmx5aW5nIEFQSSByZXN1bHRzIGluIGFuIAogIGVycm9yIHRoYXQgcHJldmVudHMgdGhlIGZ1bmN0aW9uIGZyb20gbWVldGluZyBpdHMgc3BlY2lmaWNhdGlvbnMsIHRoZQo8Y29kZT5zeXN0ZW06OmVycm9yX2NvZGUmYW1wOzwvY29kZT4gYXJndW1lbnQgaXMgc2V0IGFzIAogIGFwcHJvcHJpYXRlIGFwcHJvcHJpYXRlIGZvciB0aGUgc3BlY2lmaWMgZXJyb3IuIE90aGVyd2lzZSwgPGNvZGU+Y2xlYXIoKTwvY29kZT4gCiAgaXMgY2FsbGVkIG9uIHRoZQo8Y29kZT5zeXN0ZW06OmVycm9yX2NvZGUmYW1wOzwvY29kZT4gYXJndW1lbnQuPGJyPgombmJzcDs8L2xpPgogIDxsaT5GYWlsdXJlIHRvIGFsbG9jYXRlIHN0b3JhZ2UgaXMgcmVwb3J0ZWQgYnkgCiAgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGFzIGRlc2NyaWJlZCBpbiB0aGUgQysrIHN0YW5kYXJkLCAKICAxNy42LjQuMTAgW3Jlcy5vbi5leGNlcHRpb24uaGFuZGxpbmddLjwvbGk+CjwvdWw+CjxoMj48YSBuYW1lPSJjbGFzcy1wYXRoIj5DbGFzcyA8Y29kZT5wYXRoPC9jb2RlPjwvYT48L2gyPgo8cD5BbiBvYmplY3Qgb2YgY2xhc3MgPGNvZGU+cGF0aDwvY29kZT4gcmVwcmVzZW50cyBhIDxhIGhyZWY9IiNQYXRoIj5wYXRoPC9hPiwgCmFuZCBjb250YWlucyBhIDxhIGhyZWY9IiNQYXRobmFtZSI+cGF0aG5hbWU8L2E+IFN1Y2ggYW4gb2JqZWN0IGlzIGNvbmNlcm5lZCBvbmx5IHdpdGggdGhlIGxleGljYWwgYW5kIHN5bnRhY3RpYyBhc3BlY3RzIApvZiBhIHBhdGguIFRoZSBwYXRoIG1heSBub3QgYWN0dWFsbHkgZXhpc3QgaW4gZXh0ZXJuYWwgc3RvcmFnZSwgYW5kIG1heSBjb250YWluIHBhdGhuYW1lcyB3aGljaCBhcmUgbm90IGV2ZW4gdmFsaWQgZm9yIHRoZSBjdXJyZW50IG9wZXJhdGluZyAKc3lzdGVtLiA8L3A+CjxwcmU+ICBuYW1lc3BhY2UgYm9vc3QKICB7CiAgICBuYW1lc3BhY2UgZmlsZXN5c3RlbQogICAgewogICAgICBjbGFzcyBwYXRoCiAgICAgIHsKICAgICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgPGI+PGk+PGEgaHJlZj0iI3ZhbHVlX3R5cGUiPnNlZSBiZWxvdzwvYT48L2k+PC9iPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7ICAvLyBjaGFyIGZvciBQT1NJWCwgd2NoYXJfdCBmb3IgV2luZG93cwogICAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmcmbHQ7dmFsdWVfdHlwZSZndDsgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGU7CiAgICAgICAgdHlwZWRlZiBzdGQ6OmNvZGVjdnQmbHQ7d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3QmZ3Q7ICBjb2RlY3Z0X3R5cGU7CgogICAgICAgIC8vIDxhIGhyZWY9IiNwYXRoLWNvbnN0cnVjdG9ycyI+Y29uc3RydWN0b3JzPC9hPiBhbmQgZGVzdHJ1Y3RvcgogICAgICAgIHBhdGgoKTsKICAgICAgICBwYXRoKGNvbnN0IHBhdGgmYW1wOyBwKTsKCiAgICAgICAgdGVtcGxhdGUgJmx0O2NsYXNzIDxhIGhyZWY9IiNTb3VyY2UiPlNvdXJjZTwvYT4mZ3Q7CiAgICAgICAgICBwYXRoKFNvdXJjZSBjb25zdCZhbXA7IHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0PWNvZGVjdnQoKSk7CgogICAgICAgIHRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjSW5wdXRJdGVyYXRvciI+SW5wdXRJdGVyYXRvcjwvYT4mZ3Q7CiAgICAgICAgICBwYXRoKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKTsKCiAgICAgICB+cGF0aCgpOwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1hc3NpZ25tZW50cyI+YXNzaWdubWVudHM8L2E+CiAgICAgICAgcGF0aCZhbXA7IG9wZXJhdG9yPShjb25zdCBwYXRoJmFtcDsgcCk7CgogICAgICAgIHRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjU291cmNlIj5Tb3VyY2U8L2E+Jmd0OwogICAgICAgICAgcGF0aCZhbXA7IG9wZXJhdG9yPShTb3VyY2UgY29uc3QmYW1wOyBzb3VyY2UpOwoKICAgICAgICB0ZW1wbGF0ZSAmbHQ7Y2xhc3MgPGEgaHJlZj0iI1NvdXJjZSI+U291cmNlPC9hPiZndDsKICAgICAgICAgIHBhdGgmYW1wOyBhc3NpZ24oU291cmNlIGNvbnN0JmFtcDsgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQpCgogICAgICAgIHRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjSW5wdXRJdGVyYXRvciI+SW5wdXRJdGVyYXRvcjwvYT4mZ3Q7CiAgICAgICAgICBwYXRoJmFtcDsgYXNzaWduKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKTsKCiAgICAgICAgLy8gPGEgaHJlZj0iI3BhdGgtYXBwZW5kcyI+YXBwZW5kczwvYT4KICAgICAgICBwYXRoJmFtcDsgb3BlcmF0b3IvPShjb25zdCBwYXRoJmFtcDsgcCk7CgogICAgICAgIHRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjU291cmNlIj5Tb3VyY2U8L2E+Jmd0OwogICAgICAgICAgcGF0aCZhbXA7IG9wZXJhdG9yLz0oU291cmNlIGNvbnN0JmFtcDsgc291cmNlKTsKCiAgICAgICAgdGVtcGxhdGUgJmx0O2NsYXNzIDxhIGhyZWY9IiNTb3VyY2UiPlNvdXJjZTwvYT4mZ3Q7CiAgICAgICAgICBwYXRoJmFtcDsgYXBwZW5kKFNvdXJjZSBjb25zdCZhbXA7IHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0KTsKCiAgICAgICAgdGVtcGxhdGUgJmx0O2NsYXNzIDxhIGhyZWY9IiNJbnB1dEl0ZXJhdG9yIj5JbnB1dEl0ZXJhdG9yPC9hPiZndDsKICAgICAgICAgIHBhdGgmYW1wOyBhcHBlbmQoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQsIGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpOwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1tb2RpZmllcnMiPm1vZGlmaWVyczwvYT4KICAgICAgICB2b2lkICA8YSBocmVmPSIjcGF0aC1jbGVhciI+Y2xlYXI8L2E+KCk7CiAgICAgICAgcGF0aCZhbXA7IDxhIGhyZWY9IiNhYnNvbHV0ZSI+bWFrZV9hYnNvbHV0ZTwvYT4oY29uc3QgcGF0aCZhbXA7IGJhc2UpOwogICAgICAgIHBhdGgmYW1wOyA8YSBocmVmPSIjcGF0aC1tYWtlX3ByZWZlcnJlZCI+bWFrZV9wcmVmZXJyZWQ8L2E+KCk7ICAvLyBQT1NJWDogbm8gZWZmZWN0LiBXaW5kb3dzOiBjb252ZXJ0IHNsYXNoZXMgdG8gYmFja3NsYXNoZXMKICAgICAgICBwYXRoJmFtcDsgPGEgaHJlZj0iI3BhdGgtcmVtb3ZlX2ZpbGVuYW1lIj5yZW1vdmVfZmlsZW5hbWU8L2E+KCk7CiAgICAgICAgcGF0aCZhbXA7IDxhIGhyZWY9IiNwYXRoLXJlcGxhY2VfZXh0ZW5zaW9uIj5yZXBsYWNlX2V4dGVuc2lvbjwvYT4oY29uc3QgcGF0aCZhbXA7IG5ld19leHRlbnNpb24gPSBwYXRoKCkpOwogICAgICAgIHZvaWQgIDxhIGhyZWY9IiNwYXRoLXN3YXAiPnN3YXA8L2E+KHBhdGgmYW1wOyByaHMpOwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1uYXRpdmUtZm9ybWF0LW9ic2VydmVycyI+bmF0aXZlIGZvcm1hdCBvYnNlcnZlcnM8L2E+CiAgICAgICAgY29uc3Qgc3RyaW5nX3R5cGUmYW1wOyAgbmF0aXZlKCkgY29uc3Q7ICAvLyBuYXRpdmUgZm9ybWF0LCBlbmNvZGluZwogICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgY19zdHIoKSBjb25zdDsgICAvLyBuYXRpdmUoKS5jX3N0cigpCgogICAgICAgIHRlbXBsYXRlICZsdDtjbGFzcyBTdHJpbmcmZ3Q7CiAgICAgICAgU3RyaW5nIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKSBjb25zdDsgICAgICAgICAgICAgICAgLy8gbmF0aXZlIGZvcm1hdAoKICAgICAgICBjb25zdCBzdHJpbmcgICAgICAgIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKSBjb25zdDsgICAvLyBuYXRpdmUgZm9ybWF0CiAgICAgICAgY29uc3Qgd3N0cmluZyAgICAgICB3c3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpIGNvbnN0OyAgLy8gZGl0dG8KICAgICAgICBjb25zdCB1MTZzdHJpbmcgICAgIHUxNnN0cmluZygpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdHRvCiAgICAgICAgY29uc3QgdTMyc3RyaW5nICAgICB1MzJzdHJpbmcoKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXR0bwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1nZW5lcmljLWZvcm1hdC1vYnNlcnZlcnMiPmdlbmVyaWMgZm9ybWF0IG9ic2VydmVyczwvYT4KICAgICAgICB0ZW1wbGF0ZSAmbHQ7Y2xhc3MgU3RyaW5nJmd0OwogICAgICAgIFN0cmluZyBnZW5lcmljX3N0cmluZygpIGNvbnN0OwoKICAgICAgICBjb25zdCBzdHJpbmcgICAgICAgIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpIGNvbnN0OyAgIC8vIGdlbmVyaWMgZm9ybWF0CiAgICAgICAgY29uc3Qgd3N0cmluZyAgICAgICBnZW5lcmljX3dzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0PWNvZGVjdnQoKSkgY29uc3Q7ICAvLyBkaXR0bwogICAgICAgIGNvbnN0IHUxNnN0cmluZyAgICAgZ2VuZXJpY191MTZzdHJpbmcoKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXR0bwogICAgICAgIGNvbnN0IHUzMnN0cmluZyAgICAgZ2VuZXJpY191MzJzdHJpbmcoKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXR0bwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1kZWNvbXBvc2l0aW9uIj5kZWNvbXBvc2l0aW9uPC9hPgogICAgICAgIHBhdGggIDxhIGhyZWY9IiNwYXRoLXJvb3RfbmFtZSI+cm9vdF9uYW1lPC9hPigpIGNvbnN0OwogICAgICAgIHBhdGggIDxhIGhyZWY9IiNwYXRoLXJvb3RfZGlyZWN0b3J5Ij5yb290X2RpcmVjdG9yeTwvYT4oKSBjb25zdDsKICAgICAgICBwYXRoICA8YSBocmVmPSIjcGF0aC1yb290X3BhdGgiPnJvb3RfcGF0aDwvYT4oKSBjb25zdDsKICAgICAgICBwYXRoICA8YSBocmVmPSIjcGF0aC1yZWxhdGl2ZV9wYXRoIj5yZWxhdGl2ZV9wYXRoPC9hPigpIGNvbnN0OwogICAgICAgIHBhdGggIDxhIGhyZWY9IiNwYXRoLXBhcmVudF9wYXRoIj5wYXJlbnRfcGF0aDwvYT4oKSBjb25zdDsKICAgICAgICBwYXRoICA8YSBocmVmPSIjcGF0aC1maWxlbmFtZSI+ZmlsZW5hbWU8L2E+KCkgY29uc3Q7CiAgICAgICAgcGF0aCAgPGEgaHJlZj0iI3BhdGgtc3RlbSI+c3RlbTwvYT4oKSBjb25zdDsKICAgICAgICBwYXRoICA8YSBocmVmPSIjcGF0aC1leHRlbnNpb24iPmV4dGVuc2lvbjwvYT4oKSBjb25zdDsKCiAgICAgICAgLy8gPGEgaHJlZj0iI3BhdGgtcXVlcnkiPnF1ZXJ5PC9hPgogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtcXVlcnkiPmVtcHR5PC9hPigpIGNvbnN0OwogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtaGFzX3Jvb3RfbmFtZSI+aGFzX3Jvb3RfbmFtZTwvYT4oKSBjb25zdDsKICAgICAgICBib29sIDxhIGhyZWY9IiNwYXRoLWhhc19yb290X2RpcmVjdG9yeSI+aGFzX3Jvb3RfZGlyZWN0b3J5PC9hPigpIGNvbnN0OwogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtaGFzX3Jvb3RfcGF0aCI+aGFzX3Jvb3RfcGF0aDwvYT4oKSBjb25zdDsKICAgICAgICBib29sIDxhIGhyZWY9IiNwYXRoLWhhc19yZWxhdGl2ZV9wYXRoIj5oYXNfcmVsYXRpdmVfcGF0aDwvYT4oKSBjb25zdDsKICAgICAgICBib29sIDxhIGhyZWY9IiNwYXRoLWhhc19wYXJlbnRfcGF0aCI+aGFzX3BhcmVudF9wYXRoPC9hPigpIGNvbnN0OwogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtaGFzX2ZpbGVuYW1lIj5oYXNfZmlsZW5hbWU8L2E+KCkgY29uc3Q7CiAgICAgICAgYm9vbCA8YSBocmVmPSIjcGF0aC1oYXNfc3RlbSI+aGFzX3N0ZW08L2E+KCkgY29uc3Q7CiAgICAgICAgYm9vbCA8YSBocmVmPSIjcGF0aC1oYXNfZXh0ZW5zaW9uIj5oYXNfZXh0ZW5zaW9uPC9hPigpIGNvbnN0OwogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtaXNfYWJzb2x1dGUiPmlzX2Fic29sdXRlPC9hPigpIGNvbnN0OwogICAgICAgIGJvb2wgPGEgaHJlZj0iI3BhdGgtaXNfcmVsYXRpdmUiPmlzX3JlbGF0aXZlPC9hPigpIGNvbnN0OwoKICAgICAgICAvLyA8YSBocmVmPSIjcGF0aC1pdGVyYXRvcnMiPml0ZXJhdG9yczwvYT4KICAgICAgICBjbGFzcyBpdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwoKICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0OwogICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogICAgICAgIAogICAgICAgIC8vIGVuY29kaW5nIGNvbnZlcnNpb24KICAgICAgICBzdGF0aWMgc3RkOjpsb2NhbGUgaW1idWUoIGNvbnN0IHN0ZDo6bG9jYWxlJmFtcDsgbG9jICk7CiAgICAgICAgc3RhdGljIGNvbnN0IGNvZGVjdnRfdHlwZSAmYW1wOyBjb2RlY3Z0KCk7CgogICAgICBwcml2YXRlOgogICAgICAgIHN0cmluZ190eXBlIHBhdGhuYW1lOyAgLy8gPGI+PGk+ZXhwb3NpdGlvbiBvbmx5PC9pPjwvYj4KICAgICAgfTsKCiAgICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgfSAvLyBuYW1lc3BhY2UgYm9vc3Q8L3ByZT4KPHA+PGNvZGU+PGEgbmFtZT0idmFsdWVfdHlwZSI+dmFsdWVfdHlwZTwvYT48L2NvZGU+IGlzIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdHlwZWRlZiBmb3IgdGhlIApjaGFyYWN0ZXIgdHlwZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgcGF0aG5hbWVzLjwvcD4KPGJsb2NrcXVvdGU+CjxwPjxpPltOb3RlOjwvaT4gRm9yIFBPU0lYLWxpa2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmc8Yj4gPC9iPlVuaXhlcywgTGludXgsIAphbmQgTWFjIE9TIFgsIDxjb2RlPnBhdGg6OnZhbHVlX3R5cGU8L2NvZGU+IAppcyA8Y29kZT5jaGFyPC9jb2RlPiAuPC9wPgo8cD5Gb3IgV2luZG93cy1saWtlIGltcGxlbWVudGF0aW9ucywgaW5jbHVkaW5nIAogIDxhIGhyZWY9Imh0dHA6Ly93d3cuY3lnd2luLmNvbS8iPkN5Z3dpbjwvYT4gYW5kCjxhIGhyZWY9Imh0dHA6Ly93d3cubWluZ3cub3JnLyI+TWluR1c8L2E+LCA8Y29kZT5wYXRoOjp2YWx1ZV90eXBlPC9jb2RlPiBpcyA8Y29kZT4Kd2NoYXJfdDwvY29kZT4uJm5ic3A7PGk+LS1lbmQgbm90ZV08L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwPkZvciBtZW1iZXIgZnVuY3Rpb25zIGRlc2NyaWJlZCBhcyByZXR1cm5pbmcgPGNvZGU+Y29uc3Qgc3RyaW5nPC9jb2RlPiwgPGNvZGU+CmNvbnN0IHdzdHJpbmc8L2NvZGU+LCA8Y29kZT5jb25zdCB1MTZzdHJpbmc8L2NvZGU+LCBvciA8Y29kZT5jb25zdCB1MzJzdHJpbmc8L2NvZGU+LCAKaW1wbGVtZW50YXRpb25zIGFyZSBwZXJtaXR0ZWQgdG8gcmV0dXJuIDxjb2RlPmNvbnN0IHN0cmluZyZhbXA7PC9jb2RlPiwgPGNvZGU+Y29uc3QgCndzdHJpbmcmYW1wOzwvY29kZT4sIDxjb2RlPmNvbnN0IHUxNnN0cmluZyZhbXA7PC9jb2RlPiwgb3IgPGNvZGU+Y29uc3QgdTMyc3RyaW5nJmFtcDs8L2NvZGU+LCAKcmVzcGVjdGl2ZWx5LjwvcD4KPGJsb2NrcXVvdGU+CjxwPls8aT5Ob3RlOjwvaT4gVGhpcyBhbGxvd3MgaW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNvcGllcyB3aGVuIG5vIApjb252ZXJzaW9uIGlzIHJlcXVpcmVkLiAKUmV0dXJuLWJ5LXZhbHVlIGlzIHNwZWNpZmllZCBhcwo8Y29kZT5jb25zdDwvY29kZT4gdG8gZW5zdXJlIHByb2dyYW1zIHdvbid0IGJyZWFrIGlmIG1vdmVkIHRvIGEgcmV0dXJuLWJ5LXJlZmVyZW5jZSAKaW1wbGVtZW50YXRpb24uIDxpPi0tIAplbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPjxjb2RlPjxhIG5hbWU9IklucHV0SXRlcmF0b3IiPklucHV0SXRlcmF0b3I8L2E+PC9jb2RlPiBpcyByZXF1aXJlZCBtZWV0IHRoZSAKcmVxdWlyZW1lbnRzIGZvciBhIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IDxjb2RlPlJhbmRvbUl0ZXJhdG9yPC9jb2RlPiAKY29tcGxpYW50IGl0ZXJhdG9yLiBUaGUgaXRlcmF0b3IncyB2YWx1ZSB0eXBlIGlzIHJlcXVpcmVkIHRvIGJlIDxjb2RlPmNoYXI8L2NvZGU+LCA8Y29kZT4KICB3Y2hhcl90PC9jb2RlPiwgPGNvZGU+Y2hhcjE2X3Q8L2NvZGU+LCBvciA8Y29kZT5jaGFyMzJfdDwvY29kZT4uPC9wPgo8cD48Y29kZT48YSBuYW1lPSJTb3VyY2UiPlNvdXJjZTwvYT48L2NvZGU+IGlzIHJlcXVpcmVkIHRvIGJlIG9uZSBvZjo8L3A+Cjx1bD4KICA8bGk+QSBjb250YWluZXIgd2l0aCBhIHZhbHVlIHR5cGUgb2YgPGNvZGU+Y2hhcjwvY29kZT4sIDxjb2RlPgogIHdjaGFyX3Q8L2NvZGU+LCA8Y29kZT5jaGFyMTZfdDwvY29kZT4sIG9yIDxjb2RlPmNoYXIzMl90PC9jb2RlPi48L2xpPgogIDxsaT5BbiBpdGVyYXRvciBmb3IgYSBudWxsIHRlcm1pbmF0ZWQgYnl0ZS1zdHJpbmcuIFRoZSB2YWx1ZSB0eXBlIGlzIHJlcXVpcmVkIAogIHRvIGJlIDxjb2RlPmNoYXI8L2NvZGU+LCA8Y29kZT53Y2hhcl90PC9jb2RlPiwgPGNvZGU+Y2hhcjE2X3Q8L2NvZGU+LCBvciA8Y29kZT4KICBjaGFyMzJfdDwvY29kZT4uPC9saT4KICA8bGk+QSBDLWFycmF5LiBUaGUgdmFsdWUgdHlwZSBpcyByZXF1aXJlZCB0byBiZSA8Y29kZT5jaGFyPC9jb2RlPiwgPGNvZGU+CiAgd2NoYXJfdDwvY29kZT4sIDxjb2RlPmNoYXIxNl90PC9jb2RlPiwgb3IgPGNvZGU+Y2hhcjMyX3Q8L2NvZGU+LjwvbGk+CiAgPGxpPkEgPGNvZGU+Ym9vc3Q6OmZpbGVzeXN0ZW06OmRpcmVjdG9yeV9lbnRyeTwvY29kZT4uPC9saT4KPC91bD4KPHA+VGhlIHNwZWNpZmljYXRpb25zIGZvciBjZXJ0YWluIDxjb2RlPnBhdGg8L2NvZGU+IGZ1bmN0aW9ucyByZXF1aXJlIHRoYXQgCmFyZ3VtZW50cyBpbiB0aGUgZ2VuZXJpYyBwYXRobmFtZSBmb3JtYXQgYmUgY29udmVydGVkIHRvIG5hdGl2ZSBwYXRobmFtZSBmb3JtYXQgCmFzIHRoZXkgYXJlIHN0b3JlZCBpbiA8Y29kZT5wYXRobmFtZTwvY29kZT4uIElmIHRoZSBuYXRpdmUgZm9ybWF0IHJlcXVpcmVzIApyZWd1bGFyIGZpbGUgcGF0aHMgYW5kIGRpcmVjdG9yeSBwYXRocyB0byBiZSBmb3JtYXR0ZWQgZGlmZmVyZW50bHksIHRoZSAKaW1wbGVtZW50YXRpb24gc2hhbGwgZGV0ZXJtaW5lIHdoaWNoIGZvcm1hdCB0byB1c2UgYWNjb3JkaW5nIHRvIHdoZXRoZXIgb3Igbm90IAp0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBnZW5lcmljIGZvcm1hdCBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuIFs8aT5FeGFtcGxlOjwvaT4gCk9uIDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlblZNUyI+T3BlblZNUzwvYT4sIGEgcGF0aCAKY29uc3RydWN0ZWQgZnJvbSA8Y29kZT4mcXVvdDsvY2F0cy9qYW5lJnF1b3Q7PC9jb2RlPiB3b3VsZCBjb25zaWRlcmVkIGEgcmVndWxhciBmaWxlIApwYXRoLCBhbmQgaGF2ZSBhIG5hdGl2ZSBmb3JtYXQgb2YgPGNvZGU+JnF1b3Q7W0NBVFNdSkFORSZxdW90OzwvY29kZT4sIHdoaWxlIGEgCnBhdGggY29uc3RydWN0ZWQgZnJvbSA8Y29kZT4mcXVvdDsvY2F0cy9qYW5lLyZxdW90OzwvY29kZT4gd291bGQgYmUgY29uc2lkZXJlZCBhIApkaXJlY3RvcnkgcGF0aCwgYW5kIGhhdmUgYSBuYXRpdmUgZm9ybWF0IG9mIDxjb2RlPiZxdW90O1tDQVRTLkpBTkVdJnF1b3Q7PC9jb2RlPi4KPGk+LS1lbmQgZXhhbXBsZTwvaT5dIFs8aT5Ob3RlPC9pPjogUE9TSVggYW5kIFdpbmRvd3MgdXNlIHRoZSBzYW1lIG5hdGl2ZSBmb3JtYXQgCmZvciByZWd1bGFyIGZpbGUgYW5kIGRpcmVjdG9yeSBwYXRobmFtZXMsIHNvIHRoaXMgcGFyYWdyYXBoIGRvZXMgbm90IGFwcGx5IHRvIAp0aGVtLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+Cgo8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgYmdjb2xvcj0iI0Q3RUVGRiIgd2lkdGg9IjkwJSI+CiAgPHRyPgogICAgPHRkIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPgogICAgQ2xhc3MgPGNvZGU+cGF0aDwvY29kZT4gZG9lcyBub3QgY3VycmVudGx5IG1hcCBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gCiAgICBmaWxlbmFtZXMgdG8gdmFsaWQgY2hhcmFjdGVycy4gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBhZGQgc29tZXRoaW5nIGxpa2UgCiAgICB0aGlzOjxibG9ja3F1b3RlPgo8cD5XaGVuIGNvbnZlcnRpbmcgZmlsZW5hbWVzIHRvIHRoZSBuYXRpdmUgb3BlcmF0aW5nIHN5c3RlbSBmb3JtYXQsIAppbXBsZW1lbnRhdGlvbnMgYXJlIGVuY291cmFnZWQsIGJ1dCBub3QgcmVxdWlyZWQsIHRvIGNvbnZlcnQgb3RoZXJ3aXNlIGludmFsaWQgCmNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyIHNlcXVlbmNlcyB0byB2YWxpZCBjaGFyYWN0ZXJzIG9yIGNoYXJhY3RlciBzZXF1ZW5jZXMuIApTdWNoIGNvbnZlcnNpb25zIGFyZSBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLjwvcD4KPGJsb2NrcXVvdGU+CjxwPls8aT5Ob3RlOjwvaT4gRmlsZW5hbWUgY29udmVyc2lvbiBhbGxvd3MgbXVjaCB3aWRlciBwb3J0YWJpbGl0eSBvZiBib3RoIApwcm9ncmFtcyBhbmQgZmlsZW5hbWVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBvc3NpYmxlLjwvcD4KPHA+SW1wbGVtZW50YXRpb25zIGFyZSBlbmNvdXJhZ2VkIHRvIGJhc2UgY29udmVyc2lvbiBvbiBleGlzdGluZyBzdGFuZGFyZHMgb3IgCnByYWN0aWNlLiBFeGFtcGxlcyBpbmNsdWRlIHRoZSBVbmlmb3JtIFJlc291cmNlIExvY2F0b3IgZXNjYXBlIHN5bnRheCBvZiBhIHBlcmNlbnQgc2lnbiAoPGNvZGU+JyUnPC9jb2RlPikgCmZvbGxvd2VkIGJ5IHR3byBoZXggZGlnaXRzIHJlcHJlc2VudGluZyB0aGUgY2hhcmFjdGVyIHZhbHVlLiBPbgo8aT5PcGVuVk1TPC9pPiwgd2hpY2ggZG9lcyBub3QgYWxsb3cgcGVyY2VudCBzaWducyBpbiBmaWxlbmFtZXMsIGEgZG9sbGFyIHNpZ24gKDxjb2RlPickJzwvY29kZT4pIApmb2xsb3dlZCBieSB0d28gaGV4IGRpZ2l0cyBpcyB0aGUgZXhpc3RpbmcgcHJhY3RpY2UsIGFzIGlzIGNvbnZlcnRpbmcgbG93ZXJjYXNlIApsZXR0ZXJzIHRvIHVwcGVyY2FzZS48aT4gLS0gZW5kIG5vdGUuPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KICAgIDwvYmxvY2txdW90ZT4KICAgIDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxoMz4gPGEgbmFtZT0icGF0aC1jb25zdHJ1Y3RvcnMiPiA8Y29kZT4KPGZvbnQgc2l6ZT0iNCI+cGF0aDwvZm9udD48L2NvZGU+IGNvbnN0cnVjdG9yczwvYT48L2gzPgo8cHJlPnBhdGgoKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UG9zdGNvbmRpdGlvbnM6PC9pPiA8Y29kZT5lbXB0eSgpPC9jb2RlPi48L3A+CiAgPC9ibG9ja3F1b3RlPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjU291cmNlIj5Tb3VyY2U8L2E+Jmd0OwogIHBhdGgoU291cmNlIGNvbnN0JmFtcDsgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKTs8L3ByZT4KPHByZT50ZW1wbGF0ZSAmbHQ7Y2xhc3MgPGEgaHJlZj0iI0lucHV0SXRlcmF0b3IiPklucHV0SXRlcmF0b3I8L2E+Jmd0OwogIHBhdGgoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQsIGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4gU3RvcmVzIHRoZSBjb250ZW50cyBbPGNvZGU+YmVnaW48L2NvZGU+LDxjb2RlPmVuZDwvY29kZT4pIAogIG9yIDxjb2RlPnNvdXJjZTwvY29kZT4gaW4gPGNvZGU+cGF0aG5hbWU8L2NvZGU+LiBJZiB0aGUgY29udGVudHMgYXJlIGluIHRoZSAKICBnZW5lcmljIGZvcm1hdCwgdGhleSBhcmUgY29udmVydGVkIHRvIHRoZSBuYXRpdmUgZm9ybWF0LiBbPGk+Tm90ZTo8L2k+IEZvciAKICBQT1NJWCBhbmQgV2luZG93cyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHRoZSBnZW5lcmljIGZvcm1hdCBpcyBhbHJlYWR5IAogIGFjY2VwdGFibGUgYXMgYSBuYXRpdmUgZm9ybWF0LCBzbyBubyBnZW5lcmljIHRvIG5hdGl2ZSBjb252ZXJzaW9uIGlzIAogIHBlcmZvcm1lZC4gPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgogIDxwPgogIDxpPlJlbWFya3M6PC9pPiBJZiB0aGUgdmFsdWUgdHlwZSBvZiZuYnNwOyBbPGNvZGU+YmVnaW48L2NvZGU+LDxjb2RlPmVuZDwvY29kZT4pIAogIG9yIDxjb2RlPnNvdXJjZTwvY29kZT4gaXMgbm90IDxjb2RlPnZhbHVlX3R5cGU8L2NvZGU+LCBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCAKICBieSA8Y29kZT5jdnQ8L2NvZGU+LjwvcD4KPC9ibG9ja3F1b3RlPgo8aDM+IDxhIG5hbWU9InBhdGgtYXNzaWdubWVudHMiPiA8Y29kZT4KPGZvbnQgc2l6ZT0iNCI+cGF0aDwvZm9udD48L2NvZGU+IGFzc2lnbm1lbnRzPC9hPjwvaDM+CjxwcmU+dGVtcGxhdGUgJmx0O2NsYXNzIDxhIGhyZWY9IiNTb3VyY2UiPlNvdXJjZTwvYT4mZ3Q7CiAgcGF0aCZhbXA7IG9wZXJhdG9yPShTb3VyY2UgY29uc3QmYW1wOyBzb3VyY2UpOzwvcHJlPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjU291cmNlIj5Tb3VyY2U8L2E+Jmd0OwogIHBhdGgmYW1wOyBhc3NpZ24oU291cmNlIGNvbnN0JmFtcDsgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQpOzwvcHJlPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyA8YSBocmVmPSIjSW5wdXRJdGVyYXRvciI+SW5wdXRJdGVyYXRvcjwvYT4mZ3Q7CiAgcGF0aCZhbXA7IGFzc2lnbihJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0PWNvZGVjdnQoKSk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6PC9pPiBTdG9yZXMgdGhlIGNvbnRlbnRzIFs8Y29kZT5iZWdpbjwvY29kZT4sPGNvZGU+ZW5kPC9jb2RlPikgCiAgb3IgPGNvZGU+c291cmNlPC9jb2RlPiBpbiA8Y29kZT5wYXRobmFtZTwvY29kZT4uIElmIHRoZSBjb250ZW50cyBhcmUgaW4gdGhlIAogIGdlbmVyaWMgZm9ybWF0LCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG5hdGl2ZSBmb3JtYXQuIFs8aT5Ob3RlOjwvaT4gRm9yIAogIFBPU0lYIGFuZCBXaW5kb3dzIGJhc2VkIGltcGxlbWVudGF0aW9ucywgdGhlIGdlbmVyaWMgZm9ybWF0IGlzIGFscmVhZHkgCiAgYWNjZXB0YWJsZSBhcyBhIG5hdGl2ZSBmb3JtYXQsIHNvIG5vIGdlbmVyaWMgdG8gbmF0aXZlIGNvbnZlcnNpb24gaXMgCiAgcGVyZm9ybWVkLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CiAgPHA+CiAgPGk+UmV0dXJuczogPC9pPjxjb2RlPip0aGlzPC9jb2RlPjwvcD4KICA8cD4KICA8aT5SZW1hcmtzOjwvaT4gSWYgdGhlIHZhbHVlIHR5cGUgb2YmbmJzcDsgWzxjb2RlPmJlZ2luPC9jb2RlPiw8Y29kZT5lbmQ8L2NvZGU+KSAKICBvciA8Y29kZT5zb3VyY2U8L2NvZGU+IGlzIG5vdCA8Y29kZT52YWx1ZV90eXBlPC9jb2RlPiwgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQgCiAgYnkgPGNvZGU+Y3Z0PC9jb2RlPi48L3A+CiAgPC9ibG9ja3F1b3RlPgo8aDM+IDxhIG5hbWU9InBhdGgtYXBwZW5kcyI+PGNvZGU+PGZvbnQgc2l6ZT0iNCI+IHBhdGg8L2ZvbnQ+PC9jb2RlPiBhcHBlbmRzPC9hPjwvaDM+CiAgPHA+VGhlIGFwcGVuZCBvcGVyYXRpb25zIHVzZSA8Y29kZT5vcGVyYXRvci89PC9jb2RlPiB0byBkZW5vdGUgdGhlaXIgc2VtYW50aWMgCiAgZWZmZWN0IG9mIGFwcGVuZGluZyB0aGUgcGxhdGZvcm0ncyBwcmVmZXJyZWQgZGlyZWN0b3J5IHNlcGFyYXRvciB3aGVuIG5lZWRlZC4gVGhlIAogIHByZWZlcnJlZCAKICBkaXJlY3Rvcnkgc2VwYXJhdG9yIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuPC9wPgo8YmxvY2txdW90ZT4KICAgIDxwIGFsaWduPSJsZWZ0Ij5bPGk+Tm90ZTogPC9pPkZvciBQT1NJWC1saWtlIGltcGxlbWVudGF0aW9ucywgaW5jbHVkaW5nPGI+IDwvYj4KICAgIFVuaXggdmFyaWFudHMsIExpbnV4LCBhbmQgTWFjIE9TIFgsIHRoZSBwcmVmZXJyZWQgZGlyZWN0b3J5IHNlcGFyYXRvciBpcyBhIAogICAgc2luZ2xlIGZvcndhcmQgc2xhc2guPC9wPgogICAgPHAgYWxpZ249ImxlZnQiPkZvciBXaW5kb3dzLWxpa2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgCiAgPGEgaHJlZj0iaHR0cDovL3d3dy5jeWd3aW4uY29tLyI+Q3lnd2luPC9hPiBhbmQKICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubWluZ3cub3JnLyI+TWluR1c8L2E+LCB0aGUgcHJlZmVycmVkIGRpcmVjdG9yeSAKICAgIHNlcGFyYXRvciBpcyBhIHNpbmdsZSBiYWNrc2xhc2guPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgogICAgICA8L2Jsb2NrcXVvdGU+CjxwcmU+cGF0aCZhbXA7IG9wZXJhdG9yLz0oY29uc3QgcGF0aCZhbXA7IHApOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT48L3A+CiAgPGJsb2NrcXVvdGU+CiAgICBBcHBlbmRzIHRoZSBwcmVmZXJyZWQgZGlyZWN0b3J5IHNlcGFyYXRvciB0byB0aGUgY29udGFpbmVkIHBhdGhuYW1lLCB1bmxlc3M6PHVsPgogICAgPGxpPmFuIGFkZGVkIHNlcGFyYXRvciAKICAgIHdvdWxkIGJlIHJlZHVuZGFudCwgb3I8L2xpPgogICAgPGxpPndvdWxkIGNoYW5nZSBhbiByZWxhdGl2ZSBwYXRoIHRvIGFuIGFic29sdXRlIHBhdGgsIG9yPC9saT4KICAgIDxsaT48Y29kZT5wLmVtcHR5KCk8L2NvZGU+LCBvcjwvbGk+CiAgICA8bGk+PGNvZGU+KnAubmF0aXZlKCkuY2JlZ2luKCk8L2NvZGU+IGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvci48L2xpPgogIDwvdWw+CiAgICA8cD5BcHBlbmRzIDxjb2RlPnAubmF0aXZlKCk8L2NvZGU+IHRvIDxjb2RlPnBhdGhuYW1lPC9jb2RlPi48L3A+CiAgPC9ibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6IDwvaT48Y29kZT4qdGhpczwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KPHByZT50ZW1wbGF0ZSAmbHQ7Y2xhc3MgPGEgaHJlZj0iI1NvdXJjZSI+U291cmNlPC9hPiZndDsKICBwYXRoJmFtcDsgb3BlcmF0b3IvPShTb3VyY2UgY29uc3QgJmFtcDsgc291cmNlKTs8L3ByZT4KPHByZT50ZW1wbGF0ZSAmbHQ7Y2xhc3MgPGEgaHJlZj0iI1NvdXJjZSI+U291cmNlPC9hPiZndDsKICBwYXRoJmFtcDsgYXBwZW5kKFNvdXJjZSBjb25zdCAmYW1wOyBzb3VyY2UsIGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dCk7PC9wcmU+CjxwcmU+dGVtcGxhdGUgJmx0O2NsYXNzIDxhIGhyZWY9IiNJbnB1dEl0ZXJhdG9yIj5JbnB1dEl0ZXJhdG9yPC9hPiZndDsKICBwYXRoJmFtcDsgYXBwZW5kKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czo8L2k+PC9wPgogIDxibG9ja3F1b3RlPgogICAgPHA+QXBwZW5kcyBhIG5hdGl2ZSBkaXJlY3Rvcnkgc2VwYXJhdG9yIHRvIHRoZSBjb250YWluZWQgcGF0aG5hbWUsIHVubGVzczo8L3A+CiAgICA8dWw+CiAgICA8bGk+YW4gYWRkZWQgc2VwYXJhdG9yIAogICAgd291bGQgYmUgcmVkdW5kYW50LCBvcjwvbGk+CiAgICA8bGk+d291bGQgY2hhbmdlIGFuIHJlbGF0aXZlIHBhdGggdG8gYW4gYWJzb3V0ZSBwYXRoLCBvcjwvbGk+CiAgICA8bGk+PGNvZGU+cC5lbXB0eSgpPC9jb2RlPiwgb3I8L2xpPgogICAgPGxpPjxjb2RlPipwLm5hdGl2ZSgpLmNiZWdpbigpPC9jb2RlPiBpcyBhIHNlcGFyYXRvci48L2xpPgogIDwvdWw+CiAgICA8cD5BcHBlbmRzIHRoZSBjb250ZW50cyBbPGNvZGU+YmVnaW48L2NvZGU+LDxjb2RlPmVuZDwvY29kZT4pIAogIG9yIDxjb2RlPnNvdXJjZTwvY29kZT4gdG8gPGNvZGU+cGF0aG5hbWU8L2NvZGU+LiBJZiB0aGUgY29udGVudHMgYXJlIGluIHRoZSAKICAgIGdlbmVyaWMgZm9ybWF0LCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG5hdGl2ZSBmb3JtYXQuIFs8aT5Ob3RlOjwvaT4gRm9yIAogICAgUE9TSVggYW5kIFdpbmRvd3MgYmFzZWQgaW1wbGVtZW50YXRpb25zLCB0aGUgZ2VuZXJpYyBmb3JtYXQgaXMgYWxyZWFkeSAKICAgIGFjY2VwdGFibGUgYXMgYSBuYXRpdmUgZm9ybWF0LCBzbyBubyBnZW5lcmljIHRvIG5hdGl2ZSBjb252ZXJzaW9uIGlzIAogICAgcGVyZm9ybWVkLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CiAgPC9ibG9ja3F1b3RlPgogIDxwPjxpPlJlbWFya3M6PC9pPiBJZiB0aGUgdmFsdWUgdHlwZSBvZiZuYnNwOyBbPGNvZGU+YmVnaW48L2NvZGU+LDxjb2RlPmVuZDwvY29kZT4pIAogIG9yIDxjb2RlPnNvdXJjZTwvY29kZT4gaXMgbm90IDxjb2RlPnZhbHVlX3R5cGU8L2NvZGU+LCBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCAKICBieSA8Y29kZT5jdnQ8L2NvZGU+LjwvcD4KICA8cD48aT5SZXR1cm5zOiA8L2k+PGNvZGU+KnRoaXM8L2NvZGU+PC9wPgogIDwvYmxvY2txdW90ZT4KICAKPGgzPiA8YSBuYW1lPSJwYXRoLW1vZGlmaWVycyI+IDxjb2RlPgo8Zm9udCBzaXplPSI0Ij5wYXRoPC9mb250PjwvY29kZT4gbW9kaWZpZXJzPC9hPjwvaDM+CjxwcmU+dm9pZCA8YSBuYW1lPSJwYXRoLWNsZWFyIj5jbGVhcjwvYT4oKTs8L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxpPlBvc3Rjb25kaXRpb246PC9pPiA8Y29kZT50aGlzLSZndDtlbXB0eSgpPC9jb2RlPiBpcyB0cnVlLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnBhdGgmYW1wOyA8YSBuYW1lPSJwYXRoLW1ha2VfcHJlZmVycmVkIj5tYWtlX3ByZWZlcnJlZDwvYT4oKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czo8L2k+IFRoZSBjb250YWluZWQgcGF0aG5hbWUgaXMgY29udmVydGVkIHRvIHRoZSBwcmVmZXJyZWQgbmF0aXZlIAogIGZvcm1hdC4gWzxpPk5vdGU6PC9pPiBPbiBXaW5kb3dzLCB0aGUgZWZmZWN0IGlzIHRvIHJlcGxhY2Ugc2xhc2hlcyB3aXRoIAogIGJhY2tzbGFzaGVzLiBPbiBQT1NJWCwgdGhlcmUgaXMgbm8gZWZmZWN0LiA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4qdGhpczwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KCjxwcmU+cGF0aCZhbXA7IDxhIG5hbWU9InBhdGgtcmVtb3ZlX2ZpbGVuYW1lIj5yZW1vdmVfZmlsZW5hbWU8L2E+KCk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6IDwvaT5BcyBpZiwgPGNvZGU+KnRoaXMgPSBwYXJlbnRfcGF0aCgpOzwvY29kZT48L3A+CiAgPHA+WzxpPk5vdGU6PC9pPiBUaGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCB0byBlZmZpY2llbnRseSBpbXBsZW1lbnQgPGNvZGU+CiAgZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPi4gSXQgaXMgZXhwb3NlZCB0byBhbGxvdyBhZGRpdGlvbmFsIHVzZXMuIFRoZSBhY3R1YWwgCiAgaW1wbGVtZW50YXRpb24gbWF5IGJlIG11Y2ggbW9yZSBlZmZpY2llbnQgdGhhbiA8Y29kZT4qdGhpcyA9IHBhcmVudF9wYXRoKCk8L2NvZGU+Jm5ic3A7IDxpPi0tIGVuZCAKICBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoJmFtcDsgPGEgbmFtZT0icGF0aC1yZXBsYWNlX2V4dGVuc2lvbiI+cmVwbGFjZV9leHRlbnNpb248L2E+KGNvbnN0IHBhdGgmYW1wOyBuZXdfZXh0ZW5zaW9uID0gcGF0aCgpKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UG9zdGNvbmRpdGlvbjogPC9pPiA8Y29kZT5leHRlbnNpb24oKSA9PSA8aT5yZXBsYWNlbWVudDwvaT48L2NvZGU+LCAKICB3aGVyZSA8Y29kZT48aT5yZXBsYWNlbWVudDwvaT48L2NvZGU+IGlzIDxjb2RlPm5ld19leHRlbnNpb248L2NvZGU+IGlmIDxjb2RlPgogIG5ld19leHRlbnNpb24uZW1wdHkoKSB8fCBuZXdfZXh0ZW5zaW9uWzBdID09PC9jb2RlPiB0aGUgZG90IGNoYXJhY3RlciwgCiAgb3RoZXJ3aXNlIDxjb2RlPjxpPnJlcGxhY2VtZW50PC9pPjwvY29kZT4gaXMgdGhlIGRvdCBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKICA8Y29kZT5uZXdfZXh0ZW5zaW9uPC9jb2RlPi48L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPip0aGlzPC9jb2RlPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxjb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj52b2lkIDxhIG5hbWU9InBhdGgtc3dhcCI+c3dhcDwvYT4ocGF0aCZhbXA7IHJocyk7PC9zcGFuPjwvY29kZT48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IAogIFN3YXBzIHRoZSBjb250ZW50cyBvZiB0aGUgdHdvIHBhdGhzLjwvc3Bhbj48L3A+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlRocm93czogPC9zcGFuPjwvaT4KICA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+bm90aGluZy48L3NwYW4+PC9wPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5Db21wbGV4aXR5OiA8L3NwYW4+PC9pPgogIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5jb25zdGFudCB0aW1lLjwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KCjxoMz4gPGEgbmFtZT0icGF0aC1uYXRpdmUtZm9ybWF0LW9ic2VydmVycyI+PGNvZGU+PGZvbnQgc2l6ZT0iNCI+cGF0aDwvZm9udD48L2NvZGU+IApuYXRpdmUgZm9ybWF0IG9ic2VydmVyczwvYT48L2gzPgo8cD5UaGUgc3RyaW5nIHJldHVybmVkIGJ5IGFsbCBuYXRpdmUgZm9ybWF0IG9ic2VydmVycyBpcyBpbiB0aGUKPGEgaHJlZj0iI25hdGl2ZS1wYXRobmFtZS1mb3JtYXQiPm5hdGl2ZSBwYXRobmFtZSBmb3JtYXQ8L2E+LjwvcD4KPHByZT5jb25zdCBzdHJpbmdfdHlwZSZhbXA7ICBuYXRpdmUoKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5wYXRobmFtZTwvY29kZT4uPC9wPgo8cD48aT5UaHJvd3M6PC9pPiBub3RoaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmNvbnN0IHZhbHVlX3R5cGUqIGNfc3RyKCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgo8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+cGF0aG5hbWUuY19zdHIoKTwvY29kZT4uPC9wPgo8cD48aT5UaHJvd3M6PC9pPiBub3RoaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyBTdHJpbmcmZ3Q7ClN0cmluZyBzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0PWNvZGVjdnQoKSkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5wYXRobmFtZTwvY29kZT4uPC9wPgo8cD48aT5SZW1hcmtzOjwvaT4gSWYgPGNvZGU+c3RyaW5nX3R5cGU8L2NvZGU+IGlzIGEgZGlmZmVyZW50IHR5cGUgdGhhbiA8Y29kZT4KU3RyaW5nPC9jb2RlPiwgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQgYnkgPGNvZGU+Y3Z0PC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5jb25zdCBzdHJpbmcgc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpIGNvbnN0Owpjb25zdCB3c3RyaW5nIHdzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJmFtcDsgY3Z0PWNvZGVjdnQoKSkgY29uc3Q7CmNvbnN0IHUxNnN0cmluZyB1MTZzdHJpbmcoKSBjb25zdDsKY29uc3QgdTMyd3N0cmluZyB1MzJ3c3RyaW5nKCkgY29uc3Q7IDwvcHJlPgo8YmxvY2txdW90ZT4KPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnBhdGhuYW1lPC9jb2RlPi48L3A+CjxwPjxpPlJlbWFya3M6PC9pPiBJZiA8Y29kZT5zdHJpbmdfdHlwZTwvY29kZT4gaXMgYSBkaWZmZXJlbnQgdHlwZSB0aGFuIApmdW5jdGlvbidzIHJldHVybiB0eXBlLCBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCBieSA8Y29kZT5jdnQ8L2NvZGU+LjwvcD4KPHA+SWYgPGNvZGU+c3RyaW5nX3R5cGU8L2NvZGU+IGlzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIApmdW5jdGlvbidzIHJldHVybiB0eXBlLCB0aGUgZnVuY3Rpb24gaXMgcGVybWl0dGVkIHRvIHJldHVybiBieSA8Y29kZT5jb25zdCZhbXA7PC9jb2RlPiAKcmF0aGVyIHRoYW4gPGNvZGU+Y29uc3Q8L2NvZGU+IHZhbHVlLiBbPGk+Tm90ZTo8L2k+IEZvciBQT1NJWCwgdGhpcyBvY2N1cnMgZm9yCjxjb2RlPnN0cmluZygpPC9jb2RlPiwgZm9yIFdpbmRvd3MsIDxjb2RlPndzdHJpbmcoKTwvY29kZT4uIDxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgoKPGgzPiA8YSBuYW1lPSJwYXRoLWdlbmVyaWMtZm9ybWF0LW9ic2VydmVycyI+PGNvZGU+PGZvbnQgc2l6ZT0iNCI+cGF0aDwvZm9udD48L2NvZGU+CmdlbmVyaWMgZm9ybWF0IG9ic2VydmVyczwvYT48L2gzPgo8cD5UaGUgc3RyaW5nIHJldHVybmVkIGJ5IGFsbCBnZW5lcmljIGZvcm1hdCBvYnNlcnZlcnMgaXMgaW4gdGhlCjxhIGhyZWY9IiNnZW5lcmljLXBhdGhuYW1lLWZvcm1hdCI+Z2VuZXJpYyBwYXRobmFtZSBmb3JtYXQ8L2E+LjwvcD4KPHA+WzxpPk5vdGU6PC9pPiBGb3IgUE9TSVgsIG5vIGNvbnZlcnNpb24gb2NjdXJzLCBzaW5jZSB0aGUgbmF0aXZlIGZvcm1hdCBhbmQgCmdlbmVyaWMgZm9ybWF0IGFyZSB0aGUgc2FtZS4gRm9yIFdpbmRvd3MsIGJhY2tzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gc2xhc2hlcwo8aT4tLWVuZCBub3RlPC9pPl08L3A+CjxwcmU+dGVtcGxhdGUgJmx0O2NsYXNzIFN0cmluZyZndDsKU3RyaW5nIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+cGF0aG5hbWU8L2NvZGU+LjwvcD4KPHA+PGk+UmVtYXJrczo8L2k+IElmIDxjb2RlPnN0cmluZ190eXBlPC9jb2RlPiBpcyBhIGRpZmZlcmVudCB0eXBlIHRoYW4gPGNvZGU+ClN0cmluZzwvY29kZT4sIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIGJ5Cjxjb2RlPmN2dDwvY29kZT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Y29uc3Qgc3RyaW5nIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSZhbXA7IGN2dD1jb2RlY3Z0KCkpIGNvbnN0Owpjb25zdCB3c3RyaW5nIGdlbmVyaWNfd3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmYW1wOyBjdnQ9Y29kZWN2dCgpKSBjb25zdDsKY29uc3QgdTE2c3RyaW5nIGdlbmVyaWNfdTE2c3RyaW5nKCkgY29uc3Q7CmNvbnN0IHUzMndzdHJpbmcgZ2VuZXJpY191MzJ3c3RyaW5nKCkgY29uc3Q7IDwvcHJlPgo8YmxvY2txdW90ZT4KPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnBhdGhuYW1lPC9jb2RlPi48L3A+CjxwPjxpPlJlbWFya3M6PC9pPiZuYnNwOyBJZiA8Y29kZT5zdHJpbmdfdHlwZTwvY29kZT4gaXMgYSBkaWZmZXJlbnQgdHlwZSB0aGFuIApmdW5jdGlvbidzIHJldHVybiB0eXBlLCBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCBieSA8Y29kZT5jdnQ8L2NvZGU+LjwvcD4KPHA+SWYgPGNvZGU+c3RyaW5nX3R5cGU8L2NvZGU+IGlzIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIApmdW5jdGlvbidzIHJldHVybiB0eXBlLCBhbmQgdGhlIGdlbmVyaWMgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIHRoZSBuYXRpdmUgZm9ybWF0LCAKdGhlIGZ1bmN0aW9uIGlzIHBlcm1pdHRlZCB0byByZXR1cm4gYnkgPGNvZGU+Y29uc3QmYW1wOzwvY29kZT4gcmF0aGVyIHRoYW4gPGNvZGU+CmNvbnN0PC9jb2RlPiB2YWx1ZS4gWzxpPk5vdGU6PC9pPiBGb3IgUE9TSVgsIHRoaXMgb2NjdXJzIGZvciA8Y29kZT5zdHJpbmcoKTwvY29kZT4uIApJdCBuZXZlciBvY2N1cnMgZm9yIFdpbmRvd3MsIGJlY2F1c2UgYmFja3NsYXNoZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gc2xhc2hlcy4KPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+Cgo8aDM+IDxhIG5hbWU9InBhdGgtZGVjb21wb3NpdGlvbiI+IDxjb2RlPjxmb250IHNpemU9IjQiPnBhdGg8L2ZvbnQ+PC9jb2RlPiAKZGVjb21wb3NpdGlvbjwvYT48L2gzPgo8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0UwRTBFMCI+PGk+U2VlIHRoZQo8YSBocmVmPSIjUGF0aC1kZWNvbXBvc2l0aW9uLXRhYmxlIj5QYXRoIGRlY29tcG9zaXRpb24gdGFibGU8L2E+IGZvciBleGFtcGxlcyAKZm9yIHZhbHVlcyByZXR1cm5lZCBieSBkZWNvbXBvc2l0aW9uIGZ1bmN0aW9ucy4gVGhlCjxhIGhyZWY9InR1dG9yaWFsLmh0bWwjVXNpbmctcGF0aC1kZWNvbXBvc2l0aW9uIj5UdXRvcmlhbDwvYT4gbWF5IGFsc28gYmUgCmhlbHBmdWwuPC9pPjwvc3Bhbj48L3A+CjxwcmU+cGF0aCA8YSBuYW1lPSJwYXRoLXJvb3RfbmFtZSI+cm9vdF9uYW1lPC9hPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KPHA+PGk+UmV0dXJuczo8L2k+IDxpPnJvb3QtbmFtZSw8L2k+IGlmIDxjb2RlPnBhdGhuYW1lPC9jb2RlPiBpbmNsdWRlcyA8aT4Kcm9vdC1uYW1lPC9pPiwgb3RoZXJ3aXNlIDxjb2RlPnBhdGgoKTwvY29kZT4uIDwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnBhdGggPGEgbmFtZT0icGF0aC1yb290X2RpcmVjdG9yeSI+cm9vdF9kaXJlY3Rvcnk8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgo8cD48aT5SZXR1cm5zOjwvaT4gPGk+cm9vdC1kaXJlY3Rvcnk8L2k+LCBpZiA8Y29kZT5wYXRobmFtZTwvY29kZT4gaW5jbHVkZXMgPGk+CnJvb3QtZGlyZWN0b3J5PC9pPiwgb3RoZXJ3aXNlIDxjb2RlPnBhdGgoKTwvY29kZT4uPC9wPgo8cD5JZiA8aT5yb290LWRpcmVjdG9yeTwvaT4gaXMgY29tcG9zZWQgb2YgPGk+c2xhc2ggbmFtZTwvaT4sIDxpPnNsYXNoPC9pPiBpcyAKZXhjbHVkZWQgZnJvbSB0aGUgcmV0dXJuZWQgc3RyaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnBhdGggPGEgbmFtZT0icGF0aC1yb290X3BhdGgiPnJvb3RfcGF0aDwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnJvb3RfbmFtZSgpIC8gcm9vdF9kaXJlY3RvcnkoKTwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIDxhIG5hbWU9InBhdGgtcmVsYXRpdmVfcGF0aCI+cmVsYXRpdmVfcGF0aDwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxpPlJldHVybnM6PC9pPiBBIDxjb2RlPnBhdGg8L2NvZGU+IGNvbXBvc2VkIGZyb20gPGNvZGU+cGF0aG5hbWU8L2NvZGU+LCBpZiA8Y29kZT4KIWVtcHR5KCk8L2NvZGU+LCBiZWdpbm5pbmcgCndpdGggdGhlIGZpcnN0IDxpPmZpbGVuYW1lPC9pPiBhZnRlciA8aT5yb290LXBhdGg8L2k+LiBPdGhlcndpc2UsIDxjb2RlPnBhdGgoKTwvY29kZT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+cGF0aCA8YSBuYW1lPSJwYXRoLXBhcmVudF9wYXRoIj5wYXJlbnRfcGF0aDwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPihlbXB0eSgpIHx8IGJlZ2luKCkgPT0gLS1lbmQoKSkgPyBwYXRoKCkgOiA8aT5wcDwvaT48L2NvZGU+LCB3aGVyZQogIDxjb2RlPjxpPnBwPC9pPjwvY29kZT4gaXMgY29uc3RydWN0ZWQgYXMgaWYgYnkgCiAgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSA8Y29kZT5wYXRoPC9jb2RlPiBhbmQgc3VjY2Vzc2l2ZWx5IGFwcGx5aW5nIDxjb2RlPgogIG9wZXJhdG9yLz08L2NvZGU+IGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIHJhbmdlIDxjb2RlPmJlZ2luKCk8L2NvZGU+LCA8Y29kZT4KICAtLWVuZCgpPC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIDxhIG5hbWU9InBhdGgtZmlsZW5hbWUiPmZpbGVuYW1lPC9hPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+ZW1wdHkoKSA/IHBhdGgoKSA6ICotLWVuZCgpPC9jb2RlPjwvcD4KICA8cD5bPGk+RXhhbXBsZTo8L2k+PC9wPgogIDxibG9ja3F1b3RlPgogICAgPHByZT48Y29kZT5zdGQ6OmNvdXQgJmx0OyZsdDsgcGF0aCgmcXVvdDsvZm9vL2Jhci50eHQmcXVvdDspLmZpbGVuYW1lKCk7PC9jb2RlPiAvLyBvdXRwdXRzICZxdW90Ozxjb2RlPmJhci50eHQ8L2NvZGU+JnF1b3Q7ICh3aXRob3V0IHRoZSBxdW90ZXMpPC9wcmU+CiAgPC9ibG9ja3F1b3RlPgogIDxwPiA8aT4tLWVuZCBleGFtcGxlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIDxhIG5hbWU9InBhdGgtc3RlbSI+c3RlbTwvYT4oY29uc3QgcGF0aCZhbXA7IHApIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gaWYgPGNvZGU+cC5maWxlbmFtZSgpPC9jb2RlPmNvbnRhaW5zIGEgZG90IGJ1dCBkb2VzIG5vdCAKICBjb25zaXN0IHNvbGVseSBvZiBvbmUgb3IgdG8gdHdvIGRvdHMsIHJldHVybnMgCiAgdGhlIHN1YnN0cmluZyBvZiA8Y29kZT5wLmZpbGVuYW1lKCk8L2NvZGU+IHN0YXJ0aW5nIGF0IGl0cyBiZWdpbm5pbmcgYW5kIAogIGVuZGluZyBhdCB0aGUgbGFzdCBkb3QgKHRoZSBkb3QgaXMgbm90IGluY2x1ZGVkKS4gT3RoZXJ3aXNlLCAKICByZXR1cm5zIDxjb2RlPgogIHAuZmlsZW5hbWUoKTwvY29kZT4uPC9wPgogIDxwPls8aT5FeGFtcGxlOjwvaT48L3A+CiAgPGJsb2NrcXVvdGU+CiAgICA8cHJlPjxjb2RlPnN0ZDo6Y291dCAmbHQ7Jmx0OyBwYXRoKCZxdW90Oy9mb28vYmFyLnR4dCZxdW90Oykuc3RlbSgpOzwvY29kZT4gLy8gb3V0cHV0cyAmcXVvdDs8Y29kZT5iYXI8L2NvZGU+JnF1b3Q7ICh3aXRob3V0IHRoZSBxdW90ZXMpPC9wcmU+CiAgICA8cHJlPnBhdGggcCA9ICZxdW90O2Zvby5iYXIuYmF6LnRhciZxdW90OzsKZm9yICg7ICFwLmV4dGVuc2lvbigpLmVtcHR5KCk7IHAgPSBwLnN0ZW0oKSkKICBzdGQ6OmNvdXQgJmx0OyZsdDsgcC5leHRlbnNpb24oKSAmbHQ7Jmx0OyAnXG4nOwogIC8vIG91dHB1dHM6IC50YXIKICAvLyAgICAgICAgICAuYmF6CiAgLy8gICAgICAgICAgLmJhcjwvcHJlPgogIDwvYmxvY2txdW90ZT4KICA8cD4gPGk+LS1lbmQgZXhhbXBsZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+cGF0aCA8YSBuYW1lPSJwYXRoLWV4dGVuc2lvbiI+ZXh0ZW5zaW9uPC9hPihjb25zdCBwYXRoJmFtcDsgcCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiBpZiA8Y29kZT5wLmZpbGVuYW1lKCk8L2NvZGU+IGNvbnRhaW5zIGEgZG90IGJ1dCBkb2VzIG5vdCAKICBjb25zaXN0IHNvbGVseSBvZiBvbmUgb3IgdG8gdHdvIGRvdHMsIHJldHVybnMgCiAgdGhlIHN1YnN0cmluZyBvZiA8Y29kZT5wLmZpbGVuYW1lKCk8L2NvZGU+IHN0YXJ0aW5nIGF0IHRoZSByaWdodG1vc3QgZG90IAogIGFuZCBlbmRpbmcgYXQgdGhlIHBhdGgncyBlbmQuIE90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSA8Y29kZT5wYXRoPC9jb2RlPiAKICBvYmplY3QuIDwvcD4KICA8cD48aT5SZW1hcmtzOjwvaT4gSW1wbGVtZW50YXRpb25zIGFyZSBwZXJtaXR0ZWQgYnV0IG5vdCByZXF1aXJlZCB0byBkZWZpbmUgYWRkaXRpb25hbCAKICBiZWhhdmlvciBmb3IgZmlsZSBzeXN0ZW1zIHdoaWNoIGFwcGVuZCBhZGRpdGlvbmFsIGVsZW1lbnRzIHRvIGV4dGVuc2lvbnMsIHN1Y2ggCiAgYXMgYWx0ZXJuYXRlIGRhdGEgc3RyZWFtcyBvciBwYXJ0aXRpb25lZCBkYXRhc2V0IG5hbWVzLjwvcD4KICA8cD5bPGk+RXhhbXBsZTo8L2k+PC9wPgogIDxibG9ja3F1b3RlPgogICAgPHByZT48Y29kZT5zdGQ6OmNvdXQgJmx0OyZsdDsgcGF0aCgmcXVvdDsvZm9vL2Jhci50eHQmcXVvdDspLmV4dGVuc2lvbigpOyAvLzwvY29kZT4gb3V0cHV0cyAmcXVvdDs8Y29kZT4udHh0PC9jb2RlPiZxdW90OyAod2l0aG91dCB0aGUgcXVvdGVzKTwvcHJlPgogIDwvYmxvY2txdW90ZT4KICA8cD4gPGk+LS1lbmQgZXhhbXBsZTwvaT5dPC9wPgogIDxwPls8aT5Ob3RlOjxiPiA8L2I+PC9pPlRoZSBkb3QgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybiB2YWx1ZSBzbyB0aGF0IAogIGl0IGlzIHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbm8gZXh0ZW5zaW9uIGFuZCBhbiBlbXB0eSBleHRlbnNpb24uIFNlZQogIDxhIGhyZWY9Imh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzE5OTc0NCI+CiAgaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTk5NzQ0PC9hPiBmb3IgbW9yZSAKICBleHRlbnNpdmUgcmF0aW9uYWxlLiZuYnNwOyA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz4gPGEgbmFtZT0icGF0aC1xdWVyeSI+IDxjb2RlPjxmb250IHNpemU9IjQiPnBhdGg8L2ZvbnQ+PC9jb2RlPiBxdWVyeTwvYT48L2gzPgo8cHJlPmJvb2wgPGEgbmFtZT0icGF0aC1lbXB0eSI+ZW1wdHk8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5tX3BhdGhuYW1lLmVtcHR5KCk8L2NvZGU+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgPGEgbmFtZT0icGF0aC1oYXNfcm9vdF9wYXRoIj5oYXNfcm9vdF9wYXRoPC9hPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+ITxhIGhyZWY9IiNwYXRoLXJvb3RfcGF0aCI+cm9vdF9wYXRoPC9hPigpLmVtcHR5KCk8L2NvZGU+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJwYXRoLWhhc19yb290X25hbWUiPmhhc19yb290X25hbWU8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4hPGEgaHJlZj0iI3BhdGgtcm9vdF9uYW1lIj5yb290X25hbWU8L2E+KCkuZW1wdHkoKTwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxhIG5hbWU9InBhdGgtaGFzX3Jvb3RfZGlyZWN0b3J5Ij5oYXNfcm9vdF9kaXJlY3Rvcnk8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4hPGEgaHJlZj0iI3BhdGgtcm9vdF9kaXJlY3RvcnkiPnJvb3RfZGlyZWN0b3J5PC9hPigpLmVtcHR5KCk8L2NvZGU+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJwYXRoLWhhc19yZWxhdGl2ZV9wYXRoIj5oYXNfcmVsYXRpdmVfcGF0aDwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPiE8YSBocmVmPSIjcGF0aC1oYXNfcmVsYXRpdmVfcGF0aCI+cmVsYXRpdmVfcGF0aDwvYT4oKS5lbXB0eSgpPC9jb2RlPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgPGEgbmFtZT0icGF0aC1oYXNfcGFyZW50X3BhdGgiPmhhc19wYXJlbnRfcGF0aDwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPiE8YSBocmVmPSIjcGF0aC1wYXJlbnRfcGF0aCI+cGFyZW50X3BhdGg8L2E+KCkuZW1wdHkoKTwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxhIG5hbWU9InBhdGgtaGFzX2ZpbGVuYW1lIj5oYXNfZmlsZW5hbWU8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4hPGEgaHJlZj0iI3BhdGgtZmlsZW5hbWUiPmZpbGVuYW1lPC9hPigpLmVtcHR5KCk8L2NvZGU+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJwYXRoLWhhc19zdGVtIj5oYXNfc3RlbTwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPiE8YSBocmVmPSIjcGF0aC1zdGVtIj5zdGVtPC9hPigpLmVtcHR5KCk8L2NvZGU+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJwYXRoLWhhc19leHRlbnNpb24iPmhhc19leHRlbnNpb248L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4hPGEgaHJlZj0iI3BhdGgtaGFzX2V4dGVuc2lvbiI+ZXh0ZW5zaW9uPC9hPigpLmVtcHR5KCk8L2NvZGU+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJwYXRoLWlzX2Fic29sdXRlIj5pc19hYnNvbHV0ZTwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPjxpPlJldHVybnM6PC9pPiA8Y29kZT50cnVlPC9jb2RlPiAKICBpZiB0aGUgZWxlbWVudHMgb2YgPGNvZGU+cm9vdF9wYXRoKCk8L2NvZGU+IHVuaXF1ZWx5IGlkZW50aWZ5IGEgZGlyZWN0b3J5LCBlbHNlIDxjb2RlPmZhbHNlPC9jb2RlPi48L3NwYW4+PC9wPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5bPGk+Tm90ZTo8L2k+IE9uIFBPU0lYLDxjb2RlPiAKICBwYXRoKCZxdW90Oy9mb28mcXVvdDspLmlzX2Fic29sdXRlKCk8L2NvZGU+IHJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4uIE9uIFdpbmRvd3MsIDxjb2RlPgogIHBhdGgoJnF1b3Q7L2ZvbyZxdW90OykuaXNfYWJzb2x1dGUoKTwvY29kZT4gcmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4uIDxpPi0tZW5kIG5vdGU8L2k+XTwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxhIG5hbWU9InBhdGgtaXNfcmVsYXRpdmUiPmlzX3JlbGF0aXZlPC9hPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPiFpc19hYnNvbHV0ZSgpPC9jb2RlPi48L3NwYW4+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz4gPGEgbmFtZT0icGF0aC1pdGVyYXRvcnMiPiA8Y29kZT4KPGZvbnQgc2l6ZT0iNCI+cGF0aDwvZm9udD48L2NvZGU+IGl0ZXJhdG9yczwvYT48L2gzPgo8cD4gQSA8Y29kZT5wYXRoOjppdGVyYXRvcjwvY29kZT4gaXMgYSBjb25zdGFudCBpdGVyYXRvciBzYXRpc2Z5aW5nIGFsbCAKdGhlIHJlcXVpcmVtZW50cyBvZiBhIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3IgKEMrKyBTdGQsIDI0LjEuNCBCaWRpcmVjdGlvbmFsIAppdGVyYXRvcnMgW2xpYi5iaWRpcmVjdGlvbmFsLml0ZXJhdG9yc10pLiBJdHMgPGNvZGU+dmFsdWVfdHlwZTwvY29kZT4gaXMgPGNvZGU+CnBhdGg8L2NvZGU+LjwvcD4KICA8cD5DYWxsaW5nIGFueSBub24tY29uc3QgbWVtYmVyIGZ1bmN0aW9uIG9mIGEgPGNvZGU+cGF0aDwvY29kZT4gb2JqZWN0IAogIGludmFsaWRhdGVzIGFsbCBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGVsZW1lbnRzIG9mIHRoYXQgb2JqZWN0LjwvcD4KPHA+IFRoZSBmb3J3YXJkIHRyYXZlcnNhbCBvcmRlciBpcyBhcyBmb2xsb3dzOjwvcD4KPHVsPgogIDxsaT5UaGUgPGk+cm9vdC1uYW1lPC9pPiBlbGVtZW50LCBpZiBwcmVzZW50LjwvbGk+CiAgPGxpPlRoZSA8aT5yb290LWRpcmVjdG9yeTwvaT4gZWxlbWVudCwgaWYgcHJlc2VudC48L2xpPgogIDxsaT5FYWNoIHN1Y2Nlc3NpdmUgPGk+ZmlsZW5hbWU8L2k+IGVsZW1lbnQsIGlmIHByZXNlbnQuPC9saT4KICA8bGk+PGk+RG90PC9pPiwgaWYgb25lIG9yIG1vcmUgdHJhaWxpbmcgbm9uLXJvb3QgPGk+c2xhc2g8L2k+IAogIGNoYXJhY3RlcnMgYXJlIHByZXNlbnQuPC9saT4KPC91bD4KICA8cD5UaGUgYmFja3dhcmQgdHJhdmVyc2FsIG9yZGVyIGlzIHRoZSByZXZlcnNlIG9mIGZvcndhcmQgdHJhdmVyc2FsLjwvcD4KICA8cHJlPml0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiBBbiBpdGVyYXRvciBmb3IgdGhlIGZpcnN0IHByZXNlbnQgZWxlbWVudCBpbiB0aGUgdHJhdmVyc2FsIAogIGxpc3QgYWJvdmUuIElmIG5vIGVsZW1lbnRzIGFyZSBwcmVzZW50LCB0aGUgZW5kIGl0ZXJhdG9yLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPml0ZXJhdG9yIGVuZCgpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gVGhlIGVuZCBpdGVyYXRvci48L3A+CjwvYmxvY2txdW90ZT4KPGgzPiA8YSBuYW1lPSJwYXRoLWRlcHJlY2F0ZWQtZnVuY3Rpb25zIj48Y29kZT48Zm9udCBzaXplPSI0Ij4gcGF0aDwvZm9udD48L2NvZGU+IGRlcHJlY2F0ZWQgZnVuY3Rpb25zPC9hPjwvaDM+CjxwPiBTZXZlcmFsIG1lbWJlciBmdW5jdGlvbnMgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucyBvZiA8Y29kZT5jbGFzcyBwYXRoPC9jb2RlPiAKaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIGVpdGhlciBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuIHJlbmFtZWQgb3IgYmVjYXVzZSB0aGUgCmZ1bmN0aW9uYWxpdHkgaXMgbm8gbG9uZ2VyIGRlc2lyYWJsZSBvciBoYXMgYmVjb21lIG9ic29sZXRlLjwvcD4KPHA+IERlcHJlY2F0ZWQgZnVuY3Rpb25zIGF2YWlsYWJsZSBieSBkZWZhdWx0OyB3aWxsIGJlIHN1cHByZXNzZWQgaWYgPGNvZGU+CkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRDwvY29kZT4gaXMgZGVmaW5lZDo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+cGF0aCZhbXA7ICByZW1vdmVfbGVhZigpICAgICAgICAgICB7IHJldHVybiByZW1vdmVfZmlsZW5hbWUoKTsgfQpwYXRoICAgbGVhZigpIGNvbnN0ICAgICAgICAgICAgeyByZXR1cm4gZmlsZW5hbWUoKTsgfQpwYXRoICAgYnJhbmNoX3BhdGgoKSBjb25zdCAgICAgeyByZXR1cm4gcGFyZW50X3BhdGgoKTsgfQpib29sICAgaGFzX2xlYWYoKSBjb25zdCAgICAgICAgeyByZXR1cm4gIW1fcGF0aC5lbXB0eSgpOyB9CmJvb2wgICBoYXNfYnJhbmNoX3BhdGgoKSBjb25zdCB7IHJldHVybiAhcGFyZW50X3BhdGgoKS5lbXB0eSgpOyB9PC9wcmU+CjwvYmxvY2txdW90ZT4KPHA+IERlcHJlY2F0ZWQgZnVuY3Rpb25zIG5vdCBhdmFpbGFibGUgYnkgZGVmYXVsdDsgd2lsbCBiZSBzdXBwbGllZCBpZiA8Y29kZT4KQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEPC9jb2RlPiBpcyBkZWZpbmVkOjwvcD4KPGJsb2NrcXVvdGU+CiAgPHByZT5jb25zdCBzdGQ6OnN0cmluZyAgZmlsZV9zdHJpbmcoKSBjb25zdCAgICAgICAgICAgICAgIHsgcmV0dXJuIG5hdGl2ZV9zdHJpbmcoKTsgfQpjb25zdCBzdGQ6OnN0cmluZyAgZGlyZWN0b3J5X3N0cmluZygpIGNvbnN0ICAgICAgICAgIHsgcmV0dXJuIG5hdGl2ZV9zdHJpbmcoKTsgfQpjb25zdCBzdGQ6OnN0cmluZyAgbmF0aXZlX2ZpbGVfc3RyaW5nKCkgY29uc3QgICAgICAgIHsgcmV0dXJuIG5hdGl2ZV9zdHJpbmcoKTsgfQpjb25zdCBzdGQ6OnN0cmluZyAgbmF0aXZlX2RpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCAgIHsgcmV0dXJuIG5hdGl2ZV9zdHJpbmcoKTsgfQpjb25zdCBzdHJpbmdfdHlwZSAgZXh0ZXJuYWxfZmlsZV9zdHJpbmcoKSBjb25zdCAgICAgIHsgcmV0dXJuIG5hdGl2ZSgpOyB9CmNvbnN0IHN0cmluZ190eXBlICBleHRlcm5hbF9kaXJlY3Rvcnlfc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbmF0aXZlKCk7IH08L3ByZT4KPC9ibG9ja3F1b3RlPgo8aDM+IDxhIG5hbWU9InBhdGgtbm9uLW1lbWJlci1mdW5jdGlvbnMiPiA8Y29kZT48Zm9udCBzaXplPSI0Ij5wYXRoPC9mb250PjwvY29kZT4KPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPm5vbi1tZW1iZXIgZnVuY3Rpb25zPC9zcGFuPjwvYT48L2gzPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj52b2lkIHN3YXAoIHBhdGgmYW1wOyBsaHMsIHBhdGgmYW1wOyByaHMgKTwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6IDwvc3Bhbj48L2k+PGNvZGU+CiAgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmxocy5zd2FwKHJocyk8L3NwYW4+PC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KICA8cHJlPmJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUocGF0aDo6aXRlcmF0b3IgZmlyc3QxLCBwYXRoOjppdGVyYXRvciBsYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOjppdGVyYXRvciBmaXJzdDIsIHBhdGg6Oml0ZXJhdG9yIGxhc3QyKTwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNlcXVlbmNlIG9mIDxjb2RlPm5hdGl2ZSgpPC9jb2RlPiAKICBzdHJpbmdzIGZvciB0aGUgZWxlbWVudHMgZGVmaW5lZCBieSB0aGUgcmFuZ2UgPGNvZGU+W2ZpcnN0MSxsYXN0MSk8L2NvZGU+IGlzIAogIGxleGljb2dyYXBoaWNhbGx5IGxlc3MgdGhhbiB0aGUgc2VxdWVuY2Ugb2YgPGNvZGU+bmF0aXZlKCk8L2NvZGU+IHN0cmluZ3MgZm9yIAogIHRoZSBlbGVtZW50cyBkZWZpbmVkIGJ5IHRoZSByYW5nZSA8Y29kZT5bZmlyc3QyLGxhc3QyKTwvY29kZT4uIFJldHVybnMgPGNvZGU+CiAgZmFsc2U8L2NvZGU+IG90aGVyd2lzZS48L3A+CiAgPHA+PGk+UmVtYXJrczo8L2k+IElmIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZWlyIAogIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgYXJlIGVxdWl2YWxlbnQsIHRoZW4gbmVpdGhlciBzZXF1ZW5jZSBpcyAKICBsZXhpY29ncmFwaGljYWxseSBsZXNzIHRoYW4gdGhlIG90aGVyLiBJZiBvbmUgc2VxdWVuY2UgaXMgYSBwcmVmaXggb2YgdGhlIAogIG90aGVyLCB0aGVuIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIGxleGljb2dyYXBoaWNhbGx5IGxlc3MgdGhhbiB0aGUgbG9uZ2VyIAogIHNlcXVlbmNlLiBPdGhlcndpc2UsIHRoZSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBvZiB0aGUgc2VxdWVuY2VzIHlpZWxkcyAKICB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGNvbXBhcmlzb24gb2YgdGhlIGZpcnN0IGNvcnJlc3BvbmRpbmcgcGFpciBvZiBlbGVtZW50cyAKICB0aGF0IGFyZSBub3QgZXF1aXZhbGVudC48L3A+CiAgPHByZT4gIGZvciAoIDsgZmlyc3QxICE9IGxhc3QxICZhbXA7JmFtcDsgZmlyc3QyICE9IGxhc3QyIDsgKytmaXJzdDEsICsrZmlyc3QyKSB7CiAgICBpZiAoZmlyc3QxLSZndDtuYXRpdmUoKSAmbHQ7IGZpcnN0Mi0mZ3Q7bmF0aXZlKCkpIHJldHVybiB0cnVlOwogICAgaWYgKGZpcnN0Mi0mZ3Q7bmF0aXZlKCkgJmx0OyBmaXJzdDEtJmd0O25hdGl2ZSgpKSByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBmaXJzdDEgPT0gbGFzdDEgJmFtcDsmYW1wOyBmaXJzdDIgIT0gbGFzdDI7PC9wcmU+CiAgPHA+WzxpPk5vdGU6PC9pPiBBIDxjb2RlPnBhdGg8L2NvZGU+IGF3YXJlPGNvZGU+IGxleGljb2dyYXBoaWNhbF9jb21wYXJlPC9jb2RlPiAKICBpcyBwcm92aWRlZCB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gPGNvZGU+c3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZTwvY29kZT4gCiAgZHVlIHRvIHRoZSA8Y29kZT5wYXRoPC9jb2RlPiBpdGVyYXRvcidzIHZhbHVlIHR5cGUgaXRzZWxmIGJlaW5nIDxjb2RlPnBhdGg8L2NvZGU+LgogIDxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgb3BlcmF0b3ImbHQ7IChjb25zdCBwYXRoJmFtcDsgbGhzLCBjb25zdCBwYXRoJmFtcDsgcmhzKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZShsaHMuYmVnaW4oKSwgbGhzLmVuZCgpLCAKICByaHMuYmVnaW4oKSwgcmhzLmVuZCgpKTwvY29kZT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCBvcGVyYXRvciZsdDs9KGNvbnN0IHBhdGgmYW1wOyBsaHMsIGNvbnN0IHBhdGgmYW1wOyByaHMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+IShyaHMgJmx0OyBsaHMpPC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIG9wZXJhdG9yJmd0OyAoY29uc3QgcGF0aCZhbXA7IGxocywgY29uc3QgcGF0aCZhbXA7IHJocyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5yaHMgJmx0OyBsaHM8L2NvZGU+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgb3BlcmF0b3ImZ3Q7PShjb25zdCBwYXRoJmFtcDsgbGhzLCBjb25zdCBwYXRoJmFtcDsgcmhzKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPiEobGhzICZsdDsgcmhzKTwvY29kZT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGgmYW1wOyBsaHMsIGNvbnN0IHBhdGgmYW1wOyByaHMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+IShsaHMgJmx0OyByaHMpICZhbXA7JmFtcDsgIShyaHMgJmx0OyBsaHMpPC9jb2RlPi48L3A+CiAgPHA+WzxpPk5vdGU6PC9pPiBBY3R1YWwgaW1wbGVtZW50YXRpb25zIG1heSB1c2UgYW4gZXF1aXZhbGVudCwgYnV0IG1vcmUgCiAgZWZmaWNpZW50LCBhbGdvcml0aG0uIDxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KICA8cD5bPGk+Tm90ZTo8L2k+IDxhIG5hbWU9IlBhdGgtZXF1YWxpdHkiPlBhdGggZXF1YWxpdHk8L2E+IGFuZCBwYXRoIAogIGVxdWl2YWxlbmNlIGhhdmUgZGlmZmVyZW50IHNlbWFudGljcy48L3A+CiAgPHA+RXF1YWxpdHkgaXMgZGV0ZXJtaW5lZCBieSB0aGUgPGNvZGU+cGF0aDwvY29kZT4gCiAgbm9uLW1lbWJlciA8Y29kZT5vcGVyYXRvcj09PC9jb2RlPiwgd2hpY2ggY29uc2lkZXJzIHRoZSB0d28gcGF0aCdzIGxleGljYWwgCiAgcmVwcmVzZW50YXRpb25zIG9ubHkuIFRodXMgPGNvZGU+cGF0aCgmcXVvdDtmb28mcXVvdDspID09ICZxdW90O2JhciZxdW90OzwvY29kZT4gaXMgbmV2ZXIgCiAgPGNvZGU+dHJ1ZTwvY29kZT4uPC9wPgogIDxwPkVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgdGhlIDxhIGhyZWY9IiNlcXVpdmFsZW50Ij48Y29kZT5lcXVpdmFsZW50KCk8L2NvZGU+PC9hPiAKICBub24tbWVtYmVyIGZ1bmN0aW9uLCB3aGljaCBkZXRlcm1pbmVzIGlmIHR3byBwYXRocyA8YSBocmVmPSIjUGF0aCI+cmVzb2x2ZTwvYT4gdG8gdGhlIHNhbWUgZmlsZSBzeXN0ZW0gZW50aXR5LiAKICBUaHVzIDxjb2RlPmVxdWl2YWxlbnQoJnF1b3Q7Zm9vJnF1b3Q7LCAmcXVvdDtiYXImcXVvdDspPC9jb2RlPiB3aWxsIGJlIDxjb2RlPnRydWU8L2NvZGU+IAogIHdoZW4gYm90aCBwYXRocyByZXNvbHZlIHRvIHRoZSBzYW1lIGZpbGUuPC9wPgogIDxwPlByb2dyYW1tZXJzIHdpc2hpbmcgdG8gZGV0ZXJtaW5lIGlmIHR3byBwYXRocyBhcmUgJnF1b3Q7dGhlIHNhbWUmcXVvdDsgbXVzdCBkZWNpZGUgaWYgCiAgJnF1b3Q7dGhlIHNhbWUmcXVvdDsgbWVhbnMgJnF1b3Q7dGhlIHNhbWUgcmVwcmVzZW50YXRpb24mcXVvdDsgb3IgJnF1b3Q7cmVzb2x2ZSB0byB0aGUgc2FtZSBhY3R1YWwgCiAgZmlsZSZxdW90OywgYW5kIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gYWNjb3JkaW5nbHkuIDxpPgogIC0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aCZhbXA7IGxocywgY29uc3QgcGF0aCZhbXA7IHJocyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4hKGxocyA9PSByaHMpPC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIG9wZXJhdG9yLyAoY29uc3QgcGF0aCZhbXA7IGxocywgY29uc3QgcGF0aCZhbXA7IHJocyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5wYXRoKGxocykgLz0gcmhzPC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPGgzPiA8YSBuYW1lPSJwYXRoLW5vbi1tZW1iZXItb3BlcmF0b3JzIj48Y29kZT48Zm9udCBzaXplPSI0Ij5wYXRoPC9mb250PjwvY29kZT48L2E+PGEgbmFtZT0icGF0aC1pbnNlcnRlci1leHRyYWN0b3IiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gaW5zZXJ0ZXIgCiAgYW5kIGV4dHJhY3Rvcjwvc3Bhbj48L2E+PC9oMz4KPHA+IFRoZSBpbnNlcnRlciBhbmQgZXh0cmFjdG9yIGRlbGltaXQgdGhlIHN0cmluZyB3aXRoIGRvdWJsZS1xdW90ZXMgKDxjb2RlPiZxdW90OzwvY29kZT4pIAp0byBlbnN1cmUgdGhhdCBwYXRocyB3aXRoIGVtYmVkZGVkIHNwYWNlcyB3aWxsIHJvdW5kIHRyaXAgY29ycmVjdGx5LiBBbXBlcnNhbmQgKDxjb2RlPiZhbXA7PC9jb2RlPikgCmlzIHVzZWQgYXMgYW4gZXNjYXBlIGNoYXJhY3Rlciwgc28gdGhlIHBhdGggY2FuIGl0c2VsZiBjb250YWluIGRvdWJsZSBxdW90ZXMuPC9wPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMmZ3Q7CnN0ZDo6YmFzaWNfb3N0cmVhbSZsdDtDaGFyLCBUcmFpdHMmZ3Q7JmFtcDsgb3BlcmF0b3ImbHQ7Jmx0OyhzdGQ6OmJhc2ljX29zdHJlYW0mbHQ7Q2hhciwgVHJhaXRzJmd0OyZhbXA7IG9zLCBjb25zdCBwYXRoJmFtcDsgcCkKPC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5FZmZlY3RzOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiZuYnNwOwogIDxjb2RlPm9zICZsdDsmbHQ7IDxhIGhyZWY9Ii4uLy4uLy4uL2lvL2RvYy9xdW90ZWRfbWFuaXAuaHRtbCI+CiAgYm9vc3Q6OmlvOjpxdW90ZWQ8L2E+KHAuc3RyaW5nJmx0O3N0ZDo6YmFzaWNfc3RyaW5nJmx0O0NoYXImZ3Q7Jmd0OygpLCBzdGF0aWNfY2FzdCZsdDtDaGFyJmd0OygnJmFtcDsnKSk7PC9jb2RlPjwvc3Bhbj48L3A+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlJldHVybnM6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgPC9zcGFuPiA8Y29kZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+b3M8L3NwYW4+PC9jb2RlPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnRlbXBsYXRlICZsdDtjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMmZ3Q7CmlubGluZSBzdGQ6OmJhc2ljX2lzdHJlYW0mbHQ7Q2hhciwgVHJhaXRzJmd0OyZhbXA7IG9wZXJhdG9yJmd0OyZndDsoc3RkOjpiYXNpY19pc3RyZWFtJmx0O0NoYXIsIFRyYWl0cyZndDsmYW1wOyBpcywgcGF0aCZhbXA7IHApCjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+PGk+RWZmZWN0czombmJzcDsgPC9pPgogICAgICA8Y29kZT4mbmJzcDtzdGQ6OmJhc2ljX3N0cmluZyZsdDtDaGFyJmd0OyBzdHI7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaXMgJmd0OyZndDsKICA8YSBocmVmPSIuLi8uLi8uLi9pby9kb2MvcXVvdGVkX21hbmlwLmh0bWwiPmJvb3N0Ojppbzo6cXVvdGVkPC9hPihzdHIsIAogIHN0YXRpY19jYXN0Jmx0O0NoYXImZ3Q7KCcmYW1wOycpKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwID0gc3RyOzwvY29kZT48L3NwYW4+PC9wPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5SZXR1cm5zOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogIDwvc3Bhbj4gPGNvZGU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmlzPC9zcGFuPjwvY29kZT48L3A+CiAgPC9ibG9ja3F1b3RlPgo8aDM+PGEgbmFtZT0iQ2xhc3MtZmlsZXN5c3RlbV9lcnJvciI+Q2xhc3MgPGNvZGU+ZmlsZXN5c3RlbV9lcnJvcjwvY29kZT48L2E+PC9oMz4KPHByZT4gIG5hbWVzcGFjZSBib29zdAogIHsKICAgIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgICB7CiAgICAgIGNsYXNzIGJhc2ljX2ZpbGVzeXN0ZW1fZXJyb3IgOiBwdWJsaWMgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPnN5c3RlbTwvc3Bhbj5fZXJyb3IKICAgICAgewogICAgICBwdWJsaWM6CiAgICAgICAgZmlsZXN5c3RlbV9lcnJvcigpOwogICAgICAgIGZpbGVzeXN0ZW1fZXJyb3IoY29uc3QgZmlsZXN5c3RlbV9lcnJvciZhbXA7KTsKICAgICAgICA8YSBocmVmPSIjZmlsZXN5c3RlbV9lcnJvci0yLWFyZyI+ZmlsZXN5c3RlbV9lcnJvcjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcmYW1wOyA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+d2hhdF9hcmc8L3NwYW4+LCBzeXN0ZW06OmVycm9yX2NvZGUgZWMpOwogICAgICAgIDxhIGhyZWY9IiNmaWxlc3lzdGVtX2Vycm9yLTMtYXJnIj5maWxlc3lzdGVtX2Vycm9yPC9hPihjb25zdCBzdGQ6OnN0cmluZyZhbXA7IDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj53aGF0X2FyZzwvc3Bhbj4sIGNvbnN0IHBhdGgmYW1wOyBwMSwgc3lzdGVtOjplcnJvcl9jb2RlIGVjKTsKICAgICAgICA8YSBocmVmPSIjZmlsZXN5c3RlbV9lcnJvci00LWFyZyI+ZmlsZXN5c3RlbV9lcnJvcjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcmYW1wOyA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+d2hhdF9hcmc8L3NwYW4+LCBjb25zdCBwYXRoJmFtcDsgcDEsIGNvbnN0IHBhdGgmYW1wOyBwMiwgc3lzdGVtOjplcnJvcl9jb2RlIGVjKTsKCiAgICAgICAgZmlsZXN5c3RlbV9lcnJvciZhbXA7IGZpbGVzeXN0ZW1fZXJyb3IoY29uc3QgZmlsZXN5c3RlbV9lcnJvciZhbXA7KTsKICAgICAgIH5maWxlc3lzdGVtX2Vycm9yKCk7CgogICAgICAgIGZpbGVzeXN0ZW1fZXJyb3ImYW1wOyBvcGVyYXRvcj0oY29uc3QgZmlsZXN5c3RlbV9lcnJvciZhbXA7KTsKCiAgICAgICAgY29uc3QgcGF0aCZhbXA7IDxhIGhyZWY9IiNmaWxlc3lzdGVtX2Vycm9yLXBhdGgxIj5wYXRoMTwvYT4oKSBjb25zdDsKICAgICAgICBjb25zdCBwYXRoJmFtcDsgPGEgaHJlZj0iI2ZpbGVzeXN0ZW1fZXJyb3ItcGF0aDIiPnBhdGgyPC9hPigpIGNvbnN0OwoKICAgICAgICBjb25zdCBjaGFyICogPGEgaHJlZj0iI2ZpbGVzeXN0ZW1fZXJyb3Itd2hhdCI+d2hhdDwvYT4oKSBjb25zdDsKICAgICAgfTsKICAgIH0gLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KICB9IC8vIG5hbWVzcGFjZSBib29zdDwvcHJlPgo8cD5UaGUgY2xhc3MgdGVtcGxhdGUgPGNvZGU+YmFzaWNfZmlsZXN5c3RlbV9lcnJvcjwvY29kZT4gZGVmaW5lcyB0aGUgdHlwZSBvZiAKb2JqZWN0cyB0aHJvd24gYXMgZXhjZXB0aW9ucyB0byByZXBvcnQgZmlsZSBzeXN0ZW0gZXJyb3JzIGZyb20gZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiB0aGlzIApjbGF1c2UuPC9wPgo8aDQ+IDxhIG5hbWU9ImZpbGVzeXN0ZW1fZXJyb3ItbWVtYmVycyI+IDxjb2RlPmZpbGVzeXN0ZW1fZXJyb3I8L2NvZGU+IG1lbWJlcnM8L2E+PC9oND4KPHByZT48YSBuYW1lPSJmaWxlc3lzdGVtX2Vycm9yLTItYXJnIj5maWxlc3lzdGVtX2Vycm9yPC9hPihjb25zdCBzdGQ6OnN0cmluZyZhbXA7IDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj53aGF0X2FyZzwvc3Bhbj4sIGVycm9yX2NvZGUgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+PC9wPgogIDx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIiB3aWR0aD0iNDYlIj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxiPkV4cHJlc3Npb248L2I+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxiPlZhbHVlPC9iPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSIgYmdjb2xvcj0iI0ZGRkZGRiI+PGNvZGU+CiAgICAgIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ydW50aW1lX2Vycm9yOjp3aGF0PC9zcGFuPigpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIiBiZ2NvbG9yPSIjRkZGRkZGIj48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgICAgIDxjb2RlPjxpPndoYXRfYXJnPC9pPi5jX3N0cigpPC9jb2RlPjwvc3Bhbj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPmNvZGUoKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGNvZGU+ZWM8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoMSgpLmVtcHR5KCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPnRydWU8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoMigpLmVtcHR5KCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPnRydWU8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KPC9ibG9ja3F1b3RlPgo8cHJlPjxhIG5hbWU9ImZpbGVzeXN0ZW1fZXJyb3ItMy1hcmciPmZpbGVzeXN0ZW1fZXJyb3I8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nJmFtcDsgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPndoYXRfYXJnPC9zcGFuPiwgY29uc3QgcGF0aF90eXBlJmFtcDsgcDEsIGVycm9yX2NvZGUgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+PC9wPgogIDx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIiB3aWR0aD0iNDYlIj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxiPkV4cHJlc3Npb248L2I+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxiPlZhbHVlPC9iPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSIgdmFsaWduPSJ0b3AiPjxjb2RlPgogICAgICA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+cnVudGltZV9lcnJvcjo6d2hhdDwvc3Bhbj4oKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogICAgICA8Y29kZT48aT53aGF0X2FyZzwvaT4uY19zdHIoKTwvY29kZT48L3NwYW4+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIiB2YWxpZ249InRvcCI+PGNvZGU+Y29kZSgpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT5lYzwvY29kZT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiIHZhbGlnbj0idG9wIj48Y29kZT5wYXRoMSgpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+UmVmZXJlbmNlIHRvIHN0b3JlZCBjb3B5IG9mCiAgICAgIDwvc3Bhbj4gPGNvZGU+cDE8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIiB2YWxpZ249InRvcCI+PGNvZGU+cGF0aDIoKS5lbXB0eSgpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT50cnVlPC9jb2RlPjwvdGQ+CiAgICA8L3RyPgogIDwvdGFibGU+CjwvYmxvY2txdW90ZT4KPHByZT48YSBuYW1lPSJmaWxlc3lzdGVtX2Vycm9yLTQtYXJnIj5maWxlc3lzdGVtX2Vycm9yPC9hPihjb25zdCBzdGQ6OnN0cmluZyZhbXA7IDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj53aGF0X2FyZzwvc3Bhbj4sIGNvbnN0IHBhdGhfdHlwZSZhbXA7IHAxLCBjb25zdCBwYXRoX3R5cGUmYW1wOyBwMiwgZXJyb3JfY29kZSBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT48L3A+CiAgPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSI0NiUiPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSI+PGI+RXhwcmVzc2lvbjwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGI+VmFsdWU8L2I+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT4KICAgICAgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPnJ1bnRpbWVfZXJyb3I6OndoYXQ8L3NwYW4+KCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4KICAgICAgPHU+CiAgICAgIDxjb2RlPjxpPnc8L2k+PC9jb2RlPjwvdT48Y29kZT48aT5oYXRfYXJnPC9pPi5jX3N0cigpPC9jb2RlPjwvc3Bhbj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPmNvZGUoKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGNvZGU+ZWM8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoMSgpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+UmVmZXJlbmNlIHRvIHN0b3JlZCBjb3B5IG9mCiAgICAgIDwvc3Bhbj4gPGNvZGU+cDE8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoMigpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+UmVmZXJlbmNlIHRvIHN0b3JlZCBjb3B5IG9mCiAgICAgIDwvc3Bhbj4gPGNvZGU+cDI8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KPC9ibG9ja3F1b3RlPgo8cHJlPmNvbnN0IHBhdGgmYW1wOyA8YSBuYW1lPSJmaWxlc3lzdGVtX2Vycm9yLXBhdGgxIj5wYXRoMTwvYT4oKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IFJlZmVyZW5jZSB0byBjb3B5IG9mIDxjb2RlPnAxPC9jb2RlPiBzdG9yZWQgYnkgdGhlIAogIGNvbnN0cnVjdG9yLCBvciwgaWYgbm9uZSwgYW4gZW1wdHkgcGF0aC48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5jb25zdCBwYXRoJmFtcDsgPGEgbmFtZT0iZmlsZXN5c3RlbV9lcnJvci1wYXRoMiI+cGF0aDI8L2E+KCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiBSZWZlcmVuY2UgdG8gY29weSBvZiA8Y29kZT5wMjwvY29kZT4gc3RvcmVkIGJ5IHRoZSAKICBjb25zdHJ1Y3Rvciwgb3IsIGlmIG5vbmUsIGFuIGVtcHR5IHBhdGguPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Y29uc3QgY2hhciogPGEgbmFtZT0iZmlsZXN5c3RlbV9lcnJvci13aGF0Ij53aGF0PC9hPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOiA8L2k+QSBzdHJpbmcgY29udGFpbmluZyA8Y29kZT5ydW50aW1lX2Vycm9yOjp3aGF0KCk8L2NvZGU+LiBUaGUgZXhhY3QgZm9ybWF0IGlzIHVuc3BlY2lmaWVkLiAKICBJbXBsZW1lbnRhdGlvbnMgYXJlIGVuY291cmFnZWQgYnV0IG5vdCByZXF1aXJlZCB0byBpbmNsdWRlIDxjb2RlPgogIHBhdGgxLm5hdGl2ZV9zdHJpbmcoKTwvY29kZT5pZiBub3QgZW1wdHksIDxjb2RlPnBhdGgyLm5hdGl2ZV9zdHJpbmcoKTwvY29kZT5pZiAKICBub3QgZW1wdHksIGFuZCA8Y29kZT5zeXN0ZW1fZXJyb3I6OndoYXQoKTwvY29kZT4gc3RyaW5ncyBpbiB0aGUgcmV0dXJuZWQgCiAgc3RyaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8aDM+PGEgbmFtZT0iQ2xhc3MtZGlyZWN0b3J5X2VudHJ5Ij5DbGFzcyA8Y29kZT5kaXJlY3RvcnlfZW50cnk8L2NvZGU+PC9hPjwvaDM+CjxwcmU+ICBuYW1lc3BhY2UgYm9vc3QKICB7CiAgICBuYW1lc3BhY2UgZmlsZXN5c3RlbQogICAgewogICAgICBjbGFzcyBkaXJlY3RvcnlfZW50cnkKICAgICAgewogICAgICBwdWJsaWM6CgogICAgICAgIC8vIDxhIGhyZWY9IiNkaXJlY3RvcnlfZW50cnktY29uc3RydWN0b3JzIj5jb25zdHJ1Y3RvcnM8L2E+IGFuZCBkZXN0cnVjdG9yCiAgICAgICAgZGlyZWN0b3J5X2VudHJ5KCk7CiAgICAgICAgZGlyZWN0b3J5X2VudHJ5KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7KTsKICAgICAgICBleHBsaWNpdCBkaXJlY3RvcnlfZW50cnkoY29uc3QgcGF0aF90eXBlJmFtcDsgcCwgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmZpbGVfc3RhdHVzPC9zcGFuPiBzdD1maWxlX3N0YXR1cygpLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSk7CiAgICAgICB+ZGlyZWN0b3J5X2VudHJ5KCk7IAoKICAgICAgICAvLyA8YSBocmVmPSIjZGlyZWN0b3J5X2VudHJ5LW1vZGlmaWVycyI+bW9kaWZpZXJzPC9hPgogICAgICAgIGRpcmVjdG9yeV9lbnRyeSZhbXA7IG9wZXJhdG9yPShjb25zdCBkaXJlY3RvcnlfZW50cnkmYW1wOyk7CiAgICAgICAgdm9pZCBhc3NpZ24oY29uc3QgcGF0aF90eXBlJmFtcDsgcCwgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmZpbGVfc3RhdHVzPC9zcGFuPiBzdD1maWxlX3N0YXR1cygpLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSk7CiAgICAgICAgdm9pZCByZXBsYWNlX2ZpbGVuYW1lKGNvbnN0IHBhdGgmYW1wOyBwLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN0PWZpbGVfc3RhdHVzKCksIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5maWxlX3N0YXR1czwvc3Bhbj4gc3ltbGlua19zdD1maWxlX3N0YXR1cygpKTsKCiAgICAgICAgLy8gPGEgaHJlZj0iI2RpcmVjdG9yeV9lbnRyeS1vYnNlcnZlcnMiPm9ic2VydmVyczwvYT4KICAgICAgICBjb25zdCBwYXRoJmFtcDsgIHBhdGgoKSBjb25zdDsKPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiAgICAgICAgZmlsZV9zdGF0dXMgIHN0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYykgY29uc3Q7CiAgICAgICAgZmlsZV9zdGF0dXMgIHN5bWxpbmtfc3RhdHVzKHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKSBjb25zdDsKCiAgICAgICAgYm9vbCBvcGVyYXRvciZsdDsgKGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7IHJocyk7CiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7IHJocyk7IAogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBkaXJlY3RvcnlfZW50cnkmYW1wOyByaHMpOyAKICAgICAgICBib29sIG9wZXJhdG9yJmx0OyAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTsKICAgICAgICBib29sIG9wZXJhdG9yJmx0Oz0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTsKICAgICAgICBib29sIG9wZXJhdG9yJmd0OyAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTsKICAgICAgICBib29sIG9wZXJhdG9yJmd0Oz0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTsKPC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRjAwIj4KPC9zcGFuPiAgICAgIHByaXZhdGU6CiAgICAgICAgcGF0aF90eXBlICAgICAgICAgICAgbV9wYXRoOyAgICAgICAgICAgLy8gZm9yIGV4cG9zaXRpb24gb25seQogICAgICAgIG11dGFibGUgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmZpbGVfc3RhdHVzPC9zcGFuPiAgbV9zdGF0dXM7ICAgICAgICAgLy8gZm9yIGV4cG9zaXRpb24gb25seTsgc3RhdCgpLWxpa2UKICAgICAgICBtdXRhYmxlIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5maWxlX3N0YXR1czwvc3Bhbj4gIG1fc3ltbGlua19zdGF0dXM7IC8vIGZvciBleHBvc2l0aW9uIG9ubHk7IGxzdGF0KCktbGlrZQogICAgICB9OwoKICAgIH0gLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KICB9IC8vIG5hbWVzcGFjZSBib29zdDwvcHJlPgo8cD5BIDxjb2RlPmRpcmVjdG9yeV9lbnRyeTwvY29kZT4gb2JqZWN0IHN0b3JlcyBhIDxjb2RlPnBhdGggb2JqZWN0PC9jb2RlPiwgCmEgPGNvZGU+ZmlsZV9zdGF0dXM8L2NvZGU+IG9iamVjdCBmb3Igbm9uLXN5bWJvbGljIGxpbmsgc3RhdHVzLCBhbmQgYSA8Y29kZT4KZmlsZV9zdGF0dXM8L2NvZGU+IG9iamVjdCBmb3Igc3ltYm9saWMgbGluayBzdGF0dXMuIFRoZSA8Y29kZT5maWxlX3N0YXR1czwvY29kZT4gCm9iamVjdHMgYWN0IGFzIHZhbHVlIGNhY2hlcy48L3A+CjxibG9ja3F1b3RlPgo8cD5bPGk+Tm90ZTo8L2k+IEJlY2F1c2UgPGNvZGU+c3RhdHVzKCk8L2NvZGU+b24gYSBwYXRobmFtZSBtYXkgYmUgYSB2ZXJ5IGV4cGVuc2l2ZSBvcGVyYXRpb24sIApzb21lIG9wZXJhdGluZyBzeXN0ZW1zIHByb3ZpZGUgc3RhdHVzIGluZm9ybWF0aW9uIGFzIGEgYnlwcm9kdWN0IG9mIGRpcmVjdG9yeSAKaXRlcmF0aW9uLiBDYWNoaW5nIHN1Y2ggc3RhdHVzIGluZm9ybWF0aW9uIGNhbiByZXN1bHQgaXMgc2lnbmlmaWNhbnQgdGltZSBzYXZpbmdzLiBDYWNoZWQgYW5kIApub24tY2FjaGVkIHJlc3VsdHMgbWF5IGRpZmZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgcmFjZSBjb25kaXRpb25zLiA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgo8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0UwRTBFMCI+PGk+QWN0dWFsIGNvbGQtYm9vdCB0aW1pbmcgb2YgaXRlcmF0aW9uIG92ZXIgCmEgZGlyZWN0b3J5IHdpdGggMTUsMDQ3IGVudHJpZXMgd2FzIHNpeCBzZWNvbmRzIGZvciBub24tY2FjaGVkIHN0YXR1cyBxdWVyaWVzIAp2ZXJzdXMgb25lIHNlY29uZCBmb3IgY2FjaGVkIHN0YXR1cyBxdWVyaWVzLiBXaW5kb3dzIFhQLCAzLjAgR0h6IHByb2Nlc3Nvciwgd2l0aCAKYSBtb2RlcmF0ZWx5IGZhc3QgaGFyZC1kcml2ZS4gU2ltaWxhciBzcGVlZHVwcyBhcmUgZXhwZWN0ZWQgb24gTGludXggYW5kIEJTRC1kZXJpdmVkIApzeXN0ZW1zIHRoYXQgcHJvdmlkZSBzdGF0dXMgYXMgYSBieS1wcm9kdWN0IG9mIGRpcmVjdG9yeSBpdGVyYXRpb24uPC9pPjwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KPGg0PiA8YSBuYW1lPSJkaXJlY3RvcnlfZW50cnktY29uc3RydWN0b3JzIj4gPGNvZGU+ZGlyZWN0b3J5X2VudHJ5IDwvY29kZT5jb25zdHJ1Y3RvcnM8L2E+PC9oND4KPHByZT5kaXJlY3RvcnlfZW50cnkoKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UG9zdGNvbmRpdGlvbnM6PC9pPjwvcD4KICA8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgd2lkdGg9IjM2JSI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Yj5FeHByZXNzaW9uPC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Yj5WYWx1ZTwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPnBhdGgoKS5lbXB0eSgpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT50cnVlPC9jb2RlPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSI+PGNvZGU+c3RhdHVzKCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPmZpbGVfc3RhdHVzKCk8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5zeW1saW5rX3N0YXR1cygpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT5maWxlX3N0YXR1cygpPC9jb2RlPjwvdGQ+CiAgICA8L3RyPgogIDwvdGFibGU+CjwvYmxvY2txdW90ZT4KPHByZT5leHBsaWNpdCBkaXJlY3RvcnlfZW50cnkoY29uc3QgcGF0aF90eXBlJmFtcDsgcCwgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmZpbGVfc3RhdHVzPC9zcGFuPiBzdD1maWxlX3N0YXR1cygpLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT48L3A+CiAgPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSIzNiUiPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSI+PGI+RXhwcmVzc2lvbjwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGI+VmFsdWU8L2I+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoKCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPnA8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5zdGF0dXMoKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGNvZGU+c3Q8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5zeW1saW5rX3N0YXR1cygpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT5zeW1saW5rX3N0PC9jb2RlPjwvdGQ+CiAgICA8L3RyPgogIDwvdGFibGU+CjwvYmxvY2txdW90ZT4KPGg0PiA8YSBuYW1lPSJkaXJlY3RvcnlfZW50cnktbW9kaWZpZXJzIj4gPGNvZGU+ZGlyZWN0b3J5X2VudHJ5IDwvY29kZT5tb2RpZmllcnM8L2E+PC9oND4KPHByZT52b2lkIGFzc2lnbihjb25zdCBwYXRoX3R5cGUmYW1wOyBwLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN0PWZpbGVfc3RhdHVzKCksIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5maWxlX3N0YXR1czwvc3Bhbj4gc3ltbGlua19zdD1maWxlX3N0YXR1cygpKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UG9zdGNvbmRpdGlvbnM6PC9pPjwvcD4KICA8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgd2lkdGg9IjM2JSI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Yj5FeHByZXNzaW9uPC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Yj5WYWx1ZTwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPnBhdGgoKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGNvZGU+cDwvY29kZT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPnN0YXR1cygpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT5zdDwvY29kZT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxjb2RlPnN5bWxpbmtfc3RhdHVzKCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPnN5bWxpbmtfc3Q8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgcmVwbGFjZV9maWxlbmFtZShjb25zdCBwYXRoJmFtcDsgcCwgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmZpbGVfc3RhdHVzPC9zcGFuPiBzdD1maWxlX3N0YXR1cygpLCA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+ZmlsZV9zdGF0dXM8L3NwYW4+IHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT48L3A+CiAgPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSI0MyUiPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE4JSI+PGI+RXhwcmVzc2lvbjwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGI+VmFsdWU8L2I+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5wYXRoKCk8L2NvZGU+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI4MiUiPjxjb2RlPnBhdGgoKS5icmFuY2goKSAvIHM8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5zdGF0dXMoKTwvY29kZT48L3RkPgogICAgICA8dGQgd2lkdGg9IjgyJSI+PGNvZGU+c3Q8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Y29kZT5zeW1saW5rX3N0YXR1cygpPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODIlIj48Y29kZT5zeW1saW5rX3N0PC9jb2RlPjwvdGQ+CiAgICA8L3RyPgogIDwvdGFibGU+CjwvYmxvY2txdW90ZT4KPGg0PiA8YSBuYW1lPSJkaXJlY3RvcnlfZW50cnktb2JzZXJ2ZXJzIj4gPGNvZGU+ZGlyZWN0b3J5X2VudHJ5PC9jb2RlPiBvYnNlcnZlcnM8L2E+PC9oND4KPHByZT5jb25zdCBwYXRoJmFtcDsgcGF0aCgpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+bV9wYXRoPC9jb2RlPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5maWxlX3N0YXR1cyBzdGF0dXMoc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpIGNvbnN0Ozwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6PC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gCkFzIGlmLDwvc3Bhbj48L3A+CiAgPGJsb2NrcXVvdGU+CiAgICA8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5pZiAoICFzdGF0dXNfa25vd24oIG1fc3RhdHVzICkgKQp7CiAgaWYgKCBzdGF0dXNfa25vd24obV9zeW1saW5rX3N0YXR1cykgJmFtcDsmYW1wOyAhaXNfc3ltbGluayhtX3N5bWxpbmtfc3RhdHVzKSApCiAgICB7IG1fc3RhdHVzID0gbV9zeW1saW5rX3N0YXR1czsgfQogIGVsc2UgeyBtX3N0YXR1cyA9IHN0YXR1cyhtX3BhdGgsIGVjKTsgfQp9CmVsc2UgaWYgKCAmYW1wO2VjICE9ICZhbXA7Ym9vc3Q6OnRocm93cygpICkgZWMuY2xlYXIoKTs8L3NwYW4+PC9wcmU+CiAgPC9ibG9ja3F1b3RlPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48aT5SZXR1cm5zOjwvaT4gPGNvZGU+bV9zdGF0dXM8L2NvZGU+PC9zcGFuPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5maWxlX3N0YXR1cyAgc3ltbGlua19zdGF0dXMoc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpIGNvbnN0Ozwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6PC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gCkFzIGlmLDwvc3Bhbj48L3A+CiAgPGJsb2NrcXVvdGU+CiAgICA8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5pZiAoICFzdGF0dXNfa25vd24oIG1fc3ltbGlua19zdGF0dXMgKSApCnsKICBtX3N5bWxpbmtfc3RhdHVzID0gc3ltbGlua19zdGF0dXMobV9wYXRoLCBlYyk7Cn0KZWxzZSBpZiAoICZhbXA7ZWMgIT0gJmFtcDtib29zdDo6dGhyb3dzKCkgKSBlYy5jbGVhcigpOzwvc3Bhbj48L3ByZT4KICA8L2Jsb2NrcXVvdGU+CiAgPHA+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPjxpPlJldHVybnM6PC9pPiA8Y29kZT4KICBtX3N5bWxpbmtfc3RhdHVzPC9jb2RlPjwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7IHJocyk7PC9zcGFuPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPm1fcGF0aCA9PSAKICByaHMubV9wYXRoPC9jb2RlPi48L3NwYW4+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmJvb2wgb3BlcmF0b3IhPShjb25zdCBkaXJlY3RvcnlfZW50cnkmYW1wOyByaHMpOzwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPjxpPlJldHVybnM6PC9pPiA8Y29kZT5tX3BhdGggIT0gCiAgcmhzLm1fcGF0aDwvY29kZT4uPC9zcGFuPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ib29sIG9wZXJhdG9yJmx0OyAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48aT5SZXR1cm5zOjwvaT4gPGNvZGU+bV9wYXRoICZsdDsgCiAgcmhzLm1fcGF0aDwvY29kZT4uPC9zcGFuPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ib29sIG9wZXJhdG9yJmx0Oz0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDsgcmhzKTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48aT5SZXR1cm5zOjwvaT4gPGNvZGU+bV9wYXRoICZsdDs9IAogIHJocy5tX3BhdGg8L2NvZGU+Ljwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+Ym9vbCBvcGVyYXRvciZndDsgKGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7IHJocyk7PC9zcGFuPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPm1fcGF0aCAmZ3Q7IAogIHJocy5tX3BhdGg8L2NvZGU+Ljwvc3Bhbj48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+Ym9vbCBvcGVyYXRvciZndDs9KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSZhbXA7IHJocyk7PC9zcGFuPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPm1fcGF0aCAmZ3Q7PSAKICByaHMubV9wYXRoPC9jb2RlPi48L3NwYW4+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJDbGFzcy1kaXJlY3RvcnlfaXRlcmF0b3IiPkNsYXNzIDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT48L2E+PC9oMz4KPHA+T2JqZWN0cyBvZiB0eXBlIDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gcHJvdmlkZSBzdGFuZGFyZCBsaWJyYXJ5IApjb21wbGlhbnQgaXRlcmF0aW9uIG92ZXIgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5LiBBbHNvIHNlZSBjbGFzcyA8Y29kZT4KPGEgaHJlZj0iI0NsYXNzLXJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiPnJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3I8L2E+PC9jb2RlPi48L3A+CjxwcmU+ICBuYW1lc3BhY2UgYm9vc3QKICB7CiAgICBuYW1lc3BhY2UgZmlsZXN5c3RlbQogICAgewogICAgICBjbGFzcyBkaXJlY3RvcnlfaXRlcmF0b3IKICAgICAgICA6IHB1YmxpYyBib29zdDo6aXRlcmF0b3JfZmFjYWRlJmx0OyBkaXJlY3RvcnlfaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0NsYXNzLWRpcmVjdG9yeV9lbnRyeSI+ZGlyZWN0b3J5X2VudHJ5PC9hPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyAmZ3Q7CiAgICAgIHsKICAgICAgcHVibGljOgogICAgICAgIC8vIDxhIGhyZWY9IiNkaXJlY3RvcnlfaXRlcmF0b3ItbWVtYmVycyI+bWVtYmVyIGZ1bmN0aW9uczwvYT4KCiAgICAgICAgZGlyZWN0b3J5X2l0ZXJhdG9yKCk7ICAvLyBjcmVhdGVzIHRoZSAmcXVvdDtlbmQmcXVvdDsgaXRlcmF0b3IKICAgICAgICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJmFtcDspOwogICAgICAgIGV4cGxpY2l0IGRpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBwYXRoJmFtcDsgcCk7CiAgICAgICAgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CiAgICAgICB+ZGlyZWN0b3J5X2l0ZXJhdG9yKCk7CgogICAgICAgIGRpcmVjdG9yeV9pdGVyYXRvciZhbXA7IG9wZXJhdG9yPShjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImYW1wOyk7CgogICAgICAgIGRpcmVjdG9yeV9pdGVyYXRvciZhbXA7IG9wZXJhdG9yKysoKTsKICAgICAgICBkaXJlY3RvcnlfaXRlcmF0b3ImYW1wOyBpbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgICAvLyBvdGhlciBtZW1iZXJzIGFzIHJlcXVpcmVkIGJ5CiAgICAgICAgLy8gIEMrKyBTdGQsIDI0LjEuMSBJbnB1dCBpdGVyYXRvcnMgW2lucHV0Lml0ZXJhdG9yc10KICAgICAgfTsKCiAgICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgfSAvLyBuYW1lc3BhY2UgYm9vc3Q8L3ByZT4KPHA+IDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gc2F0aXNmaWVzIHRoZSByZXF1aXJlbWVudHMgb2YgYW4gCmlucHV0IGl0ZXJhdG9yIChDKysgU3RkLCAyNC4yLjEsIElucHV0IGl0ZXJhdG9ycyBbaW5wdXQuaXRlcmF0b3JzXSkuPC9wPgo8cD5BIDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gcmVhZHMgc3VjY2Vzc2l2ZSBlbGVtZW50cyBmcm9tIHRoZSBkaXJlY3RvcnkgZm9yIAp3aGljaCBpdCB3YXMgY29uc3RydWN0ZWQsIGFzIGlmIGJ5IGNhbGxpbmcgPGk+UE9TSVg8L2k+Cjxjb2RlPgo8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3JlYWRkaXJfci5odG1sIj5yZWFkZGlyX3IoKTwvYT48L2NvZGU+LiBBZnRlciBhIDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gaXMgY29uc3RydWN0ZWQsIGFuZCBldmVyeSB0aW1lIAo8Y29kZT5vcGVyYXRvcisrPC9jb2RlPiBpcyBjYWxsZWQsIAppdCByZWFkcyBhIGRpcmVjdG9yeSBlbGVtZW50IGFuZCBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgaXQgaW4gYSBvYmplY3Qgb2YgdHlwZSA8Y29kZT4KPGEgaHJlZj0iI0NsYXNzLWRpcmVjdG9yeV9lbnRyeSI+ZGlyZWN0b3J5X2VudHJ5PC9hPjwvY29kZT4uIAo8Y29kZT5vcGVyYXRvcisrPC9jb2RlPiBpcyBub3QgZXF1YWxpdHkgcHJlc2VydmluZzsgdGhhdCBpcywgPGNvZGU+aSA9PSBqPC9jb2RlPiBkb2VzIG5vdCBpbXBseSB0aGF0Cjxjb2RlPisraSA9PSArK2o8L2NvZGU+LiA8L3A+CjxibG9ja3F1b3RlPgo8cD5bPGk+Tm90ZTo8L2k+IFRoZSBwcmFjdGljYWwgY29uc2VxdWVuY2Ugb2Ygbm90IHByZXNlcnZpbmcgZXF1YWxpdHkgaXMgdGhhdCBkaXJlY3RvcnkgaXRlcmF0b3JzIApjYW4gb25seSBiZSB1c2VkIGZvciBzaW5nbGUtcGFzcyBhbGdvcml0aG1zLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHA+SWYgdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5IGVsZW1lbnRzIGlzIHJlYWNoZWQsIHRoZSBpdGVyYXRvciBiZWNvbWVzIGVxdWFsIHRvIAp0aGUgZW5kIGl0ZXJhdG9yIHZhbHVlLiBUaGUgY29uc3RydWN0b3IgPGNvZGU+ZGlyZWN0b3J5X2l0ZXJhdG9yKCk8L2NvZGU+IAp3aXRoIG5vIGFyZ3VtZW50cyBhbHdheXMgY29uc3RydWN0cyBhbiBlbmQgaXRlcmF0b3Igb2JqZWN0LCB3aGljaCBpcyB0aGUgb25seSAKbGVnaXRpbWF0ZSBpdGVyYXRvciB0byBiZSB1c2VkIGZvciB0aGUgZW5kIGNvbmRpdGlvbi4gVGhlIHJlc3VsdCBvZiA8Y29kZT4Kb3BlcmF0b3IqPC9jb2RlPiBvbiBhbiBlbmQgaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIEZvciBhbnkgb3RoZXIgaXRlcmF0b3IgdmFsdWUgCmEgPGNvZGU+Y29uc3QgZGlyZWN0b3J5X2VudHJ5JmFtcDs8L2NvZGU+IGlzIHJldHVybmVkLiBUaGUgcmVzdWx0IG9mCjxjb2RlPm9wZXJhdG9yLSZndDs8L2NvZGU+IG9uIGFuIGVuZCBpdGVyYXRvciBpcyBub3QgZGVmaW5lZC4gRm9yIGFueSBvdGhlciBpdGVyYXRvciB2YWx1ZSBhIDxjb2RlPmNvbnN0IGRpcmVjdG9yeV9lbnRyeSo8L2NvZGU+IGlzIApyZXR1cm5lZC4gPC9wPgo8cD5Ud28gZW5kIGl0ZXJhdG9ycyBhcmUgYWx3YXlzIGVxdWFsLiBBbiBlbmQgaXRlcmF0b3IgaXMgbm90IGVxdWFsIHRvIGEgbm9uLWVuZCAKaXRlcmF0b3IuPC9wPgo8YmxvY2txdW90ZT4KPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNFMEUwRTAiPlRoZSBhYm92ZSB3b3JkaW5nIGlzIGJhc2VkIG9uIHRoZSAKU3RhbmRhcmQgTGlicmFyeSdzIGlzdHJlYW1faXRlcmF0b3Igd29yZGluZy48L3NwYW4+PC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8cD5UaGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIDxjb2RlPnBhdGgoKTwvY29kZT4gbWVtYmVyIG9mIHRoZSA8Y29kZT4KZGlyZWN0b3J5X2VudHJ5PC9jb2RlPiBvYmplY3Qgb2J0YWluZWQgYnkgZGVyZWZlcmVuY2luZyBhIDxjb2RlPgpkaXJlY3RvcnlfaXRlcmF0b3I8L2NvZGU+IGlzIGEgcmVmZXJlbmNlIHRvIGEgPGNvZGU+cGF0aDwvY29kZT4gCm9iamVjdCBjb21wb3NlZCBvZiB0aGUgZGlyZWN0b3J5IGFyZ3VtZW50IGZyb20gd2hpY2ggdGhlIGl0ZXJhdG9yIHdhcyAKY29uc3RydWN0ZWQgd2l0aCBmaWxlbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGVudHJ5IGFwcGVuZGVkIGFzIGlmIGJ5IDxjb2RlPgpvcGVyYXRvci89PC9jb2RlPi4gPC9wPgo8cD5EaXJlY3RvcnkgaXRlcmF0aW9uIHNoYWxsIG5vdCB5aWVsZCBkaXJlY3RvcnkgZW50cmllcyBmb3IgdGhlIGN1cnJlbnQgKDxpPmRvdDwvaT4pIAphbmQgcGFyZW50ICg8aT5kb3QgZG90PC9pPikgZGlyZWN0b3JpZXMuPC9wPgo8cD5UaGUgb3JkZXIgb2YgZGlyZWN0b3J5IGVudHJpZXMgb2J0YWluZWQgYnkgZGVyZWZlcmVuY2luZyBzdWNjZXNzaXZlIAppbmNyZW1lbnRzIG9mIGEgPGNvZGU+ZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPiBpcyB1bnNwZWNpZmllZC48L3A+CjxibG9ja3F1b3RlPgo8cD5bPGk+Tm90ZTo8L2k+IFByb2dyYW1zIHBlcmZvcm1pbmcgZGlyZWN0b3J5IGl0ZXJhdGlvbiBtYXkgd2lzaCB0byB0ZXN0IGlmIHRoZSAKcGF0aCBvYnRhaW5lZCBieSBkZXJlZmVyZW5jaW5nIGEgZGlyZWN0b3J5IGl0ZXJhdG9yIGFjdHVhbGx5IGV4aXN0cy4gSXQgY291bGQgYmUgCmEKc3ltYm9saWMgbGluayB0byBhIG5vbi1leGlzdGVudCBmaWxlLiBQcm9ncmFtcyByZWN1cnNpdmVseSAKd2Fsa2luZyBkaXJlY3RvcnkgdHJlZXMgZm9yIHB1cnBvc2VzIG9mIHJlbW92aW5nIGFuZCByZW5hbWluZyBlbnRyaWVzIG1heSB3aXNoIAp0byBhdm9pZCBmb2xsb3dpbmcgc3ltYm9saWMgbGlua3MuPC9wPgo8cD5JZiBhIGZpbGUgIGlzIHJlbW92ZWQgZnJvbSBvciBhZGRlZCB0byBhIGRpcmVjdG9yeSBhZnRlciB0aGUgCmNvbnN0cnVjdGlvbiBvZiBhIDxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gZm9yIHRoZSBkaXJlY3RvcnksIGl0IGlzIAp1bnNwZWNpZmllZCB3aGV0aGVyIG9yIG5vdCBzdWJzZXF1ZW50IGluY3JlbWVudGluZyBvZiB0aGUgaXRlcmF0b3Igd2lsbCBldmVyIApyZXN1bHQgaW4gYW4gaXRlcmF0b3Igd2hvc2UgdmFsdWUgaXMgdGhlIHJlbW92ZWQgb3IgYWRkZWQgZGlyZWN0b3J5IGVudHJ5LiBTZWUKPGk+UE9TSVg8L2k+Cjxjb2RlPgo8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3JlYWRkaXJfci5odG1sIj5yZWFkZGlyX3IoKTwvYT48L2NvZGU+LiA8aT4KLS1lbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxoND48YSBuYW1lPSJkaXJlY3RvcnlfaXRlcmF0b3ItbWVtYmVycyI+PGNvZGU+ZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPiBtZW1iZXJzPC9hPjwvaDQ+Cgo8cD48Y29kZT48YSBuYW1lPSJkaXJlY3RvcnlfaXRlcmF0b3ItZGVmYXVsdC1jdG9yIj5kaXJlY3RvcnlfaXRlcmF0b3I8L2E+KCk7PC9jb2RlPjwvcD4KCjxibG9ja3F1b3RlPgoKPHA+PGk+RWZmZWN0czo8L2k+IENvbnN0cnVjdHMgdGhlIGVuZCBpdGVyYXRvci48L3A+Cgo8cD48aT5UaHJvd3M6PC9pPiBOb3RoaW5nLjwvcD4KCjwvYmxvY2txdW90ZT4KCjxwcmU+PGNvZGU+ZXhwbGljaXQgPGEgbmFtZT0iZGlyZWN0b3J5X2l0ZXJhdG9yLWN0b3ItcGF0aCI+ZGlyZWN0b3J5X2l0ZXJhdG9yPC9hPig8L2NvZGU+Y29uc3QgcGF0aCZhbXA7IHA8Y29kZT4pOwpkaXJlY3RvcnlfaXRlcmF0b3IoPC9jb2RlPmNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYzxjb2RlPik7PC9jb2RlPjwvcHJlPgo8YmxvY2txdW90ZT4KCjxwPjxpPkVmZmVjdHM6PC9pPiBDb25zdHJ1Y3RzIGEgaXRlcmF0b3IgcmVwcmVzZW50aW5nIHRoZSBmaXJzdCAKZW50cnkgaW4gdGhlIGRpcmVjdG9yeSA8Y29kZT5wPC9jb2RlPiByZXNvbHZlcyB0bywgaWYgYW55OyBvdGhlcndpc2UsIHRoZSBlbmQgaXRlcmF0b3IuPC9wPgoKPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+Cgo8cD5bPGk+Tm90ZTo8L2k+IFRvIGl0ZXJhdGUgb3ZlciB0aGUgY3VycmVudCBkaXJlY3RvcnksIHVzZSA8Y29kZT4KZGlyZWN0b3J5X2l0ZXJhdG9yKCZxdW90Oy4mcXVvdDspPC9jb2RlPiByYXRoZXIgdGhhbiA8Y29kZT5kaXJlY3RvcnlfaXRlcmF0b3IoJnF1b3Q7JnF1b3Q7KTwvY29kZT4uCjxpPi0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5kaXJlY3RvcnlfaXRlcmF0b3ImYW1wOyA8YSBuYW1lPSJkaXJlY3RvcnlfaXRlcmF0b3ItaW5jcmVtZW50Ij5vcGVyYXRvcisrPC9hPigpOwpkaXJlY3RvcnlfaXRlcmF0b3ImYW1wOyBpbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KCjxwPjxpPkVmZmVjdHM6PC9pPiBBcyBzcGVjaWZpZWQgYnkgdGhlIEMrKyBTdGFuZGFyZCwgMjQuMS4xIElucHV0IGl0ZXJhdG9ycyBbaW5wdXQuaXRlcmF0b3JzXTwvcD4KCjxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT4qdGhpczwvY29kZT4uPC9wPgoKPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+Cgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJDbGFzcy1yZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIj5DbGFzcyA8Y29kZT5yZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPjwvYT48L2gzPgo8cD5PYmplY3RzIG9mIHR5cGUgPGNvZGU+ZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPiBwcm92aWRlIHN0YW5kYXJkIGxpYnJhcnkgCmNvbXBsaWFudCBpdGVyYXRpb24gb3ZlciB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnksIGluY2x1ZGluZyByZWN1cnNpb24gaW50byAKaXRzIHN1Yi1kaXJlY3Rvcmllcy48L3A+CjxwcmU+ICBuYW1lc3BhY2UgYm9vc3QKICB7CiAgICBuYW1lc3BhY2UgZmlsZXN5c3RlbQogICAgewogICAgICBjbGFzcyByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIDoKICAgICAgICBwdWJsaWMgaXRlcmF0b3ImbHQ7aW5wdXRfaXRlcmF0b3JfdGFnLCBkaXJlY3RvcnlfZW50cnkgJmd0OwogICAgICB7CiAgICAgIHB1YmxpYzoKCiAgICAgICAgLy8gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yCiAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpOwogICAgICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciZhbXA7KTsKICAgICAgICBleHBsaWNpdCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmYW1wOyBwKTsKICAgICAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7CiAgICAgICB+cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpOwoKICAgICAgICAvLyBvYnNlcnZlcnMKICAgICAgICBpbnQgbGV2ZWwoKSBjb25zdDsKICAgICAgICBib29sIG5vX3B1c2g8Y29kZT5fcmVxdWVzdDwvY29kZT4oKSBjb25zdDsKCiAgICAgICAgLy8gbW9kaWZpZXJzCiAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciZhbXA7IG9wZXJhdG9yPShjb25zdCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yJmFtcDspOwoKICAgICAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yJmFtcDsgb3BlcmF0b3IrKygpOwogICAgICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3ImYW1wOyBpbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOwoKICAgICAgICB2b2lkIHBvcCgpOwogICAgICAgIHZvaWQgbm9fcHVzaCgpOwoKICAgICAgICAvLyBvdGhlciBtZW1iZXJzIGFzIHJlcXVpcmVkIGJ5CiAgICAgICAgLy8gIEMrKyBTdGQsIDI0LjEuMiBJbnB1dCBpdGVyYXRvcnMgW2lucHV0Lml0ZXJhdG9yc10KCiAgICAgIHByaXZhdGU6CiAgICAgICAgaW50ICBtX2xldmVsOyA8Yj48aT4gICAgICAgICAgLy8gZm9yIGV4cG9zaXRpb24gb25seTwvaT48L2I+CiAgICAgICAgYm9vbCBtX25vXzxjb2RlPnB1c2hfcmVxdWVzdDwvY29kZT47ICA8Yj48aT4vLyBmb3IgZXhwb3NpdGlvbiBvbmx5PC9pPjwvYj4KICAgICAgfTsKCiAgICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgfSAvLyBuYW1lc3BhY2UgYm9vc3Q8L3ByZT4KPHA+VGhlIGJlaGF2aW9yIG9mIGEgPGNvZGU+cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4gaXMgdGhlIHNhbWUgCmFzIGEgPGNvZGU+ZGlyZWN0b3J5X2l0ZXJhdG9yPC9jb2RlPiB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC48L3A+Cjx1bD4KICA8bGk+V2hlbiBhbiBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeSBjdXJyZW50bHkgYmVpbmcgaXRlcmF0ZWQgCiAgb3Zlciwgb3Igd2hlbiA8Y29kZT5wb3AoKTwvY29kZT4gaXMgY2FsbGVkLCA8Y29kZT5tX2xldmVsPC9jb2RlPiBpcyAKICBkZWNyZW1lbnRlZCwgYW5kIGl0ZXJhdGlvbiBjb250aW51ZXMgd2l0aCB0aGUgcGFyZW50IGRpcmVjdG9yeSwgdW50aWwgdGhlIAogIGRpcmVjdG9yeSBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50IGlzIHJlYWNoZWQuPC9saT4KPC91bD4KPGJsb2NrcXVvdGU+CiAgPHA+WzxpPk5vdGU6PC9pPiBPbmUgb2YgdGhlIHVzZXMgb2YgPGNvZGU+bm9fcHVzaCgpPC9jb2RlPiBpcyB0byBwcmV2ZW50IAogIHVud2FudGVkIHJlY3Vyc2lvbiBpbnRvIGEgZGlyZWN0b3J5IHN5bWxpbmsuIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB0byAKICBwcmV2ZW50IGxvb3BzIG9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMuIDxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoKTs8L3ByZT4KPGJsb2NrcXVvdGU+Cgo8cD48aT5FZmZlY3RzOjwvaT4gQ29uc3RydWN0cyB0aGUgZW5kIGl0ZXJhdG9yLjwvcD4KCjxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgoKPC9ibG9ja3F1b3RlPgoKPHByZT48Y29kZT5leHBsaWNpdCA8L2NvZGU+cmVjdXJzaXZlXzxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcig8L2NvZGU+Y29uc3QgcGF0aCZhbXA7IHA8Y29kZT4pOwo8L2NvZGU+cmVjdXJzaXZlXzxjb2RlPmRpcmVjdG9yeV9pdGVyYXRvcig8L2NvZGU+Y29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjPGNvZGU+KTs8L2NvZGU+PC9wcmU+CjxibG9ja3F1b3RlPgoKPHA+PGk+RWZmZWN0czo8L2k+Jm5ic3A7IENvbnN0cnVjdHMgYSBpdGVyYXRvciByZXByZXNlbnRpbmcgdGhlIGZpcnN0IAplbnRyeSBpbiB0aGUgZGlyZWN0b3J5IDxjb2RlPnA8L2NvZGU+IHJlc29sdmVzIHRvLCBpZiBhbnk7IG90aGVyd2lzZSwgdGhlIGVuZCBpdGVyYXRvci48L3A+Cgo8cD48aT5Qb3N0Y29uZGl0aW9uczogPC9pPlVubGVzcyB0aGUgZW5kIGl0ZXJhdG9yIHdhcyBjb25zdHJ1Y3RlZCw8aT4gPC9pPjxjb2RlPgpsZXZlbCgpID09IDA8L2NvZGU+LCA8Y29kZT5ub19wdXNoX3JlcXVlc3QoKSA9PSBmYWxzZTwvY29kZT4uPC9wPgoKPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+Cgo8cD5bPGk+Tm90ZTo8L2k+IFRvIGl0ZXJhdGUgb3ZlciB0aGUgY3VycmVudCBkaXJlY3RvcnksIHVzZSA8Y29kZT5yZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKCZxdW90Oy4mcXVvdDspPC9jb2RlPiByYXRoZXIgdGhhbgo8Y29kZT5yZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKCZxdW90OyZxdW90Oyk8L2NvZGU+Lgo8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+aW50IGxldmVsKCkgY29uc3Q7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJlcXVpcmVzOjwvaT4gPGNvZGU+KnRoaXMgIT0gcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpPC9jb2RlPi48L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPm1fbGV2ZWw8L2NvZGU+LjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiBOb3RoaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgPGNvZGU+bm9fcHVzaF9yZXF1ZXN0PC9jb2RlPigpIGNvbnN0OzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXF1aXJlczo8L2k+IDxjb2RlPip0aGlzICE9IHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoKTwvY29kZT4uPC9wPgogIDxwPjxpPlJldHVybnM6PC9pPiA8Y29kZT5tX25vX3B1c2hfcmVxdWVzdDwvY29kZT4uPC9wPgogIDxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PGNvZGU+cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjwvY29kZT4mYW1wOyA8YSBuYW1lPSJyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yLWluY3JlbWVudCI+b3BlcmF0b3IrKzwvYT4oKTsKcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciZhbXA7IGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgoKPHA+PGk+RWZmZWN0czo8L2k+IEFzIHNwZWNpZmllZCBieSB0aGUgQysrIFN0YW5kYXJkLCAyNC4xLjEgSW5wdXQgaXRlcmF0b3JzIFtpbnB1dC5pdGVyYXRvcnNdLCAKZXhjZXB0IHRoYXQgaWYgPGNvZGU+KCp0aGlzKS0mZ3Q7aXNfZGlyZWN0b3J5KCkgJmFtcDsmYW1wOyAhbm9fcHVzaF9yZXF1ZXN0ZWQoKTwvY29kZT4gdGhlbiZuYnNwOyA8Y29kZT5tX2xldmVsPC9jb2RlPiAKaXMgaW5jcmVtZW50ZWQgYW5kIDxjb2RlPigqdGhpcyktJmd0O3BhdGgoKTwvY29kZT4gaXMgcmVjdXJzaXZlbHkgaXRlcmF0ZWQgaW50by48L3A+Cgo8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+IDxjb2RlPm5vX3B1c2hfcmVxdWVzdCgpID09IGZhbHNlPC9jb2RlPi48L3A+Cgo8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+KnRoaXM8L2NvZGU+LjwvcD4KCjxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgoKPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgcG9wKCk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJlcXVpcmVzOjwvaT4gPGNvZGU+KnRoaXMgIT0gcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpPC9jb2RlPi48L3A+CiAgPHA+PGk+RWZmZWN0czo8L2k+IElmIDxjb2RlPmxldmVsKCkgPT0gMDwvY29kZT4sIHNldCA8Y29kZT4qdGhpczwvY29kZT4gdG8gPGNvZGU+cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpPC9jb2RlPi4gCiAgT3RoZXJ3aXNlLCA8Y29kZT4tLW1fbGV2ZWw8L2NvZGU+LCBjZWFzZSBpdGVyYXRpb24gb2YgdGhlIGRpcmVjdG9yeSBjdXJyZW50bHkgYmVpbmcgCiAgaXRlcmF0ZWQgb3ZlciwgYW5kIGNvbnRpbnVlIGl0ZXJhdGlvbiBvdmVyIHRoZSBwYXJlbnQgZGlyZWN0b3J5LjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiBOb3RoaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgbm9fcHVzaCgpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXF1aXJlczo8L2k+IDxjb2RlPip0aGlzICE9IHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoKTwvY29kZT4uPC9wPgo8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+IDxjb2RlPm5vX3B1c2hfcmVxdWVzdCgpID09IHRydWU8L2NvZGU+LjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiBOb3RoaW5nLjwvcD4KICA8cD5bPGk+Tm90ZTo8L2k+IE9uZSBvZiB0aGUgdXNlcyBvZiA8Y29kZT5ub19wdXNoKCk8L2NvZGU+IGlzIHRvIHByZXZlbnQgCiAgdW53YW50ZWQgcmVjdXJzaW9uIGludG8gYSBkaXJlY3Rvcnkgc3ltbGluay4gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIAogIHByZXZlbnQgbG9vcHMgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4gPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJmaWxlX3N0YXR1cyI+Q2xhc3MgZmlsZV9zdGF0dXM8L2E+PC9oMz4KPHByZT4gIG5hbWVzcGFjZSBib29zdAogIHsKICAgIG5hbWVzcGFjZSBmaWxlc3lzdGVtCiAgICB7CiAgICAgIGNsYXNzIGZpbGVfc3RhdHVzCiAgICAgIHsKICAgICAgcHVibGljOgogICAgICAgIGZpbGVfc3RhdHVzKCk7CiAgICAgICAgZmlsZV9zdGF0dXMoY29uc3QgZmlsZV9zdGF0dXMmYW1wOyk7CiAgICAgICAgZXhwbGljaXQgZmlsZV9zdGF0dXMoZmlsZV90eXBlIHY9c3RhdHVzX2Vycm9yKTsKICAgICAgIH5maWxlX3N0YXR1cygpOwoKICAgICAgICA8YSBocmVmPSIjZmlsZV90eXBlIj5maWxlX3R5cGU8L2E+IHR5cGUoKSBjb25zdDsKICAgICAgICB2b2lkIHR5cGUoZmlsZV90eXBlIHYpOwogICAgICB9OwogICAgfSAvLyBuYW1lc3BhY2UgZmlsZXN5c3RlbQogIH0gLy8gbmFtZXNwYWNlIGJvb3N0PC9wcmU+CjxwPkFuIG9iamVjdCBvZiB0eXBlIDxjb2RlPmZpbGVfc3RhdHVzPC9jb2RlPiBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXR1cyBvZiBhIApmaWxlLiBUaGUgaW50ZXJuYWwgZm9ybSBvZiB0aGUgc3RvcmVkIGluZm9ybWF0aW9uIGlzIHVuc3BlY2lmaWVkLjwvcD4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+W05vdGU6IDwvaT5UaGUgY2xhc3MgbWF5IGJlIGV4dGVuZGVkIGluIHRoZSBmdXR1cmUgdG8gc3RvcmUgCiAgYWRkaXRpb25hbCBzdGF0dXMgaW5mb3JtYXRpb24uIDxpPi0tZW5kIG5vdGVdPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+TWVtYmVyczwvaDQ+CjxwcmU+ZXhwbGljaXQgZmlsZV9zdGF0dXMoPGEgaHJlZj0iI2ZpbGVfdHlwZSI+ZmlsZV90eXBlPC9hPiB2PXN0YXR1c19lcnJvcik7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6PC9pPiBTdG9yZXMgPGNvZGU+djwvY29kZT4uPC9wPgogIDxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+ZmlsZV90eXBlIHR5cGUoKSBjb25zdDs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczogPC9pPlRoZSBzdG9yZWQgPGEgaHJlZj0iI2ZpbGVfdHlwZSI+IDxjb2RlPmZpbGVfdHlwZTwvY29kZT4uPC9hPjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgdHlwZSg8YSBocmVmPSIjZmlsZV90eXBlIj5maWxlX3R5cGU8L2E+IHYpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4gU3RvcmVzIDxjb2RlPnY8L2NvZGU+LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzbHkgc3RvcmVkIAogIHZhbHVlLjwvcD4KPC9ibG9ja3F1b3RlPgo8aDM+PGEgbmFtZT0iT3BlcmF0aW9uYWwtZnVuY3Rpb25zIj5PcGVyYXRpb25hbCBmdW5jdGlvbnM8L2E+PC9oMz4KPHA+T3BlcmF0aW9uYWwgZnVuY3Rpb25zIHF1ZXJ5IG9yIG1vZGlmeSBmaWxlcywgaW5jbHVkaW5nIGRpcmVjdG9yaWVzLCBpbiBleHRlcm5hbCAKc3RvcmFnZS48L3A+CjxwIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPk9wZXJhdGlvbmFsIGZ1bmN0aW9ucyBhY2Nlc3MgYSBmaWxlIGJ5IHJlc29sdmluZyBhbiAKb2JqZWN0IG9mIGNsYXNzIDxjb2RlPnBhdGg8L2NvZGU+IHRvIGEgcGFydGljdWxhciBmaWxlIGluIGEgZmlsZSBoaWVyYXJjaHkuIFRoZSAKcGF0aCBpcyByZXNvbHZlZCBhcyBpZiBieSB0aGUgPGk+UE9TSVg8L2k+CjxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA0Lmh0bWwjdGFnXzA0XzExIj4KUGF0aG5hbWUgUmVzb2x1dGlvbjwvYT4gbWVjaGFuaXNtLjwvcD4KPHA+WzxpPk5vdGU6IDwvaT5CZWNhdXNlIGhhcmR3YXJlIGZhaWx1cmVzLCBuZXR3b3JrIGZhaWx1cmVzLAo8YSBocmVmPSIjUmFjZS1jb25kaXRpb24iPnJhY2UgY29uZGl0aW9uczwvYT4sIGFuZCBtYW55IApvdGhlciBraW5kcyBvZiBlcnJvcnMgb2NjdXIgZnJlcXVlbnRseSBpbiBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLCB1c2VycyBzaG91bGQgYmUgYXdhcmUgCnRoYXQgYW55IGZpbGVzeXN0ZW0gb3BlcmF0aW9uYWwgZnVuY3Rpb24sIG5vIG1hdHRlciBob3cgYXBwYXJlbnRseSBpbm5vY3VvdXMsIG1heSBlbmNvdW50ZXIgCmFuIGVycm9yLiZuYnNwO1NlZSA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj5FcnJvciByZXBvcnRpbmc8L2E+LiA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgo8aDQ+PGEgbmFtZT0iRnVuY3Rpb24tc3BlY2lmaWNhdGlvbnMiPk9wZXJhdGlvbmFsIGZ1bmN0aW9uIHNwZWNpZmljYXRpb25zPC9hPjwvaDQ+CjxwcmU+cGF0aCA8YSBuYW1lPSJhYnNvbHV0ZSI+YWJzb2x1dGU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBjb25zdCBwYXRoJmFtcDsgYmFzZT1jdXJyZW50X3BhdGgoKSk7PC9wcmU+CiAgPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IEEgcGF0aCBjb21wb3NlZCBhY2NvcmRpbmcgdG8gdG8gdGhlIAogIGZvbGxvd2luZyB0YWJsZTwvcD4KICA8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcmNvbG9yPSIjMTExMTExIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4mbmJzcDs8L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGI+PGNvZGU+cC5oYXNfcm9vdF9kaXJlY3RvcnkoKTwvY29kZT48L2I+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxiPjxjb2RlPiFwLmhhc19yb290X2RpcmVjdG9yeSgpPC9jb2RlPjwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxiPjxjb2RlPnAuaGFzX3Jvb3RfbmFtZSgpPC9jb2RlPjwvYj48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGNvZGU+cmV0dXJuIHA8L2NvZGU+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxjb2RlPnJldHVybiBwLnJvb3RfbmFtZSgpIC8gCiAgICAgIGFic29sdXRlKGJhc2UpLnJvb3RfZGlyZWN0b3J5KCk8YnI+CiAgICAgIC8gYWJzb2x1dGUoYmFzZSkucmVsYXRpdmVfcGF0aCgpIC8gcC5yZWxhdGl2ZV9wYXRoKCk8L2NvZGU+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48Yj48Y29kZT4hcC5oYXNfcm9vdF9uYW1lKCk8L2NvZGU+PC9iPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48Y29kZT5yZXR1cm4gYWJzb2x1dGUoYmFzZSkucm9vdF9uYW1lKCk8YnI+CiAgICAgIC8gcDwvY29kZT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciI+PGNvZGU+cmV0dXJuIGFic29sdXRlKGJhc2UpIC8gcDwvY29kZT48L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgogIDxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT4gRm9yIHRoZSByZXR1cm5lZCBwYXRoLCA8Y29kZT5ycCw8L2NvZGU+IDxjb2RlPgogIHJwLmlzX2Fic29sdXRlKCk8L2NvZGU+IGlzIHRydWUuPC9wPgogIDxwPjxpPlRocm93czo8L2k+IElmIDxjb2RlPmJhc2UuaXNfYWJzb2x1dGUoKTwvY29kZT4gaXMgdHJ1ZSwgdGhyb3dzIG9ubHkgaWYgCiAgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+dm9pZCBjb3B5X2ZpbGUoY29uc3QgcGF0aCZhbXA7IGZyb20sIGNvbnN0IHBhdGgmYW1wOyB0byk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6IDwvaT48Y29kZT5jb3B5X2ZpbGUoZnJvbSwgdG8sIAogIGNvcHlfb3B0aW9uOjpmYWlsX2lmX2V4aXN0cyk8L2NvZGU+LjwvcD4KICAKICA8cD48aT5UaHJvd3M6PC9pPiBBcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KICAKPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8sIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czogPC9pPjxjb2RlPmNvcHlfZmlsZShmcm9tLCB0bywgCiAgY29weV9vcHRpb246OmZhaWxfaWZfZXhpc3RzLCBlYyk8L2NvZGU+LjwvcD4KICAKICA8cD48aT5UaHJvd3M6PC9pPiBBcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KICAKPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgPGEgbmFtZT0iY29weV9maWxlIj5jb3B5X2ZpbGU8L2E+KGNvbnN0IHBhdGgmYW1wOyBmcm9tLCBjb25zdCBwYXRoJmFtcDsgdG8sIEJPT1NUX1NDT1BFRF9FTlVNKDxhIGhyZWY9IiNjb3B5X29wdGlvbiI+Y29weV9vcHRpb248L2E+KSBvcHRpb24pOwp2b2lkIDxhIG5hbWU9ImNvcHlfZmlsZTIiPmNvcHlfZmlsZTwvYT4oY29uc3QgcGF0aCZhbXA7IGZyb20sIGNvbnN0IHBhdGgmYW1wOyB0bywgQk9PU1RfU0NPUEVEX0VOVU0oPGEgaHJlZj0iI2NvcHlfb3B0aW9uIj5jb3B5X29wdGlvbjwvYT4pIG9wdGlvbiwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4gSWYgPGNvZGU+b3B0aW9uID09IGNvcHlfb3B0aW9uOjo8L2NvZGU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPjxjb2RlPmZhaWxfaWZfZXhpc3RzIAogICZhbXA7JmFtcDsgZXhpc3RzKHRvKTwvY29kZT4sIGFuIGVycm9yIGlzIHJlcG9ydGVkLiBPdGhlcndpc2UsIHQ8L3NwYW4+aGUgY29udGVudHMgYW5kIGF0dHJpYnV0ZXMgb2YgdGhlIGZpbGUgPGNvZGU+ZnJvbTwvY29kZT4gCiAgcmVzb2x2ZXMgdG8gYXJlIGNvcGllZCB0byB0aGUgZmlsZSA8Y29kZT50bzwvY29kZT4gcmVzb2x2ZXMgdG8uPC9wPgogIDxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+Ym9vbCA8YSBuYW1lPSJjcmVhdGVfZGlyZWN0b3JpZXMiPmNyZWF0ZV9kaXJlY3RvcmllczwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpib29sIDxhIG5hbWU9ImNyZWF0ZV9kaXJlY3RvcmllczIiPmNyZWF0ZV9kaXJlY3RvcmllczwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmVxdWlyZXM6PC9pPiA8Y29kZT5wLmVtcHR5KCkgfHwgPGJyPgogIGZvcmFsbCBweDogcHggPT0gcCB8fCBpc19wYXJlbnQocHgsIHApOiBpc19kaXJlY3RvcnkocHgpIHx8ICFleGlzdHMoIHB4ICk8L2NvZGU+CiAgPC9wPgogIDxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT4gPGNvZGU+aXNfZGlyZWN0b3J5KHApPC9jb2RlPjwvcD4KICA8cD48aT5SZXR1cm5zOjwvaT4gVGhlIHZhbHVlIG9mIDxjb2RlPiFleGlzdHMocCk8L2NvZGU+IHByaW9yIHRvIHRoZSAKICBlc3RhYmxpc2htZW50IG9mIHRoZSBwb3N0Y29uZGl0aW9uLjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiBBcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPmJvb2wgPGEgbmFtZT0iY3JlYXRlX2RpcmVjdG9yeSI+Y3JlYXRlX2RpcmVjdG9yeTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpib29sIDxhIG5hbWU9ImNyZWF0ZV9kaXJlY3RvcnkyIj5jcmVhdGVfZGlyZWN0b3J5PC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4gQXR0ZW1wdHMgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkgPGNvZGU+cDwvY29kZT4gcmVzb2x2ZXMgdG8sIAogIGFzIGlmIGJ5PGk+IFBPU0lYIDwvaT48Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL21rZGlyLmh0bWwiPm1rZGlyKCk8L2E+PC9jb2RlPiB3aXRoIGEgc2Vjb25kIGFyZ3VtZW50IG9mIFNfSVJXWFV8U19JUldYR3xTX0lSV1hPLiA8L3A+CiAgPHA+PGk+UG9zdGNvbmRpdGlvbjo8L2k+IDxjb2RlPmlzX2RpcmVjdG9yeShwKTwvY29kZT48L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnRydWU8L2NvZGU+IGlmIGEgbmV3IGRpcmVjdG9yeSB3YXMgY3JlYXRlZCwgb3RoZXJ3aXNlIAogIDxjb2RlPmZhbHNlPC9jb2RlPi48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+dm9pZCA8YSBuYW1lPSJjcmVhdGVfaGFyZF9saW5rIj5jcmVhdGVfaGFyZF9saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgdG8sIGNvbnN0IHBhdGgmYW1wOyBmcm9tKTsKdm9pZCA8YSBuYW1lPSJjcmVhdGVfaGFyZF9saW5rMiI+Y3JlYXRlX2hhcmRfbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHRvLCBjb25zdCBwYXRoJmFtcDsgZnJvbSwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IEVzdGFibGlzaGVzIHRoZSBwb3N0Y29uZGl0aW9uLCBhcyBpZiBieQogIDwvc3Bhbj4gPGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlBPU0lYPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgPC9zcGFuPiA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL2xpbmsuaHRtbCI+CiAgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmxpbmsoKTwvc3Bhbj48L2E+PC9jb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4uPC9zcGFuPjwvcD4KICA8cD48aT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+UG9zdGNvbmRpdGlvbnM6PC9zcGFuPjwvaT48L3A+CiAgPHVsPgogICAgPGxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4mbmJzcDs8L3NwYW4+PGNvZGU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmV4aXN0cyh0bykgJmFtcDsmYW1wOyAKICAgIGV4aXN0cyhmcm9tKSAmYW1wOyZhbXA7IGVxdWl2YWxlbnQodG8sIAogICAgZnJvbSk8L3NwYW4+PC9jb2RlPjwvbGk+CiAgICA8bGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkKICAgIDxjb2RlPnRvPC9jb2RlPiByZXNvbHZlcyB0byBhcmUgdW5jaGFuZ2VkLjwvc3Bhbj48L2xpPgogIDwvdWw+CiAgPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CiAgPHA+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPls8L3NwYW4+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPk5vdGU6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IAogIFNvbWUgPGI+b3BlcmF0aW5nIHN5c3RlbXM8L2I+IGRvIG5vdCBzdXBwb3J0IGhhcmQgbGlua3MgYXQgYWxsIG9yIHN1cHBvcnQgCiAgdGhlbSBvbmx5IGZvciByZWd1bGFyIGZpbGVzLiBTb21lIDxiPmZpbGUgc3lzdGVtczwvYj4gZG8gbm90IHN1cHBvcnQgaGFyZCAKICBsaW5rcyByZWdhcmRsZXNzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIC0gdGhlIEZBVCBzeXN0ZW0gdXNlZCBvbiBmbG9wcHkgCiAgZGlzY3MsIG1lbW9yeSBjYXJkcyBhbmQgZmxhc2ggZHJpdmVzLCBmb3IgZXhhbXBsZS4gU29tZSBmaWxlIHN5c3RlbXMgbGltaXQgdGhlIAogIG51bWJlciBvZiBsaW5rcyBwZXIgZmlsZS4gVGh1cyBoYXJkIGxpbmtzIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgdGhlc2UgCiAgc2l0dWF0aW9ucyBhcmUgbm90IGNvbmNlcm5zLCBvciBpZiB3b3JrYXJvdW5kcyBhcmUgcHJvdmlkZWQuIDwvc3Bhbj4gPGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPi0tIGVuZCBub3RlPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+XTwvc3Bhbj48L3A+CiAgPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj52b2lkIDxhIG5hbWU9ImNyZWF0ZV9zeW1saW5rIj5jcmVhdGVfc3ltbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHRvLCBjb25zdCBwYXRoJmFtcDsgZnJvbSk7CnZvaWQgPGEgbmFtZT0iY3JlYXRlX3N5bWxpbmsyIj5jcmVhdGVfc3ltbGluazwvYT4oY29uc3QgcGF0aCZhbXA7IHRvLCBjb25zdCBwYXRoJmFtcDsgZnJvbSwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGUgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPkVmZmVjdHM6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IAogIEVzdGFibGlzaGVzIHRoZSBwb3N0Y29uZGl0aW9uLCBhcyBpZiBieSA8L3NwYW4+PGk+CiAgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlBPU0lYPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgPC9zcGFuPjxjb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3N5bWxpbmsuaHRtbCI+CiAgc3ltbGluaygpPC9hPjwvc3Bhbj48L2NvZGU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPi48L3NwYW4+PC9wPgogIDxwIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48aT4KICBQb3N0Y29uZGl0aW9uczo8L2k+IDxjb2RlPmZyb208L2NvZGU+IHJlc29sdmVzIHRvIGEgc3ltYm9saWMgbGluayBmaWxlIHRoYXQgCiAgY29udGFpbnMgYW4gdW5zcGVjaWZpZWQgcmVwcmVzZW50YXRpb24gb2YgPGNvZGU+dG88L2NvZGU+Ljwvc3Bhbj48L3A+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CiAgPHA+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPls8L3NwYW4+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPk5vdGU6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IAogIFNvbWUgPGI+b3BlcmF0aW5nIHN5c3RlbXM8L2I+IGRvIG5vdCBzdXBwb3J0IHN5bWJvbGljIGxpbmtzIGF0IGFsbCBvciBzdXBwb3J0IAogIHRoZW0gb25seSBmb3IgcmVndWxhciBmaWxlcy4gV2luZG93cyBwcmlvciB0byBWaXN0YSwgZm9yIGV4YW1wbGUsIGRpZCBub3QgCiAgc3VwcG9ydCBzeW1ib2xpYyBsaW5rcy4gCiAgU29tZSA8Yj5maWxlIHN5c3RlbXM8L2I+IGRvIG5vdCAKICBzdXBwb3J0IAogIHN5bWJvbGljIGxpbmtzIHJlZ2FyZGxlc3Mgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gLSB0aGUgRkFUIHN5c3RlbSB1c2VkIG9uIGZsb3BweSBkaXNjcywgbWVtb3J5IGNhcmRzIGFuZCBmbGFzaCAKICBkcml2ZXMsIAogIGZvciBleGFtcGxlLiBUaHVzIHN5bWJvbGljIGxpbmtzIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgdGhlc2Ugc2l0dWF0aW9ucyBhcmUgCiAgbm90IGNvbmNlcm5zLCBvciBpZiB3b3JrYXJvdW5kcyBhcmUgcHJvdmlkZWQuIDwvc3Bhbj4gPGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPi0tIGVuZCBub3RlPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+XTwvc3Bhbj48L3A+CiAgPC9ibG9ja3F1b3RlPgo8cHJlPnBhdGggPGEgbmFtZT0iY3VycmVudF9wYXRoIj5jdXJyZW50X3BhdGg8L2E+KCk7CnBhdGggPGEgbmFtZT0iY3VycmVudF9wYXRoMiI+Y3VycmVudF9wYXRoPC9hPihzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiBUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBwYXRoLCBhcyBpZiBieSA8aT5QT1NJWDwvaT4KICA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL2dldGN3ZC5odG1sIj4KICBnZXRjd2QoKTwvYT48L2NvZGU+LiA8Y29kZT5pc19hYnNvbHV0ZSgpPC9jb2RlPiBpcyB0cnVlIGZvciB0aGUgcmV0dXJuZWQgcGF0aC48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CiAgPHA+WzxpPk5vdGU6IDwvaT5UaGUgPGNvZGU+CiAgY3VycmVudF9wYXRoKCk8L2NvZGU+IG5hbWUgd2FzIGNob3NlbiB0byBlbXBoYXNpemUgdGhhdCB0aGUgcmV0dXJuIGlzIGEgCiAgcGF0aCwgbm90IGp1c3QgYSBzaW5nbGUgZGlyZWN0b3J5IG5hbWUuPC9wPgogIDxwPlRoZSBjdXJyZW50IHBhdGggYXMgcmV0dXJuZWQgYnkgbWFueSBvcGVyYXRpbmcgc3lzdGVtcyBpcyBhIGRhbmdlcm91cyAKICBnbG9iYWwgdmFyaWFibGUuIEl0IG1heSBiZSBjaGFuZ2VkIHVuZXhwZWN0ZWRseSBieSBhIHRoaXJkLXBhcnR5IG9yIHN5c3RlbSAKICBsaWJyYXJ5IGZ1bmN0aW9ucywgb3IgYnkgYW5vdGhlciB0aHJlYWQuJm5ic3A7IDxpPi0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT52b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJmFtcDsgcCk7CnZvaWQgY3VycmVudF9wYXRoKGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5FZmZlY3RzOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiAKICBFc3RhYmxpc2hlcyB0aGUgcG9zdGNvbmRpdGlvbiwgYXMgaWYgYnkgPC9zcGFuPjxpPgogIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5QT1NJWDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogIDwvc3Bhbj48Y29kZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Z1bmN0aW9ucy9jaGRpci5odG1sIj4KICBjaGRpcigpPC9hPjwvc3Bhbj48L2NvZGU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPi48L3NwYW4+PC9wPgo8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+IDxjb2RlPmVxdWl2YWxlbnQocCwgY3VycmVudF9wYXRoKCkpPC9jb2RlPi48L3A+CjxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgo8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CiAgPHA+WzxpPk5vdGU6IDwvaT5UaGUgY3VycmVudCBwYXRoIGZvciBtYW55IG9wZXJhdGluZyBzeXN0ZW1zIGlzIGEgZGFuZ2Vyb3VzIAogIGdsb2JhbCBzdGF0ZS4gSXQgbWF5IGJlIGNoYW5nZWQgdW5leHBlY3RlZGx5IGJ5IGEgdGhpcmQtcGFydHkgb3Igc3lzdGVtIAogIGxpYnJhcnkgZnVuY3Rpb25zLCBvciBieSBhbm90aGVyIHRocmVhZC4mbmJzcDsgPGk+LS0gZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ib29sIDxhIG5hbWU9ImV4aXN0cyI+ZXhpc3RzPC9hPihmaWxlX3N0YXR1cyBzKTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5SZXR1cm5zOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogIDxjb2RlPnN0YXR1c19rbm93bihzKSAmYW1wOyZhbXA7IHMudHlwZSgpICE9IGZpbGVfbm90X2ZvdW5kPC9jb2RlPjwvc3Bhbj48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gTm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxhIG5hbWU9ImV4aXN0czIiPmV4aXN0czwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpib29sIDxhIG5hbWU9ImV4aXN0czMiPmV4aXN0czwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPmV4aXN0cyhzdGF0dXMocCkpPC9jb2RlPiBvciA8Y29kZT5leGlzdHMoc3RhdHVzKHAsIGVjKSk8L2NvZGU+LCAKICByZXNwZWN0aXZlbHkuPC9wPgo8cD48aT5UaHJvd3M6PC9pPiA8Y29kZT5maWxlc3lzdGVtX2Vycm9yPC9jb2RlPjsgb3ZlcmxvYWQgd2l0aCA8Y29kZT5lcnJvcl9jb2RlJmFtcDs8L2NvZGU+IHRocm93cyAKbm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48Y29kZT5ib29sIDxhIG5hbWU9ImVxdWl2YWxlbnQiPmVxdWl2YWxlbnQ8L2E+KGNvbnN0IHBhdGgmYW1wOyBwMSwgY29uc3QgcGF0aCZhbXA7IHAyKTsKYm9vbCA8YSBuYW1lPSJlcXVpdmFsZW50MiI+ZXF1aXZhbGVudDwvYT4oY29uc3QgcGF0aCZhbXA7IHAxLCBjb25zdCBwYXRoJmFtcDsgcDIsIHN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTs8L2NvZGU+PC9wcmU+CjxibG9ja3F1b3RlIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPgogIDxwIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPjxpPkVmZmVjdHM6PC9pPiBEZXRlcm1pbmVzIDxjb2RlPmZpbGVfc3RhdHVzIHMxPC9jb2RlPiAKICBhbmQgPGNvZGU+czI8L2NvZGU+LCBhcyBpZiBieSA8Y29kZT5zdGF0dXMocDEpPC9jb2RlPiBhbmQmbmJzcDsgPGNvZGU+c3RhdHVzKHAyKTwvY29kZT4sIAogIHJlc3BlY3RpdmVseS48L3A+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPnRydWU8L2NvZGU+LCBpZiA8Y29kZT5zZjEgPT0gCiAgc2YyPC9jb2RlPiBhbmQgPGNvZGU+cDE8L2NvZGU+IGFuZCA8Y29kZT5wMjwvY29kZT4gcmVzb2x2ZSB0byB0aGUgc2FtZSBmaWxlIAogIHN5c3RlbSBlbnRpdHksIGVsc2UgPGNvZGU+ZmFsc2U8L2NvZGU+LjwvcD4KICA8YmxvY2txdW90ZT4KICA8cCBzdHlsZT0iZm9udC1zaXplOiAxMHB0Ij5Ud28gcGF0aHMgYXJlIGNvbnNpZGVyZWQgdG8gcmVzb2x2ZSB0byB0aGUgc2FtZSAKICBmaWxlIHN5c3RlbSBlbnRpdHkgaWYgdHdvIGNhbmRpZGF0ZSBlbnRpdGllcyByZXNpZGUgb24gdGhlIHNhbWUgZGV2aWNlIGF0IHRoZSAKICBzYW1lIGxvY2F0aW9uLiBUaGlzIGlzIGRldGVybWluZWQgYXMgaWYgYnkgdGhlIHZhbHVlcyBvZiB0aGUgPGk+UE9TSVg8L2k+CiAgPGNvZGU+CiAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+CiAgc3RhdDwvYT48L2NvZGU+IHN0cnVjdHVyZTxjb2RlPiw8L2NvZGU+IG9idGFpbmVkIGFzIGlmIGJ5IDxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvc3RhdC5odG1sIj4KICBzdGF0KCk8L2E+PC9jb2RlPiBmb3IgdGhlIHR3byBwYXRocywgaGF2aW5nIGVxdWFsIDxjb2RlPnN0X2RldjwvY29kZT4gdmFsdWVzIAogIGFuZCBlcXVhbCA8Y29kZT5zdF9pbm88L2NvZGU+IHZhbHVlcy48L3A+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+WzxpPk5vdGU6PC9pPiA8aT5QT1NJWDwvaT4gcmVxdWlyZXMgdGhhdCA8aT4mcXVvdDtzdF9kZXY8L2k+IAogIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIExvY2FsIEFyZWEgTmV0d29yayZxdW90Oy4gQ29uc2VydmF0aXZlIDxpPlBPU0lYPC9pPiAKICBpbXBsZW1lbnRhdGlvbnMgbWF5IGFsc28gd2lzaCB0byBjaGVjayBmb3IgZXF1YWwgPGNvZGU+c3Rfc2l6ZTwvY29kZT4gYW5kCiAgPGNvZGU+c3RfbXRpbWU8L2NvZGU+IHZhbHVlcy4gPGk+V2luZG93czwvaT4gaW1wbGVtZW50YXRpb25zIG1heSB1c2UgPGNvZGU+CiAgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKTwvY29kZT4gYXMgYSBzdXJyb2dhdGUgZm9yIDxjb2RlPnN0YXQoKTwvY29kZT4sIAogIGFuZCBjb25zaWRlciAmcXVvdDtzYW1lJnF1b3Q7IHRvIGJlIGVxdWFsIHZhbHVlcyBmb3IgPGNvZGU+ZHdWb2x1bWVTZXJpYWxOdW1iZXI8L2NvZGU+LAogIDxjb2RlPm5GaWxlSW5kZXhIaWdoPC9jb2RlPiwgPGNvZGU+bkZpbGVJbmRleExvdzwvY29kZT4sIDxjb2RlPm5GaWxlU2l6ZUhpZ2g8L2NvZGU+LAogIDxjb2RlPm5GaWxlU2l6ZUxvdzwvY29kZT4sIDxjb2RlPmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lPC9jb2RlPiwgYW5kCiAgPGNvZGU+ZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lPC9jb2RlPi4gPGk+LS0gZW5kIG5vdGU8L2k+XTwvcD4KICA8L2Jsb2NrcXVvdGU+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdCI+PGk+VGhyb3dzOjwvaT4gPGNvZGU+ZmlsZXN5c3RlbV9lcnJvcjwvY29kZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+CiAgPC9zcGFuPmlmIDxjb2RlPighZXhpc3RzKHMxKSAmYW1wOyZhbXA7ICFleGlzdHMoczIpKSB8fCAoaXNfb3RoZXIoczEpICZhbXA7JmFtcDsgaXNfb3RoZXIoczIpKTwvY29kZT4sIAogIG90aGVyd2lzZSBhcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAiPnVpbnRtYXhfdDwvc3Bhbj4gPGEgbmFtZT0iZmlsZV9zaXplIj5maWxlX3NpemU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTs8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgIj4KdWludG1heF90PC9zcGFuPiA8YSBuYW1lPSJmaWxlX3NpemUyIj5maWxlX3NpemU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRjAwIj5SZW1hcmtzOiA8L3NwYW4+PC9wPgogIDxwPjxpPlJldHVybnM6PC9pPiBJZiA8Y29kZT5leGlzdHMocCkgJmFtcDsmYW1wOyBpc19yZWd1bGFyX2ZpbGUocCk8L2NvZGU+LCB0aGUgc2l6ZSAKICA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgIj5pbiBieXRlczwvc3Bhbj4gCiAgb2YgdGhlIGZpbGUgPGNvZGU+cDwvY29kZT4gcmVzb2x2ZXMgdG8sIGRldGVybWluZWQgYXMgaWYgYnkgdGhlIHZhbHVlIG9mIAogIHRoZSA8aT5QT1NJWDwvaT4gPGNvZGU+CiAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+c3RhdDwvYT48L2NvZGU+IHN0cnVjdHVyZSBtZW1iZXIgPGNvZGU+c3Rfc2l6ZTwvY29kZT4gCiAgb2J0YWluZWQgYXMgaWYgYnkgPGk+UE9TSVg8L2k+IDxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvc3RhdC5odG1sIj5zdGF0KCk8L2E+PC9jb2RlPi4gCiAgT3RoZXJ3aXNlLCA8Y29kZT5zdGF0aWNfY2FzdCZsdDt1aW50bWF4X3QmZ3Q7KC0xKTwvY29kZT4uPC9wPgogIDxwIHN0eWxlPSJmb250LXNpemU6IDEwcHQiPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmJvb2wgPC9zcGFuPjxjb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48YSBuYW1lPSJpc19kaXJlY3RvcnkiPmlzX2RpcmVjdG9yeTwvYT48L3NwYW4+PC9jb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4oZmlsZV9zdGF0dXMgcyk7PC9zcGFuPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+UmV0dXJuczo8L3NwYW4+PC9pPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4gPC9zcGFuPgogIDxjb2RlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5zLnR5cGUoKSA9PSBkaXJlY3RvcnlfZmlsZTwvc3Bhbj48L2NvZGU+PC9wPgogIDxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PGNvZGU+Ym9vbCA8YSBuYW1lPSJpc19kaXJlY3RvcnkyIj5pc19kaXJlY3Rvcnk8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTsKYm9vbCA8YSBuYW1lPSJpc19kaXJlY3RvcnkzIj5pc19kaXJlY3Rvcnk8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9jb2RlPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cCBkaXI9Imx0ciI+PGk+UmV0dXJuczo8L2k+IDxjb2RlPmlzX2RpcmVjdG9yeShzdGF0dXMocCkpPC9jb2RlPiBvciA8Y29kZT5pc19kaXJlY3Rvcnkoc3RhdHVzKHAsIGVjKSk8L2NvZGU+LCAKICByZXNwZWN0aXZlbHkuPC9wPgo8cD48aT5UaHJvd3M6PC9pPiA8Y29kZT5maWxlc3lzdGVtX2Vycm9yPC9jb2RlPjsgb3ZlcmxvYWQgd2l0aCA8Y29kZT5lcnJvcl9jb2RlJmFtcDs8L2NvZGU+IHRocm93cyAKbm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48Y29kZT5ib29sIDxhIG5hbWU9ImlzX2VtcHR5Ij5pc19lbXB0eTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpib29sIDxhIG5hbWU9ImlzX2VtcHR5MiI+aXNfZW1wdHk8L2E+PC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvY29kZT48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czo8L2k+IERldGVybWluZXMgPGNvZGU+ZmlsZV9zdGF0dXMgczwvY29kZT4sIGFzIGlmIGJ5IDxjb2RlPgogIHN0YXR1cyhwLCBlYyk8L2NvZGU+LjwvcD4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+aXNfZGlyZWN0b3J5KHMpPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPyAKICBkaXJlY3RvcnlfaXRlcmF0b3IocCkgPT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCk8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA6IGZpbGVfc2l6ZShwKSA9PSAwOzwvY29kZT48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxjb2RlPjxhIG5hbWU9ImlzX3JlZ3VsYXJfZmlsZSI+aXNfcmVndWxhcl9maWxlPC9hPjwvY29kZT4oZmlsZV9zdGF0dXMgcyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPgogIDxjb2RlPnMudHlwZSgpID09IHJlZ3VsYXJfZmlsZTwvY29kZT48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gTm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48Y29kZT5ib29sIDxhIG5hbWU9ImlzX3JlZ3VsYXJfZmlsZTIiPmlzX3JlZ3VsYXJfZmlsZTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOzwvY29kZT48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPmlzX3JlZ3VsYXJfZmlsZShzdGF0dXMocCkpPC9jb2RlPi48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gPGNvZGU+ZmlsZXN5c3RlbV9lcnJvcjwvY29kZT4gCiAgaWYgPGNvZGU+c3RhdHVzKHApPC9jb2RlPiB3b3VsZCB0aHJvdyA8Y29kZT5maWxlc3lzdGVtX2Vycm9yLjwvY29kZT48L3A+CiAgPC9ibG9ja3F1b3RlPgo8cHJlPjxjb2RlPmJvb2wgPGEgbmFtZT0iaXNfcmVndWxhcl9maWxlMyI+aXNfcmVndWxhcl9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvY29kZT48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czo8L2k+IFNldHMgPGNvZGU+ZWM8L2NvZGU+IGFzIGlmIGJ5IDxjb2RlPnN0YXR1cyhwLCBlYyk8L2NvZGU+LiBbPGk+Tm90ZTo8L2k+CiAgICAgIDxjb2RlPnN0YXR1c19lcnJvcjwvY29kZT4sCiAgICAgIDxjb2RlPmZpbGVfbm90X2ZvdW5kPC9jb2RlPiAKICBhbmQKICAgICAgPGNvZGU+dHlwZV91bmtub3duPC9jb2RlPiAKICBjYXNlcyBzZXQgPGNvZGU+ZWM8L2NvZGU+IAogIHRvIGVycm9yIHZhbHVlcy4gVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBjYXNlcywgY2FsbCB0aGUgPGNvZGU+CiAgc3RhdHVzPC9jb2RlPiAKICBmdW5jdGlvbiBkaXJlY3RseS4gPGk+LS0gZW5kIAogIG5vdGU8L2k+XSA8L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPmlzX3JlZ3VsYXJfZmlsZShzdGF0dXMocCwgZWMpKTwvY29kZT4uPC9wPgogIDxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPmJvb2wgPGEgbmFtZT0iaXNfb3RoZXIiPmlzX290aGVyPC9hPihmaWxlX3N0YXR1cyBzKTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5SZXR1cm5zOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogIDxjb2RlPnJldHVybiBleGlzdHMocykgJmFtcDsmYW1wOyAhaXNfcmVndWxhcl9maWxlKHMpICZhbXA7JmFtcDsgIWlzX2RpcmVjdG9yeShzKSAmYW1wOyZhbXA7ICFpc19zeW1saW5rKHMpPC9jb2RlPjwvc3Bhbj48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gTm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48Y29kZT5ib29sIDxhIG5hbWU9ImlzX290aGVyMiI+aXNfb3RoZXI8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTsKYm9vbCA8YSBuYW1lPSJpc19vdGhlcjMiPmlzX290aGVyPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvY29kZT48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+IDxjb2RlPmlzX290aGVyKHN0YXR1cyhwKSk8L2NvZGU+IG9yIDxjb2RlPmlzX290aGVyKHN0YXR1cyhwLCBlYykpPC9jb2RlPiwgCiAgcmVzcGVjdGl2ZWx5LjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiA8Y29kZT5maWxlc3lzdGVtX2Vycm9yPC9jb2RlPjsgb3ZlcmxvYWQgd2l0aCA8Y29kZT5lcnJvcl9jb2RlJmFtcDs8L2NvZGU+IHRocm93cyAKICBub3RoaW5nLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ib29sIDxhIG5hbWU9ImlzX3N5bWxpbmsiPmlzX3N5bWxpbms8L2E+KGZpbGVfc3RhdHVzIHMpOzwvc3Bhbj48L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPlJldHVybnM6PC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+IDwvc3Bhbj4KICA8Y29kZT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+cy50eXBlKCkgPT0gc3ltbGlua19maWxlPC9zcGFuPjwvY29kZT48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gTm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT48Y29kZT5ib29sIDxhIG5hbWU9ImlzX3N5bWxpbmsyIj5pc19zeW1saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CmJvb2wgPGEgbmFtZT0iaXNfc3ltbGluazMiPmlzX3N5bWxpbms8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9jb2RlPjwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gPGNvZGU+aXNfc3ltbGluayhzeW1saW5rX3N0YXR1cyhwKSk8L2NvZGU+IG9yIDxjb2RlPmlzX3N5bWxpbmsoc3ltbGlua19zdGF0dXMocCwgZWMpKTwvY29kZT4sIAogIHJlc3BlY3RpdmVseS48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gPGNvZGU+ZmlsZXN5c3RlbV9lcnJvcjwvY29kZT47IG92ZXJsb2FkIHdpdGggPGNvZGU+ZXJyb3JfY29kZSZhbXA7PC9jb2RlPiB0aHJvd3MgCiAgbm90aGluZy48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5zdGQ6OnRpbWVfdCA8YSBuYW1lPSJsYXN0X3dyaXRlX3RpbWUiPmxhc3Rfd3JpdGVfdGltZTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpzdGQ6OnRpbWVfdCA8YSBuYW1lPSJsYXN0X3dyaXRlX3RpbWUyIj5sYXN0X3dyaXRlX3RpbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwPGNvZGU+LCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYzwvY29kZT4pOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5SZXR1cm5zOjwvaT4gVGhlIHRpbWUgb2YgbGFzdCBkYXRhIG1vZGlmaWNhdGlvbiBvZiA8Y29kZT5wPC9jb2RlPiwgZGV0ZXJtaW5lZCBhcyBpZiBieSB0aGUgCiAgdmFsdWUgb2YgdGhlIDxpPlBPU0lYPC9pPiA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvYmFzZWRlZnMvc3lzL3N0YXQuaC5odG1sIj5zdGF0PC9hPjwvY29kZT4gc3RydWN0dXJlIG1lbWJlciA8Y29kZT5zdF9tdGltZTwvY29kZT4mbmJzcDsgb2J0YWluZWQgCiAgYXMgaWYgYnkgPGk+UE9TSVg8L2k+IDxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvc3RhdC5odG1sIj5zdGF0KCk8L2E+PC9jb2RlPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT52b2lkIDxhIG5hbWU9Imxhc3Rfd3JpdGVfdGltZTMiPmxhc3Rfd3JpdGVfdGltZTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lKTsKdm9pZCA8YSBuYW1lPSJsYXN0X3dyaXRlX3RpbWU0Ij5sYXN0X3dyaXRlX3RpbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBjb25zdCBzdGQ6OnRpbWVfdCBuZXdfdGltZTxjb2RlPiwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWM8L2NvZGU+KTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czo8L2k+IFNldHMgdGhlIHRpbWUgb2YgbGFzdCBkYXRhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZmlsZSAKICByZXNvbHZlZCB0byBieSA8Y29kZT5wPC9jb2RlPiAKICB0byA8Y29kZT5uZXdfdGltZTwvY29kZT4sIGFzIGlmIGJ5IDxpPlBPU0lYPC9pPiA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3N0YXQuaHRtbCI+c3RhdCgpPC9hPjwvY29kZT4gCiAgZm9sbG93ZWQgYnkgPGk+UE9TSVg8L2k+CiAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Z1bmN0aW9ucy91dGltZS5odG1sIj4KICA8Y29kZT51dGltZSgpPC9jb2RlPjwvYT4uPC9wPgogIDxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgogIDxwPls8aT5Ob3RlOjwvaT4gQSBwb3N0Y29uZGl0aW9uIG9mIDxjb2RlPmxhc3Rfd3JpdGVfdGltZShwKSA9PSAKICBuZXdfdGltZTwvY29kZT4gaXMgbm90IHNwZWNpZmllZCBzaW5jZSBpdCBtaWdodCBub3QgaG9sZCBmb3IgZmlsZSBzeXN0ZW1zIAogIHdpdGggY29hcnNlIHRpbWUgZ3JhbnVsYXJpdHkuIDxpPi0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIDxhIG5hbWU9InJlYWRfc3ltbGluayI+cmVhZF9zeW1saW5rPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CnBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwIGRpcj0ibHRyIj48aT5SZXR1cm5zOjwvaT4mbmJzcDsgSWYgPGNvZGU+cDwvY29kZT4gcmVzb2x2ZXMgdG8gYSBzeW1ib2xpYyAKICBsaW5rLCBhIDxjb2RlPnBhdGg8L2NvZGU+IG9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiB0aGF0IHN5bWJvbGljIAogIGxpbmsuIE90aGVyd2lzZSBhbiBlbXB0eSA8Y29kZT5wYXRoPC9jb2RlPiBvYmplY3QuPC9wPgogIDxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uIFs8aT5Ob3RlOjwvaT4gSXQgaXMgYW4gZXJyb3IgaWYgPGNvZGU+cDwvY29kZT4gZG9lcyBub3QgCiAgcmVzb2x2ZSB0byBhIHN5bWJvbGljIGxpbmsuIDxpPi0tIGVuZCBub3RlPC9pPl08L3A+CjwvYmxvY2txdW90ZT4KPHByZT5ib29sIDxhIG5hbWU9InJlbW92ZSI+cmVtb3ZlPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CmJvb2wgPGEgbmFtZT0icmVtb3ZlMiI+cmVtb3ZlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4mbmJzcDsgSWYgPGNvZGU+ZXhpc3RzKHN5bWxpbmtfc3RhdHVzKHAsZWMpKTwvY29kZT4sIGl0IGlzIAogIHJlbW92ZWQgCiAgYXMgaWYgYnk8aT4gUE9TSVggPC9pPjxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvcmVtb3ZlLmh0bWwiPnJlbW92ZSgpPC9hPjwvY29kZT4uPC9wPgogIDxibG9ja3F1b3RlPgogIDxwPls8aT5Ob3RlOjwvaT4gQSBzeW1ib2xpYyBsaW5rIGlzIGl0c2VsZiByZW1vdmVkLCByYXRoZXIgdGhhbiB0aGUgZmlsZSBpdCAKICByZXNvbHZlcyB0byBiZWluZyByZW1vdmVkLiA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgogIDwvYmxvY2txdW90ZT4KICA8cD48aT5Qb3N0Y29uZGl0aW9uOjwvaT4gPGNvZGU+IWV4aXN0cyhzeW1saW5rX3N0YXR1cyhwKSk8L2NvZGU+LjwvcD4KICA8cD48aT5SZXR1cm5zOjwvaT4mbmJzcDsgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIHAgZGlkIG5vdCBleGlzdCBpbiB0aGUgZmlyc3QgCiAgcGxhY2UsIG90aGVyd2lzZSA8Y29kZT50cnVlPC9jb2RlPi48L3A+CiAgPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCiAgPGEgaHJlZj0iI0Vycm9yLXJlcG9ydGluZyI+CiAgRXJyb3IgcmVwb3J0aW5nPC9hPi48L3A+CjwvYmxvY2txdW90ZT4KPHByZT51aW50bWF4X3QgPGEgbmFtZT0icmVtb3ZlX2FsbCI+cmVtb3ZlX2FsbDwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwp1aW50bWF4X3QgPGEgbmFtZT0icmVtb3ZlX2FsbDIiPnJlbW92ZV9hbGw8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6PC9pPiZuYnNwOyBSZWN1cnNpdmVseSBkZWxldGVzIHRoZSBjb250ZW50cyBvZiBwIGlmIGl0IGV4aXN0cywgCiAgdGhlbiBkZWxldGVzIGZpbGUgPGNvZGU+cDwvY29kZT4gaXRzZWxmLCAKICBhcyBpZiBieTxpPiBQT1NJWCA8L2k+PGNvZGU+CiAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Z1bmN0aW9ucy9yZW1vdmUuaHRtbCI+cmVtb3ZlKCk8L2E+PC9jb2RlPi48L3A+CiAgPGJsb2NrcXVvdGU+CiAgPHA+WzxpPk5vdGU6PC9pPiBBIHN5bWJvbGljIGxpbmsgaXMgaXRzZWxmIHJlbW92ZWQsIHJhdGhlciB0aGFuIHRoZSBmaWxlIGl0IAogIHJlc29sdmVzIHRvIGJlaW5nIHJlbW92ZWQuIDxpPi0tIGVuZCBub3RlPC9pPl08L3A+CiAgPC9ibG9ja3F1b3RlPgogIDxwPjxpPlBvc3Rjb25kaXRpb246PC9pPiA8Y29kZT4hZXhpc3RzKHApPC9jb2RlPjwvcD4KICA8cD48aT5SZXR1cm5zOjwvaT4gVGhlIG51bWJlciBvZiBmaWxlcyByZW1vdmVkLjwvcD4KICA8cD48aT5UaHJvd3M6PC9pPiBBcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgPGEgbmFtZT0icmVuYW1lIj5yZW5hbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBvbGRfcCwgY29uc3QgcGF0aCZhbXA7IG5ld19wKTsKdm9pZCA8YSBuYW1lPSJyZW5hbWUyIj5yZW5hbWU8L2E+KGNvbnN0IHBhdGgmYW1wOyBvbGRfcCwgY29uc3QgcGF0aCZhbXA7IG5ld19wLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6PC9pPiBSZW5hbWVzIDxjb2RlPm9sZF9wPC9jb2RlPiB0byA8Y29kZT5uZXdfcDwvY29kZT4sIGFzIGlmIGJ5CiAgPGk+UE9TSVg8L2k+IDxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvcmVuYW1lLmh0bWwiPgogIHJlbmFtZSgpPC9hPjwvY29kZT4uPC9wPgogIDxibG9ja3F1b3RlPgogIDxwPls8aT5Ob3RlOjwvaT4gSWYgPGNvZGU+b2xkX3A8L2NvZGU+IGFuZCA8Y29kZT5uZXdfcDwvY29kZT4gcmVzb2x2ZSB0byB0aGUgCiAgc2FtZSBleGlzdGluZyBmaWxlLCBubyBhY3Rpb24gaXMgdGFrZW4uIE90aGVyd2lzZSwgaWYgPGNvZGU+bmV3X3A8L2NvZGU+IHJlc29sdmVzIHRvIGFuIAogIGV4aXN0aW5nIG5vbi1kaXJlY3RvcnkgZmlsZSwgaXQgaXMgcmVtb3ZlZCwgd2hpbGUgaWYgPGNvZGU+bmV3X3A8L2NvZGU+IHJlc29sdmVzIHRvIGFuIAogIGV4aXN0aW5nIGRpcmVjdG9yeSwgaXQgaXMgcmVtb3ZlZCBpZiBlbXB0eSBvbiBQT1NJWCBidXQgaXMgYW4gZXJyb3Igb24gV2luZG93cy4gQSBzeW1ib2xpYyBsaW5rIGlzIGl0c2VsZiByZW5hbWVkLCByYXRoZXIgdGhhbiAKICB0aGUgZmlsZSBpdCByZXNvbHZlcyB0byBiZWluZyByZW5hbWVkLiA8aT4tLSBlbmQgbm90ZTwvaT5dPC9wPgogIDwvYmxvY2txdW90ZT4KICA8cD48aT5UaHJvd3M6PC9pPiBBcyBzcGVjaWZpZWQgaW4KICA8YSBocmVmPSIjRXJyb3ItcmVwb3J0aW5nIj4KICBFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnZvaWQgPGEgbmFtZT0icmVzaXplX2ZpbGUiPnJlc2l6ZV9maWxlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7ICI+dWludG1heF90IG5ld19zaXplPC9zcGFuPik7CnZvaWQgPGEgbmFtZT0icmVzaXplX2ZpbGUyIj5yZXNpemVfZmlsZTwvYT4oY29uc3QgcGF0aCZhbXA7IHAsIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAiPnVpbnRtYXhfdCBuZXdfc2l6ZSwgPC9zcGFuPnN5c3RlbTo6ZXJyb3JfY29kZSZhbXA7IGVjKTs8L3ByZT4KPGJsb2NrcXVvdGU+CjxwPjxpPlBvc3Rjb25kaXRpb25zOjwvaT4gPGNvZGU+ZmlsZV9zaXplKCkgPT0gbmV3X3NpemU8L2NvZGU+LjwvcD4KPHA+PGk+VGhyb3dzOjwvaT4gQXMgc3BlY2lmaWVkIGluCjxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgpFcnJvciByZXBvcnRpbmc8L2E+LjwvcD4KICA8cCBzdHlsZT0iZm9udC1zaXplOiAxMHB0Ij48aT5SZW1hcmtzOjwvaT4gQWNoaWV2ZXMgaXRzIHBvc3Rjb25kaXRpb25zIGFzIGlmIGJ5IAogIFBPU0lYIDxjb2RlPgogIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9mdW5jdGlvbnMvdHJ1bmNhdGUuaHRtbCI+CiAgdHJ1bmNhdGUoKTwvYT48L2NvZGU+LjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5zcGFjZV9pbmZvIDxhIG5hbWU9InNwYWNlIj5zcGFjZTwvYT4oY29uc3QgcGF0aCZhbXA7IHApOwpzcGFjZV9pbmZvIDxhIG5hbWU9InNwYWNlMiI+c3BhY2U8L2E+KGNvbnN0IHBhdGgmYW1wOyBwPC9zcGFuPiwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWM8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiI+KTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj48aT5SZXR1cm5zOjwvaT4gQW4gb2JqZWN0IG9mIHR5cGUgPGNvZGU+CiAgPGEgaHJlZj0iI3NwYWNlX2luZm8iPnNwYWNlX2luZm88L2E+PC9jb2RlPi4gVGhlIHZhbHVlIG9mIHRoZSA8Y29kZT5zcGFjZV9pbmZvPC9jb2RlPiBvYmplY3QgaXMgZGV0ZXJtaW5lZCBhcyBpZiBieSAKICB1c2luZyA8L3NwYW4+IDxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5QT1NJWDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPiA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3N0YXR2ZnMuaHRtbCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZSI+CiAgc3RhdHZmcygpPC9hPjwvY29kZT4gdG8gb2J0YWluIGEgPGk+UE9TSVg8L2k+IHN0cnVjdCA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvYmFzZWRlZnMvc3lzL3N0YXR2ZnMuaC5odG1sIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lIj4KICBzdGF0dmZzPC9hPjwvY29kZT4sIGFuZCB0aGVuIG11bHRpcGx5aW5nIGl0cyA8Y29kZT5mX2Jsb2NrczwvY29kZT4sIDxjb2RlPgogIGZfYmZyZWU8L2NvZGU+LCBhbmQgPGNvZGU+Zl9iYXZhaWw8L2NvZGU+IG1lbWJlcnMgYnkgaXRzIDxjb2RlPmZfZnJzaXplPC9jb2RlPiAKICBtZW1iZXIsIGFuZCBhc3NpZ25pbmcgdGhlIHJlc3VsdHMgdG8gdGhlIDxjb2RlPmNhcGFjaXR5PC9jb2RlPiwgPGNvZGU+ZnJlZTwvY29kZT4sIAogIGFuZCA8Y29kZT5hdmFpbGFibGU8L2NvZGU+IG1lbWJlcnMgcmVzcGVjdGl2ZWx5LiBBbnkgbWVtYmVycyBmb3Igd2hpY2ggdGhlIAogIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHNoYWxsIGJlIHNldCB0byAtMS48L3NwYW4+PC9wPgogIDxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+PGEgaHJlZj0iI2ZpbGVfc3RhdHVzIj5maWxlX3N0YXR1czwvYT4gPGEgbmFtZT0ic3RhdHVzIj5zdGF0dXM8L2E+KGNvbnN0IHBhdGgmYW1wOyBwKTs8L3ByZT4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+RWZmZWN0czogPC9pPkFzIGlmOjwvcD4KICA8YmxvY2txdW90ZT4KICAgIDxwcmU+c3lzdGVtOjplcnJvcl9jb2RlIGVjOwpmaWxlX3N0YXR1cyByZXN1bHQgPSBzdGF0dXMocCwgZWMpOwppZiAocmVzdWx0ID09IHN0YXR1c19lcnJvcikKICB0aHJvdyBmaWxlc3lzdGVtX2Vycm9yKDxpPmltcGxlbWVudGF0aW9uLXN1cHBsaWVkLW1lc3NhZ2U8L2k+LCBwLCBlYyk7CnJldHVybiByZXN1bHQ7PC9wcmU+CiAgPC9ibG9ja3F1b3RlPgogIDxwPjxpPlJldHVybnM6PC9pPiBTZWUgYWJvdmUuPC9wPgogIDxwPjxpPlRocm93czo8L2k+IDxjb2RlPmZpbGVzeXN0ZW1fZXJyb3I8L2NvZGU+LiAKWzxpPk5vdGU6PC9pPiA8Y29kZT5yZXN1bHQ8L2NvZGU+IHZhbHVlcyBvZiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoZmlsZV9ub3RfZm91bmQpPC9jb2RlPmFuZCA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXModHlwZV91bmtub3duKTwvY29kZT4gYXJlIG5vdCBjb25zaWRlcmVkIGZhaWx1cmVzIGFuZCBkbyBub3QgCiAgY2F1c2UgYW4gZXhjZXB0aW9uIHRvIGJlIAp0aHJvd24uPGk+IC0tIGVuZCBub3RlPC9pPl0gPC9wPgogIDwvYmxvY2txdW90ZT4KPHByZT48YSBocmVmPSIjZmlsZV9zdGF0dXMiPmZpbGVfc3RhdHVzPC9hPiA8YSBuYW1lPSJzdGF0dXMyIj5zdGF0dXM8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6IDwvaT48L3A+CiAgPGJsb2NrcXVvdGU+CiAgICA8cD5JZiBwb3NzaWJsZSwgZGV0ZXJtaW5lcyB0aGUgYXR0cmlidXRlcyAKICAgIG9mIHRoZSBmaWxlCiAgICA8Y29kZT5wPC9jb2RlPiByZXNvbHZlcyB0bywgYXMgaWYgYnk8aT4gUE9TSVggPC9pPiA8Y29kZT4KICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL3N0YXQuaHRtbCI+c3RhdCgpPC9hPjwvY29kZT4uPC9wPgogICAgICBJZiwgZHVyaW5nIGF0dHJpYnV0ZSBkZXRlcm1pbmF0aW9uLCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbSBBUEkgcmVwb3J0cyAKICAgIGFuIGVycm9yLCBzZXRzIDxjb2RlPmVjPC9jb2RlPiB0byBpbmRpY2F0ZSB0aGUgc3BlY2lmaWMgZXJyb3IgcmVwb3J0ZWQuIAogICAgT3RoZXJ3aXNlLCA8Y29kZT5lYy5jbGVhcigpPC9jb2RlPi48YmxvY2txdW90ZT4KICAgICAgPHA+WzxpPk5vdGU6PC9pPiBUaGlzIGFsbG93cyB1c2VycyB0byBpbnNwZWN0IHRoZSBzcGVjaWZpY3Mgb2YgdW5kZXJseWluZyAKICAgICAgQVBJIGVycm9ycyBldmVuIHdoZW4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IDxjb2RlPnN0YXR1cygpPC9jb2RlPiBpcyBub3QgPGNvZGU+CiAgICAgIGZpbGVfc3RhdHVzKHN0YXR1c19lcnJvcik8L2NvZGU+LiZuYnNwOyA8aT4tLWVuZCBub3RlPC9pPl08L3A+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8L2Jsb2NrcXVvdGU+CiAgPHA+PGk+UmV0dXJuczo8L2k+PC9wPgogIDxibG9ja3F1b3RlPgogICAgPHA+SWYgPGNvZGU+ZWMgIT0gZXJyb3JfY29kZSgpPC9jb2RlPjo8L3A+CiAgICA8dWw+CiAgICAgIDxsaT5JZiB0aGUgc3BlY2lmaWMgZXJyb3IgaW5kaWNhdGVzIHRoYXQgPGNvZGU+cDwvY29kZT4gY2Fubm90IGJlIHJlc29sdmVkIAogICAgICBiZWNhdXNlIHNvbWUgZWxlbWVudCBvZiB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCwgcmV0dXJuIDxjb2RlPgogICAgICBmaWxlX3N0YXR1cyhmaWxlX25vdF9mb3VuZCk8L2NvZGU+LiBbPGk+Tm90ZTo8L2k+IFBPU0lYIGVycm9ycyB0aGF0IAogICAgICBpbmRpY2F0ZSB0aGlzIGFyZSBFTk9FTlQgb3IgRU5PVERJUi4gV2luZG93cyBlcXVpdmFsZW50cyAKICAgICAgaW5jbHVkZSBFUlJPUl9GSUxFX05PVF9GT1VORCwgRVJST1JfUEFUSF9OT1RfRk9VTkQsIEVSUk9SX0lOVkFMSURfTkFNRSwgCiAgICAgIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSLCBFUlJPUl9CQURfUEFUSE5BTUUsIGFuZCBFUlJPUl9CQURfTkVUUEFUSC4gPGk+LS0gCiAgICAgIGVuZCBub3RlPC9pPl08YnI+CiZuYnNwOzwvbGk+CiAgICAgIDxsaT5PdGhlcndpc2UsIGlmIHRoZSBzcGVjaWZpYyBlcnJvciBpbmRpY2F0ZXMgdGhhdCA8Y29kZT5wPC9jb2RlPiBjYW4gYmUgcmVzb2x2ZWQgCiAgICAgIGJ1dCB0aGUgYXR0cmlidXRlcyBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgcmV0dXJuIDxjb2RlPgogICAgICBmaWxlX3N0YXR1cyh0eXBlX3Vua25vd24pPC9jb2RlPi4gWzxpPk5vdGU6IDwvaT5Gb3IgZXhhbXBsZSwgV2luZG93cyAKICAgICAgRVJST1JfU0hBUklOR19WSU9MQVRJT04gZXJyb3JzLiBGb3IgUE9TSVgsIHRoZSBjYXNlIG5ldmVyIGFyaXNlcy4gPGk+LS0gZW5kIAogICAgICBub3RlPC9pPl08YnI+CiZuYnNwOzwvbGk+CiAgICAgIDxsaT5PdGhlcndpc2UsIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoc3RhdHVzX2Vycm9yKTwvY29kZT4uPC9saT4KICAgIDwvdWw+CiAgICAgICAgPGJsb2NrcXVvdGU+CiAgICAgICAgPHA+WzxpPk5vdGU6PC9pPiBUaGVzZSBzZW1hbnRpY3MgZGlzdGluZ3Vpc2ggYmV0d2VlbiAKICAgICAgICA8Y29kZT5wPC9jb2RlPiBiZWluZyBrbm93biBub3QgdG8gZXhpc3QsIAogICAgICAgIDxjb2RlPnA8L2NvZGU+IGV4aXN0aW5nIGJ1dCBub3QgYmVpbmcgYWJsZSB0byBkZXRlcm1pbmUgaXRzIGF0dHJpYnV0ZXMsIAogICAgICAgIGFuZCB0aGVyZSBiZWluZyBhbiBlcnJvciB0aGF0IHByZXZlbnRzIGV2ZW4ga25vd2luZyBpZiAKICAgICAgICA8Y29kZT5wPC9jb2RlPiBleGlzdHMuIFRoZXNlIAogICAgICAgIGRpc3RpbmN0aW9ucyBhcmUgaW1wb3J0YW50IHRvIHNvbWUgdXNlIGNhc2VzLiZuYnNwOzxpPi0tZW5kIG5vdGU8L2k+XTwvcD4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxwPk90aGVyd2lzZSw8L3A+CiAgICA8dWw+CiAgICAgIDxsaT5JZiB0aGUgYXR0cmlidXRlcyBpbmRpY2F0ZSBhIHJlZ3VsYXIgZmlsZSwgYXMgaWYgYnkgPGk+UE9TSVg8L2k+Jm5ic3A7PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+U19JU1JFRygpPC9hPiwgCiAgICAgIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMocmVndWxhcl9maWxlKTwvY29kZT4uIFs8aT5Ob3RlOjwvaT4gPGNvZGU+CnJlZ3VsYXJfZmlsZTwvY29kZT4gaW1wbGllcyBhcHByb3ByaWF0ZSA8Y29kZT4mbHQ7ZnN0cmVhbSZndDs8L2NvZGU+IG9wZXJhdGlvbnMgCiAgICAgIHdvdWxkIHN1Y2NlZWQsIGFzc3VtaW5nIG5vIGhhcmR3YXJlLCBwZXJtaXNzaW9uLCBhY2Nlc3MsIG9yIHJhY2UgY29uZGl0aW9uIAogICAgICBlcnJvcnMuIExhY2sgb2YKPGNvZGU+cmVndWxhcl9maWxlPC9jb2RlPiBkb2VzIG5vdCBuZWNlc3NhcmlseSBpbXBseSA8Y29kZT4mbHQ7ZnN0cmVhbSZndDs8L2NvZGU+IG9wZXJhdGlvbnMgd291bGQgCmZhaWwgb24gYSBkaXJlY3RvcnkuCjxpPi0tIGVuZCBub3RlPC9pPl08YnI+CiZuYnNwOzwvbGk+CiAgICAgIDxsaT5PdGhlcndpc2UsIGlmIHRoZSBhdHRyaWJ1dGVzIGluZGljYXRlIGEgZGlyZWN0b3J5LCBhcyBpZiBieSA8aT5QT1NJWDwvaT4KICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+U19JU0RJUigpPC9hPiwgCiAgICAgIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoZGlyZWN0b3J5X2ZpbGUpPC9jb2RlPi4gWzxpPk5vdGU6PC9pPiA8Y29kZT5kaXJlY3RvcnlfZmlsZTwvY29kZT4gaW1wbGllcyA8Y29kZT4KZGlyZWN0b3J5X2l0ZXJhdG9yKHApPC9jb2RlPndvdWxkIHN1Y2NlZWQuCjxpPi0tIGVuZCBub3RlPC9pPl08YnI+CiZuYnNwOzwvbGk+CiAgICAgIDxsaT5PdGhlcndpc2UsIGlmIHRoZSBhdHRyaWJ1dGVzIGluZGljYXRlIGEgYmxvY2sgc3BlY2lhbCBmaWxlLCBhcyBpZiBieSA8aT5QT1NJWDwvaT4KICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+U19JU0JMSygpPC9hPiwgCiAgICAgIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoYmxvY2tfZmlsZSk8L2NvZGU+Ljxicj4KJm5ic3A7PC9saT4KICAgICAgPGxpPk90aGVyd2lzZSwgaWYgdGhlIGF0dHJpYnV0ZXMgaW5kaWNhdGUgYSBjaGFyYWN0ZXIgc3BlY2lhbCBmaWxlLCBhcyBpZiBieSA8aT5QT1NJWDwvaT4KICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+U19JU0NIUigpPC9hPiwgCiAgICAgIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoY2hhcmFjdGVyX2ZpbGUpPC9jb2RlPi48YnI+CiZuYnNwOzwvbGk+CiAgICAgIDxsaT5PdGhlcndpc2UsIGlmIHRoZSBhdHRyaWJ1dGVzIGluZGljYXRlIGEgZmlmbyBvciBwaXBlIGZpbGUsIGFzIGlmIGJ5IDxpPlBPU0lYPC9pPgogICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvYmFzZWRlZnMvc3lzL3N0YXQuaC5odG1sIj5TX0lTRklGTygpPC9hPiwgCiAgICAgIHJldHVybiA8Y29kZT4KICAgICAgZmlsZV9zdGF0dXMoZmlmb19maWxlKTwvY29kZT4uPGJyPgombmJzcDs8L2xpPgogICAgICA8bGk+T3RoZXJ3aXNlLCBpZiB0aGUgYXR0cmlidXRlcyBpbmRpY2F0ZSBhIHNvY2tldCwgYXMgaWYgYnkgPGk+UE9TSVg8L2k+CiAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwMDA5NTM5OS9iYXNlZGVmcy9zeXMvc3RhdC5oLmh0bWwiPlNfSVNTT0NLKCk8L2E+LCAKICAgICAgcmV0dXJuIDxjb2RlPgogICAgICBmaWxlX3N0YXR1cyhzb2NrZXRfZmlsZSk8L2NvZGU+Ljxicj4KJm5ic3A7PC9saT4KICAgICAgPGxpPk90aGVyd2lzZSwgcmV0dXJuIDxjb2RlPgogICAgICBmaWxlX3N0YXR1cyh0eXBlX3Vua25vd24pPC9jb2RlPi48L2xpPgogICAgPC91bD4KICAgIDwvYmxvY2txdW90ZT4KPHA+PGk+VGhyb3dzOjwvaT4gTm90aGluZy48L3A+CiAgICAgIDxwPjxpPlJlbWFya3M6PC9pPiBJZiBhIHN5bWJvbGljIGxpbmsgaXMgZW5jb3VudGVyZWQgZHVyaW5nIHBhdGhuYW1lIAogICAgICByZXNvbHV0aW9uLCAKICAgICAgcGF0aG5hbWUgcmVzb2x1dGlvbiBjb250aW51ZXMgdXNpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBzeW1ib2xpYyBsaW5rLjwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5ib29sIDxhIG5hbWU9InN0YXR1c19rbm93biI+c3RhdHVzX2tub3duPC9hPihmaWxlX3N0YXR1cyBzKTs8L3NwYW4+PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj5SZXR1cm5zOjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYiPgogIDxjb2RlPnMudHlwZSgpICE9IHN0YXR1c19lcnJvcjwvY29kZT48L3NwYW4+PC9wPgogIDxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwcmU+ZmlsZV9zdGF0dXMgPGEgbmFtZT0ic3ltbGlua19zdGF0dXMiPnN5bWxpbmtfc3RhdHVzPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CmZpbGVfc3RhdHVzIDxhIG5hbWU9InN5bWxpbmtfc3RhdHVzMiI+c3ltbGlua19zdGF0dXM8L2E+KGNvbnN0IHBhdGgmYW1wOyBwLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPjxpPkVmZmVjdHM6PC9pPiZuYnNwOyBTYW1lIGFzIDxhIGhyZWY9IiNzdGF0dXMiPnN0YXR1cygpPC9hPiwgYWJvdmUsIAogIGV4Y2VwdCB0aGF0IHRoZSBhdHRyaWJ1dGVzIAogICAgb2YKICAgIDxjb2RlPnA8L2NvZGU+IGFyZSBkZXRlcm1pbmVkIGFzIGlmIGJ5PGk+IFBPU0lYIDwvaT4gPGNvZGU+CiAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkvZnVuY3Rpb25zL2xzdGF0Lmh0bWwiPgogICAgbHN0YXQoKTwvYT48L2NvZGU+LjwvcD4KPC9ibG9ja3F1b3RlPgo8YmxvY2txdW90ZT4KICAgICAgPHA+PGk+UmV0dXJuczo8L2k+IFNhbWUgYXMgPGEgaHJlZj0iI3N0YXR1cyI+c3RhdHVzKCk8L2E+LCBhYm92ZSwgZXhjZXB0IAogICAgICB0aGF0IGlmIHRoZSBhdHRyaWJ1dGVzIGluZGljYXRlIGEgc3ltYm9saWMgbGluaywgYXMgaWYgYnkgPGk+UE9TSVg8L2k+CiAgICAgIDxhIGNsYXNzPSJleHRlcm5hbCIgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDAwMDk1Mzk5L2Jhc2VkZWZzL3N5cy9zdGF0LmguaHRtbCI+CiAgICAgIFNfSVNMTksoKTwvYT4sIHJldHVybiA8Y29kZT5maWxlX3N0YXR1cyhzeW1saW5rX2ZpbGUpPC9jb2RlPi48L3A+CjxwPjxpPlRocm93czo8L2k+IE5vdGhpbmcuPC9wPgogICAgICA8cD48aT5SZW1hcmtzOjwvaT4gUGF0aG5hbWUgcmVzb2x1dGlvbiB0ZXJtaW5hdGVzIGlmIDxjb2RlPnA8L2NvZGU+IG5hbWVzIGEgc3ltYm9saWMgbGluay48L3A+CjwvYmxvY2txdW90ZT4KPHByZT5wYXRoIDxhIG5hbWU9InN5c3RlbV9jb21wbGV0ZSI+c3lzdGVtX2NvbXBsZXRlPC9hPihjb25zdCBwYXRoJmFtcDsgcCk7CnBhdGggPGEgbmFtZT0ic3lzdGVtX2NvbXBsZXRlMiI+c3lzdGVtX2NvbXBsZXRlPC9hPihjb25zdCBwYXRoJmFtcDsgcCwgc3lzdGVtOjplcnJvcl9jb2RlJmFtcDsgZWMpOzwvcHJlPgo8YmxvY2txdW90ZT4KICA8cD48aT5FZmZlY3RzOjwvaT4gQ29tcG9zZXMgYW4gYWJzb2x1dGUgcGF0aCBmcm9tIDxjb2RlPnA8L2NvZGU+LCB1c2luZyB0aGUgCiAgc2FtZSBydWxlcyB1c2VkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRvIHJlc29sdmUgYSBwYXRoIHBhc3NlZCBhcyB0aGUgCiAgZmlsZW5hbWUgYXJndW1lbnQgdG8gc3RhbmRhcmQgbGlicmFyeSBvcGVuIGZ1bmN0aW9ucy48L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IFRoZSBjb21wb3NlZCBwYXRoLjwvcD4KICA8cD48aT5Qb3N0Y29uZGl0aW9uczo8L2k+IEZvciB0aGUgcmV0dXJuZWQgcGF0aCwgPGNvZGU+cnAsPC9jb2RlPiA8Y29kZT4KICBycC5pc19hYnNvbHV0ZSgpPC9jb2RlPiBpcyB0cnVlLjwvcD4KICA8cD5bPGk+Tm90ZTo8L2k+IEZvciA8aT5QT1NJWDwvaT4sIDxjb2RlPnN5c3RlbV9jb21wbGV0ZShwKTwvY29kZT4gaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcwogIDxjb2RlPmNvbXBsZXRlKHAsIGN1cnJlbnRfcGF0aCgpKTwvY29kZT4uPC9wPgogIDxwPjxhIG5hbWU9IndpbmRvd3NfZWZmZWN0cyI+Rm9yIDxpPldpbmRvd3M8L2k+PC9hPiwgPGNvZGU+c3lzdGVtX2NvbXBsZXRlKHApPC9jb2RlPiBoYXMgdGhlIAogIHNhbWUgc2VtYW50aWNzIGFzIDxjb2RlPmNvbXBsZXRlKHBoLCBjdXJyZW50X3BhdGgoKSk8L2NvZGU+IGlmIAogIDxjb2RlPnAuaXNfYWJzb2x1dGUoKSB8fCAhcC5oYXNfcm9vdF9uYW1lKCk8L2NvZGU+IG9yIDxjb2RlPnA8L2NvZGU+IGFuZCA8Y29kZT5iYXNlPC9jb2RlPiBoYXZlIHRoZSBzYW1lCiAgPGNvZGU+cm9vdF9uYW1lKCk8L2NvZGU+LiAKICBPdGhlcndpc2UgaXQgYWN0cyBsaWtlIDxjb2RlPmNvbXBsZXRlKHAsIGtpbmt5KTwvY29kZT4sIHdoZXJlIDxjb2RlPmtpbmt5PC9jb2RlPiAKICBpcyB0aGUgY3VycmVudCBkaXJlY3RvcnkgZm9yIHRoZSA8Y29kZT5wLnJvb3RfbmFtZSgpPC9jb2RlPiBkcml2ZS4gVGhpcyB3aWxsIAogIGJlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvZiB0aGF0IGRyaXZlIHRoZSBsYXN0IHRpbWUgaXQgd2FzIHNldCwgYW5kIHRodXMgbWF5IAogIGJlIDxiPnJlc2lkdWUgbGVmdCBvdmVyIGZyb20gYSBwcmlvciBwcm9ncmFtPC9iPiBydW4gYnkgdGhlIGNvbW1hbmQgCiAgcHJvY2Vzc29yISBBbHRob3VnaCB0aGVzZSBzZW1hbnRpY3MgYXJlIG9mdGVuIHVzZWZ1bCwgdGhleSBhcmUgYWxzbyB2ZXJ5IAogIGVycm9yLXByb25lLjwvcD4KICA8cD5TZWUgPGEgaHJlZj0iI2NvbXBsZXRlX25vdGUiPgogIDxpPmNvbXBsZXRlKCk8L2k+IG5vdGU8L2E+IGZvciB1c2FnZSBzdWdnZXN0aW9ucy4gPGk+LS0gZW5kIG5vdGU8L2k+XTwvcD4KPC9ibG9ja3F1b3RlPgo8cHJlPnBhdGggPGEgbmFtZT0idW5pcXVlX3BhdGgiPnVuaXF1ZV9wYXRoPC9hPihjb25zdCBwYXRoJmFtcDsgbW9kZWw9JnF1b3Q7JSUlJS0lJSUlLSUlJSUtJSUlJSZxdW90Oyk7CnBhdGggdW5pcXVlX3BhdGgoY29uc3QgcGF0aCZhbXA7IG1vZGVsLCBzeXN0ZW06OmVycm9yX2NvZGUmYW1wOyBlYyk7PC9wcmU+CjxibG9ja3F1b3RlPgogIDxwPlRoZSA8Y29kZT51bmlxdWVfcGF0aDwvY29kZT4gZnVuY3Rpb24gZ2VuZXJhdGVzIGEgcGF0aCBuYW1lIHN1aXRhYmxlIGZvciAKICBjcmVhdGluZyB0ZW1wb3JhcnkgZmlsZXMsIGluY2x1ZGluZyBkaXJlY3Rvcmllcy4gVGhlIG5hbWUgaXMgYmFzZWQgCiAgb24gYSBtb2RlbCB0aGF0IHVzZXMgdGhlIHBlcmNlbnQgc2lnbiBjaGFyYWN0ZXIgdG8gc3BlY2lmeSByZXBsYWNlbWVudCBieSBhIAogIHJhbmRvbSBoZXhhZGVjaW1hbCBkaWdpdC4gWzxpPk5vdGU6PC9pPiBUaGUgbW9yZSBiaXRzIG9mIHJhbmRvbW5lc3MgaW4gdGhlIAogIGdlbmVyYXRlZCBwYXRoIG5hbWUsIHRoZSBsZXNzIGxpa2VsaWhvb2Qgb2YgcHJpb3IgZXhpc3RlbmNlIG9yIGJlaW5nIGd1ZXNzZWQuIAogIEVhY2ggcmVwbGFjZW1lbnQgaGV4YWRlY2ltYWwgZGlnaXQgaW4gdGhlIG1vZGVsIGFkZHMgZm91ciBiaXRzIG9mIHJhbmRvbW5lc3MuIAogIFRoZSBkZWZhdWx0IG1vZGVsIHRodXMgcHJvdmlkZXMgNjQgYml0cyBvZiByYW5kb21uZXNzLiBUaGlzIGlzIHN1ZmZpY2llbnQgZm9yIAogIG1vc3QgYXBwbGljYXRpb25zLiA8aT4tLWVuZCBub3RlPC9pPl08L3A+CiAgPHA+PGk+UmV0dXJuczo8L2k+IEEgcGF0aCBpZGVudGljYWwgdG8gPGNvZGU+bW9kZWw8L2NvZGU+LCBleGNlcHQgdGhhdCBlYWNoIAogIG9jY3VycmVuY2Ugb2YgYSBwZXJjZW50IHNpZ24gY2hhcmFjdGVyIGlzIHJlcGxhY2VkIGJ5IGEgcmFuZG9tIGhleGFkZWNpbWFsIAogIGRpZ2l0IGNoYXJhY3RlciBpbiB0aGUgcmFuZ2UgMC05LCBhLWYuPC9wPgogIDxwPjxpPlRocm93czo8L2k+IEFzIHNwZWNpZmllZCBpbgogIDxhIGhyZWY9IiNFcnJvci1yZXBvcnRpbmciPgogIEVycm9yIHJlcG9ydGluZzwvYT4uPC9wPgogIDxwPjxpPlJlbWFya3M6PC9pPiBJbXBsZW1lbnRhdGlvbnMgYXJlIGVuY291cmFnZWQgdG8gb2J0YWluIHRoZSByZXF1aXJlZCAKICByYW5kb21uZXNzIHZpYSBhCiAgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcnlwdG9ncmFwaGljYWxseV9zZWN1cmVfcHNldWRvcmFuZG9tX251bWJlcl9nZW5lcmF0b3IiPgogIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3I8L2E+LCBzdWNoIGFzIG9uZSAKICBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gWzxpPk5vdGU8L2k+OiBTdWNoIGdlbmVyYXRvcnMgbWF5IGJsb2NrIAogIHVudGlsIHN1ZmZpY2llbnQgZW50cm9weSBkZXZlbG9wcy4gPGk+LS1lbmQgbm90ZTwvaT5dPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJGaWxlLXN0cmVhbXMiPkZpbGUgc3RyZWFtczwvYT4gLQo8YSBocmVmPSIuLi8uLi8uLi8uLi9ib29zdC9maWxlc3lzdGVtL2ZzdHJlYW0uaHBwIj4mbHQ7Ym9vc3QvZmlsZXN5c3RlbS9mc3RyZWFtLmhwcCZndDs8L2E+PC9oMz4KPHA+UmVwbGFjZW1lbnRzIGFyZSBwcm92aWRlZCBmb3IgdGhlIGZpbGUgc3RyZWFtIGNsYXNzZXMgZnJvbSB0aGUgQysrIHN0YW5kYXJkIApsaWJyYXJ5J3MgPGNvZGU+Jmx0O2ZzdHJlYW0mZ3Q7PC9jb2RlPiBoZWFkZXIuIFRoZXNlIHJlcGxhY2VtZW50IGNsYXNzZXMgCnB1YmxpY2x5IGluaGVyaXQgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSBjbGFzc2VzLiBJbiB0aGUgQm9vc3QuRmlsZXN5c3RlbSAKdmVyc2lvbiwgY29uc3RydWN0b3JzIGFuZCBvcGVuIGZ1bmN0aW9ucyB0YWtlIDxjb2RlPmNvbnN0IHBhdGgmYW1wOzwvY29kZT4gYXJndW1lbnRzIAppbnN0ZWFkIG9mIDxjb2RlPgpjb25zdCBjaGFyKjwvY29kZT4gYXJndW1lbnRzLiBUaGVyZSBhcmUgbm8gb3RoZXIgZGlmZmVyZW5jZXMgaW4gc3ludGF4IG9yIApzZW1hbnRpY3MuPC9wPgo8cHJlPm5hbWVzcGFjZSBib29zdAp7CiAgbmFtZXNwYWNlIGZpbGVzeXN0ZW0KICB7CiAgICB0ZW1wbGF0ZSAmbHQ7IGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSBzdGQ6OmNoYXJfdHJhaXRzJmx0O2NoYXJUJmd0OyAmZ3Q7CiAgICBjbGFzcyBiYXNpY19maWxlYnVmIDogcHVibGljIHN0ZDo6YmFzaWNfZmlsZWJ1ZiZsdDtjaGFyVCx0cmFpdHMmZ3Q7CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGJhc2ljX2ZpbGVidWYmbHQ7Y2hhclQsdHJhaXRzJmd0OyoKICAgICAgICBvcGVuKGNvbnN0IHBhdGgmYW1wOyBwLCBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSBtb2RlKTsKICAgIH07CgogICAgdGVtcGxhdGUgJmx0OyBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0gc3RkOjpjaGFyX3RyYWl0cyZsdDtjaGFyVCZndDsgJmd0OwogICAgY2xhc3MgYmFzaWNfaWZzdHJlYW0gOiBwdWJsaWMgc3RkOjpiYXNpY19pZnN0cmVhbSZsdDtjaGFyVCx0cmFpdHMmZ3Q7CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0IGJhc2ljX2lmc3RyZWFtKGNvbnN0IHBhdGgmYW1wOyBwLCBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSBtb2RlPXN0ZDo6aW9zX2Jhc2U6OmluKQogICAgICB2b2lkIG9wZW4oY29uc3QgcGF0aCZhbXA7IHAsIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGU9c3RkOjppb3NfYmFzZTo6aW4pOwogICAgfTsKCiAgICB0ZW1wbGF0ZSAmbHQ7IGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSBzdGQ6OmNoYXJfdHJhaXRzJmx0O2NoYXJUJmd0OyAmZ3Q7CiAgICBjbGFzcyBiYXNpY19vZnN0cmVhbSA6IHB1YmxpYyBzdGQ6OmJhc2ljX29mc3RyZWFtJmx0O2NoYXJULHRyYWl0cyZndDsKICAgIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQgYmFzaWNfb2ZzdHJlYW0oY29uc3QgcGF0aCZhbXA7IHAsIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGU9c3RkOjppb3NfYmFzZTo6b3V0KTsKICAgICAgdm9pZCBvcGVuKGNvbnN0IHBhdGgmYW1wOyBwLCBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSBtb2RlPXN0ZDo6aW9zX2Jhc2U6Om91dCk7CiAgICB9OwoKICAgIHRlbXBsYXRlICZsdDsgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA9IHN0ZDo6Y2hhcl90cmFpdHMmbHQ7Y2hhclQmZ3Q7ICZndDsKICAgIGNsYXNzIGJhc2ljX2ZzdHJlYW0gOiBwdWJsaWMgc3RkOjpiYXNpY19mc3RyZWFtJmx0O2NoYXJULHRyYWl0cyZndDsKICAgIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQgYmFzaWNfZnN0cmVhbShjb25zdCBwYXRoJmFtcDsgcCwKICAgICAgICBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSBtb2RlPXN0ZDo6aW9zX2Jhc2U6OmluIHwgc3RkOjppb3NfYmFzZTo6b3V0KTsKICAgICAgdm9pZCBvcGVuKGNvbnN0IHBhdGgmYW1wOyBwLAogICAgICAgIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGU9c3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpvdXQpOwogICAgfTsKCiAgICB0eXBlZGVmIGJhc2ljX2ZpbGVidWYmbHQ7Y2hhciZndDsgZmlsZWJ1ZjsKICAgIHR5cGVkZWYgYmFzaWNfaWZzdHJlYW0mbHQ7Y2hhciZndDsgaWZzdHJlYW07CiAgICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtJmx0O2NoYXImZ3Q7IG9mc3RyZWFtOwogICAgdHlwZWRlZiBiYXNpY19mc3RyZWFtJmx0O2NoYXImZ3Q7IGZzdHJlYW07CgogICAgdHlwZWRlZiBiYXNpY19maWxlYnVmJmx0O3djaGFyX3QmZ3Q7IHdmaWxlYnVmOwogICAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbSZsdDt3Y2hhcl90Jmd0OyB3aWZzdHJlYW07CiAgICB0eXBlZGVmIGJhc2ljX2ZzdHJlYW0mbHQ7d2NoYXJfdCZndDsgd2ZzdHJlYW07CiAgICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtJmx0O3djaGFyX3QmZ3Q7IHdvZnN0cmVhbTsKICAgIAogIH0gLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KfSAvLyBuYW1lc3BhY2UgYm9vc3Q8L3ByZT4KPGgyPjxhIG5hbWU9IlBhdGgtZGVjb21wb3NpdGlvbi10YWJsZSI+UGF0aCBkZWNvbXBvc2l0aW9uIHRhYmxlPC9hPjwvaDI+CjxwPlRoZSB0YWJsZSBpcyBnZW5lcmF0ZWQgYnkgYSBwcm9ncmFtIGNvbXBpbGVkIHdpdGggdGhlIEJvb3N0IGltcGxlbWVudGF0aW9uLjwvcD4KPHA+U2hhZGVkIGVudHJpZXMgaW5kaWNhdGUgY2FzZXMgd2hlcmUgPGk+UE9TSVg8L2k+IGFuZCA8aT5XaW5kb3dzPC9pPiAKaW1wbGVtZW50YXRpb25zIHlpZWxkIGRpZmZlcmVudCByZXN1bHRzLiBUaGUgdG9wIHZhbHVlIGlzIHRoZQo8aT5QT1NJWDwvaT4gcmVzdWx0IGFuZCB0aGUgYm90dG9tIHZhbHVlIGlzIHRoZSA8aT5XaW5kb3dzPC9pPiByZXN1bHQuIDxicj4KJm5ic3A7PHRhYmxlIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1Ij4KPHA+Cjx0cj48dGQ+PGI+PGZvbnQgc2l6ZT0iMiI+Q29uc3RydWN0b3I8YnI+YXJndW1lbnQ8L2ZvbnQ+PC9iPjwvdGQ+Cjx0ZD48Yj48Zm9udCBzaXplPSIyIj5JdGVyYXRpb248YnI+b3Zlcjxicj5FbGVtZW50czwvZm9udD48L2I+PC90ZD4KPHRkPjxiPjxjb2RlPnN0cmluZygpPC9jb2RlPjwvYj48L3RkPgo8dGQ+PGI+PGNvZGU+Z2VuZXJpY188YnI+c3RyaW5nKCk8L2NvZGU+PC9iPjwvdGQ+Cjx0ZD48Yj48Y29kZT5yb290Xzxicj5wYXRoKCk8L2NvZGU+PC9iPjwvdGQ+Cjx0ZD48Yj48Y29kZT5yb290Xzxicj5uYW1lKCk8L2NvZGU+PC9iPjwvdGQ+Cjx0ZD48Yj48Y29kZT5yb290Xzxicj5kaXJlY3RvcnkoKTwvY29kZT48L2I+PC90ZD4KPHRkPjxiPjxjb2RlPnJlbGF0aXZlXzxicj5wYXRoKCk8L2NvZGU+PC9iPjwvdGQ+Cjx0ZD48Yj48Y29kZT5wYXJlbnRfPGJyPnBhdGgoKTwvY29kZT48L2I+PC90ZD4KPHRkPjxiPjxjb2RlPmZpbGVuYW1lKCk8L2NvZGU+PC9iPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Li48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Li48L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPi4uPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT5mb288L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4vZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLGZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb288L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Zm9vLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLC48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby88L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPmZvby88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4vZm9vLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Lyxmb28sLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+L2Zvby88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi9mb28vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmZvby9iYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbyxiYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby9iYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby9iYXI8L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPmZvby9iYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+YmFyPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi9mb28vYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLGZvbyxiYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi9mb28vYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vZm9vL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+YmFyPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi8vbmV0PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vL25ldDwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly9uZXQ8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8vbmV0PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vL25ldDwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly9uZXQ8L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPi8vbmV0PC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi8vbmV0L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly9uZXQsLyxmb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8vbmV0L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly9uZXQvZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vL25ldC88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8vbmV0PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8vbmV0LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi8vL2Zvby8vLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Lyxmb28sLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly8vZm9vLy8vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLy9mb28vLy88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi88L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8vLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly8vZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi8vL2Zvby8vL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Lyxmb28sYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLy9mb28vLy9iYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8vL2Zvby8vL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy8vYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLy9mb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmJhcjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4vLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LywuPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi88L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi48L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Li88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi4sLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Li88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi4vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT4uLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4vLi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8sLi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi8uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Ly4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Li48L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Li4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLiwuPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi4uLzwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Li4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5mb28vLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLC48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Zm9vLy48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5mb28vLi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbywuLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi48L2NvZGU+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPmZvby8uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uLjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5mb28vLi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbywuLC48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8uLzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmZvby8uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLC4sYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi9iYXI8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4vYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+YmFyPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmZvby8uLjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLC4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvby8uLjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi4uPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmZvby8uLi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmZvbywuLiwuPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi4vPC9jb2RlPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi4vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5mb28vLi48L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi48L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Zm9vLy4uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLC4uLGJhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Zm9vLy4uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5iYXI8L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Yzo8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmM6PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5jOjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Yzo8L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOjwvY29kZT48YnI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3NwYW4+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxjb2RlPmM6PC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmM6LzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6LC48L2NvZGU+PGJyPjxjb2RlPmM6LC88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48Y29kZT5jOi88L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmM6LzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6LzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT4vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6LzwvY29kZT48YnI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6PC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+LjwvY29kZT48YnI+PGNvZGU+LzwvY29kZT48L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Yzpmb288L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOmZvbzwvY29kZT48YnI+PGNvZGU+YzosZm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+Yzpmb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmM6Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+Yzo8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+Yzo8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+Yzpmb288L2NvZGU+PGJyPjxjb2RlPmZvbzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOmZvbzwvY29kZT48YnI+PGNvZGU+Zm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5jOi9mb288L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOixmb288L2NvZGU+PGJyPjxjb2RlPmM6LC8sZm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+YzovZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5jOi9mb288L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOi88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+Yzo8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+LzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOi9mb288L2NvZGU+PGJyPjxjb2RlPmZvbzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOjwvY29kZT48YnI+PGNvZGU+YzovPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+Zm9vPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmM6Zm9vLzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6Zm9vLC48L2NvZGU+PGJyPjxjb2RlPmM6LGZvbywuPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+Yzpmb28vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5jOmZvby88L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOmZvby88L2NvZGU+PGJyPjxjb2RlPmZvby88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48Y29kZT5jOmZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5jOi9mb28vPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzosZm9vLC48L2NvZGU+PGJyPjxjb2RlPmM6LC8sZm9vLC48L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48Y29kZT5jOi9mb28vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5jOi9mb28vPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+YzovPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPi88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzovZm9vLzwvY29kZT48YnI+PGNvZGU+Zm9vLzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6L2ZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5jOi9mb28vYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzosZm9vLGJhcjwvY29kZT48YnI+PGNvZGU+YzosLyxmb28sYmFyPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+YzovZm9vL2JhcjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+YzovZm9vL2JhcjwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6LzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT4vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6L2Zvby9iYXI8L2NvZGU+PGJyPjxjb2RlPmZvby9iYXI8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48Y29kZT5jOi9mb288L2NvZGU+PC90ZD4KPHRkPjxjb2RlPmJhcjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5wcm46PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5wcm46PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5wcm46PC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5wcm46PC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+cHJuOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5wcm46PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPnBybjo8L2NvZGU+PGJyPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PC9zcGFuPjwvdGQ+Cjx0ZD48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250PjwvdGQ+Cjx0ZD48Y29kZT5wcm46PC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmM6XDwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XDwvY29kZT48YnI+PGNvZGU+YzosLzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6XDwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XDwvY29kZT48YnI+PGNvZGU+YzovPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6XDwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5cPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XDwvY29kZT48YnI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOlw8L2NvZGU+PGJyPjxjb2RlPlw8L2NvZGU+PC9zcGFuPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmM6Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+Yzpmb288L2NvZGU+PGJyPjxjb2RlPmM6LGZvbzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6Zm9vPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT5jOmZvbzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6Zm9vPC9jb2RlPjxicj48Y29kZT5mb288L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+Yzo8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+Yzpmb288L2NvZGU+PGJyPjxjb2RlPmZvbzwvY29kZT48L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+YzpcZm9vPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzpcZm9vPC9jb2RlPjxicj48Y29kZT5jOiwvLGZvbzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6XGZvbzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XGZvbzwvY29kZT48YnI+PGNvZGU+YzovZm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6XDwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5cPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XGZvbzwvY29kZT48YnI+PGNvZGU+Zm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6XDwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOlxmb288L2NvZGU+PGJyPjxjb2RlPmZvbzwvY29kZT48L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+Yzpmb29cPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+Yzpmb29cPC9jb2RlPjxicj48Y29kZT5jOixmb28sLjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6Zm9vXDwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6Zm9vXDwvY29kZT48YnI+PGNvZGU+Yzpmb28vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6Zm9vXDwvY29kZT48YnI+PGNvZGU+Zm9vXDwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOmZvbzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOmZvb1w8L2NvZGU+PGJyPjxjb2RlPi48L2NvZGU+PC9zcGFuPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPmM6XGZvb1w8L2NvZGU+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOlxmb29cPC9jb2RlPjxicj48Y29kZT5jOiwvLGZvbywuPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+YzpcZm9vXDwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XGZvb1w8L2NvZGU+PGJyPjxjb2RlPmM6L2Zvby88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+YzpcPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPlw8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzpcZm9vXDwvY29kZT48YnI+PGNvZGU+Zm9vXDwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Zm9udCBzaXplPSItMSI+PGk+ZW1wdHk8L2k+PC9mb250Pjxicj48Y29kZT5jOlxmb288L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzpcZm9vXDwvY29kZT48YnI+PGNvZGU+LjwvY29kZT48L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+YzpcZm9vLzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XGZvbywuPC9jb2RlPjxicj48Y29kZT5jOiwvLGZvbywuPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+YzpcZm9vLzwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6XGZvby88L2NvZGU+PGJyPjxjb2RlPmM6L2Zvby88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+YzpcPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPlw8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzpcZm9vLzwvY29kZT48YnI+PGNvZGU+Zm9vLzwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxjb2RlPmM6XGZvbzwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LjwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT5jOi9mb29cYmFyPC9jb2RlPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzosZm9vXGJhcjwvY29kZT48YnI+PGNvZGU+YzosLyxmb28sYmFyPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PGNvZGU+YzovZm9vXGJhcjwvY29kZT48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmM6L2Zvb1xiYXI8L2NvZGU+PGJyPjxjb2RlPmM6L2Zvby9iYXI8L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGZvbnQgc2l6ZT0iLTEiPjxpPmVtcHR5PC9pPjwvZm9udD48YnI+PGNvZGU+YzovPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPmM6PC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxmb250IHNpemU9Ii0xIj48aT5lbXB0eTwvaT48L2ZvbnQ+PGJyPjxjb2RlPi88L2NvZGU+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0NDRkZDQyI+PGNvZGU+YzovZm9vXGJhcjwvY29kZT48YnI+PGNvZGU+Zm9vXGJhcjwvY29kZT48L3NwYW4+PC90ZD4KPHRkPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NGRkNDIj48Y29kZT5jOjwvY29kZT48YnI+PGNvZGU+YzovZm9vPC9jb2RlPjwvc3Bhbj48L3RkPgo8dGQ+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNDQ0ZGQ0MiPjxjb2RlPmZvb1xiYXI8L2NvZGU+PGJyPjxjb2RlPmJhcjwvY29kZT48L3NwYW4+PC90ZD4KPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1IiB3aWR0aD0iMTA2NiI+CjwvdGFibGU+CjxoMj48YSBuYW1lPSJBY2tub3dsZWRnZW1lbnRzIj5BY2tub3dsZWRnZW1lbnRzPC9hPjwvaDI+CjxwPlRoaXMgRmlsZXN5c3RlbSBMaWJyYXJ5IGlzIGRlZGljYXRlZCB0byBteSB3aWZlLCBTb25kYSwgd2hvIHByb3ZpZGVkIHRoZSAKc3VwcG9ydCBuZWNlc3NhcnkgdG8gc2VlIGJvdGggYSB0cmlhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIHByb3Bvc2FsIGl0c2VsZiAKdGhyb3VnaCB0byBjb21wbGV0aW9uLiBTaGUgZ2F2ZSBtZSB0aGUgc3RyZW5ndGggdG8gY29udGludWUgYWZ0ZXIgYSBkaWZmaWN1bHQgCnllYXIgb2YgY2FuY2VyIHRyZWF0bWVudCBpbiB0aGUgbWlkZGxlIG9mIGl0IGFsbC48L3A+CjxwPk1hbnkgcGVvcGxlIGNvbnRyaWJ1dGVkIHRlY2huaWNhbCBjb21tZW50cywgaWRlYXMsIGFuZCBzdWdnZXN0aW9ucyB0byB0aGUgCkJvb3N0IEZpbGVzeXN0ZW0gTGlicmFyeS4gU2VlCjxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbS9kb2MvaW5kZXguaHRtI0Fja25vd2xlZGdlbWVudHMiPgpodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ZpbGVzeXN0ZW0vZG9jL2luZGV4Lmh0bSNBY2tub3dsZWRnZW1lbnRzPC9hPi48L3A+CjxwPkRpZXRtYXIgS3VlaGwgY29udHJpYnV0ZWQgdGhlIG9yaWdpbmFsIEJvb3N0IEZpbGVzeXN0ZW0gTGlicmFyeSBkaXJlY3RvcnlfaXRlcmF0b3IgZGVzaWduLiBQZXRlciBEaW1vdiwgV2FsdGVyIExhbmRyeSwgUm9iIFN0ZXdhcnQsIGFuZCBUaG9tYXMgCldpdHQgd2VyZSBwYXJ0aWN1bGFybHkgaGVscGZ1bCBpbiByZWZpbmluZyB0aGUgbGlicmFyeS48L3A+CjxwPlRoZSBjcmVhdGVfZGlyZWN0b3JpZXMsIGV4dGVuc2lvbiwgYmFzZW5hbWUsIGFuZCByZXBsYWNlX2V4dGVuc2lvbiBmdW5jdGlvbnMgCndlcmUgZGV2ZWxvcGVkIGJ5IFZsYWRpbWlyIFBydXMuPC9wPgo8cD5Ib3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIHJldmlld2VkIGEgZHJhZnQgb2YgdGhlIHZlcnNpb24gMiBwcm9wb3NhbCwgYW5kIAppZGVudGlmaWVkIGEgbnVtYmVyIG9mIG1pc3Rha2VzIG9yIHdlYWtuZXNzZXMsIHJlc3VsdGluZyBpbiBhIG1vcmUgcG9saXNoZWQgCmZpbmFsIGRvY3VtZW50LjwvcD4KPHA+UGV0ZXIgRGltb3Ygc3VnZ2VzdGVkIGEgc2luZ2xlIGNsYXNzIHBhdGgsIHdpdGggbWVtYmVyIHRlbXBsYXRlcyB0byBhZGFwdCB0byAKbXVsdGlwbGUgc3RyaW5nIHR5cGVzLiBIaXMgaWRlYSBiZWNhbWUgdGhlIGJhc2lzIGZvciB0aGUgdmVyc2lvbiAzIHBhdGggZGVzaWduLjwvcD4KPGgyPjxhIG5hbWU9IlJlZmVyZW5jZXMiPlJlZmVyZW5jZXM8L2E+PC9oMj4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSIxMDAlIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjE2JSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJJU09fUE9TSVgiPklTTy1QT1NJWDwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODQlIj5JU08vSUVDIDk5NDU6MjAwMywgSUVFRSZuYnNwO1N0ZCZuYnNwOzEwMDMuMS0yMDAxLCBhbmQgVGhlIE9wZW4gR3JvdXAgCiAgICBCYXNlIFNwZWNpZmljYXRpb25zLCBJc3N1ZSA2LiBBbHNvIGtub3duIGFzIFRoZSBTaW5nbGUgVW5peDxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+wq4gCiAgICBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDMuIEF2YWlsYWJsZSBmcm9tIGVhY2ggb2YgdGhlIG9yZ2FuaXphdGlvbnMgaW52b2x2ZWQgCiAgICBpbiBpdHMgY3JlYXRpb24uIEZvciBleGFtcGxlLCByZWFkIG9ubGluZSBvciBkb3dubG9hZCBmcm9tCiAgICA8YSBocmVmPSJodHRwOi8vd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vIj4KICAgIHd3dy51bml4Lm9yZy9zaW5nbGVfdW5peF9zcGVjaWZpY2F0aW9uLzwvYT4uPC9mb250PiBUaGUgSVNPIEpUQzEvU0MyMi9XRzE1IC0gCiAgICBQT1NJWCBob21lcGFnZSBpcyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvV0cxNS8iPgogICAgd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvV0cxNS88L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMTYlIiB2YWxpZ249InRvcCI+W0FicmFoYW1zXTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg0JSI+RGF2ZSBBYnJhaGFtcywgRXJyb3IgYW5kIEV4Y2VwdGlvbiBIYW5kbGluZywKICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvZXJyb3JfaGFuZGxpbmcuaHRtbCI+CiAgICB3d3cuYm9vc3Qub3JnL21vcmUvZXJyb3JfaGFuZGxpbmcuaHRtbDwvYT48L3RkPgogIDwvdHI+CjwvdGFibGU+Cjxocj4KPHA+qSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMsIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTA8L3A+CjxwPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gU2VlCjxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+PC9wPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIgJVkiIHN0YXJ0c3BhbiAtLT4wNSBPY3RvYmVyIDIwMTA8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBlbmRzcGFuIGktY2hlY2tzdW09IjMyMTIzIiAtLT48L3A+Cgo8L2JvZHk+Cgo8L2h0bWw+